Imprimir un patron de asteriscos

Iniciado por dmacias, 2 Febrero 2014, 17:19 PM

0 Miembros y 1 Visitante están viendo este tema.

dmacias

Hola, buenas a todos de nuevo

Estoy atascado en un ejercicio del libro que estoy estudiando y algo se me tiene que escapar porque ya probé mil cosas y no doy con la tecla, os ongo el enunciado.



Esto es lo que tengo hecho, y no le veo el fallo de porque solo me saca una vez cada linea



#include <stdio.h>

int main()
{
int fila1 = 1;
int fila2 = 1;
int contador = 1;

while (contador <= 8){
if (contador/2 != 0){
while (fila1 <= 8){
printf("* ");
fila1 ++;
}
printf("\n");
contador ++;
}
if (contador/2 == 0){
printf(" ");
while (fila2 <= 8){
printf("* ");
fila2 ++;
}
printf("\n");
contador ++;
}
}
return 0;
}


Y esto es lo que me tira este codigo



Pues eso, si podeis orientarme haber donde fallo, porque no lo veo  :rolleyes:

Un saludo

leosansan

#1
Te falta reiniciar las variables fila1 y fila2 cada vez que invocas al while del contador.

Pero una forma, creo que más simple, y que produce la salida deseada:


Citar
* * * * * * * *
*  *  *  *  *  *  *  *
* * * * * * * *
*  *  *  *  *  *  *  *
* * * * * * * *
*  *  *  *  *  *  *  *
* * * * * * * *
*  *  *  *  *  *  *  *

podría ser:

Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
int fila1 = 1;
int fila2 = 1;
int contador = 1;

for(contador=1;contador<=4;contador++) {
fila1=fila2=1;
while (fila1 <= 8){
printf("* ");

fila1++;
}
printf("\n");
while (fila2 <= 8){
printf(" ");
printf("* ");

fila2++;
}
printf("\n");

}
return 0;
}


Claro que a lo mejor sólo puedes usar while. En este caso valdría:

Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
int fila1 = 1;
int fila2 = 1;
int contador = 1;

while (contador<=4) {
fila1=fila2=1;
while (fila1 <= 8){
printf("* ");

fila1++;
}
printf("\n");
while (fila2 <= 8){
printf(" ");
printf("* ");

fila2++;
}
printf("\n");
     contador++;
}
return 0;
}




¡¡¡¡ Saluditos! ..... !!!!





dmacias

Si se me olvido comentarlo, solo puedo usar while e if que he lo que he estudiado asta ahora.

Vaya, hace algunos ejercicio tuve que hacer eso mismo y ahora se me paso  :-[  :-[

voy a terminar este con lo que me has dicho, estudio lo que me pusiste y miro las diferencias ;)

Un saludo

ivancea96

Código (cpp) [Seleccionar]
}
if (contador/2 == 0){

Pusiste eso. Elige 1: O incrementas el contador despues de los 2 "if", o pones ELSE-IF.

dmacias

#4
Bueno, ya esta solucionado, habia que tocarle un par de cosas mas  :laugh:

Lo dejo por si a alguien mas le pudiera hacer falta



#include <stdio.h>

int main()
{
int fila1 = 1;
int fila2 = 1;
int contador = 0;

while (contador <= 8){
fila1=fila2=1;
if (contador%2 == 0){
while (fila1 <= 8){
printf("* ");
fila1 ++;
}
printf("\n");
contador ++;
}
if (contador%2 != 0){
printf(" ");
while (fila2 <= 8){
printf("* ");
fila2 ++;
}
printf("\n");
contador ++;
}
}
return 0;
}


Aqui la salida



* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *



leosansan ahí te corrijo una pequeño fallo que tienes, pero igualmente muchas gracias ya que lo hice volando en cuanto me comentaste ;)

Cita de: leosansan en  2 Febrero 2014, 17:41 PM
Te falta reiniciar las variables fila1 y fila2 cada vez que invocas al while del contador.

Pero una forma, creo que más simple, y que produce la salida deseada:


podría ser:

Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
int fila1 = 1;
int fila2 = 1;
int contador = 1;

for(contador=1;contador<=4;contador++) {
fila1=fila2=1;
while (fila1 <= 8){
printf("* ");

fila1++;
}
printf("\n");
while (fila2 <= 8){
printf(" ");
printf("* ");

fila2++;
}
printf("\n");

}
return 0;
}


Claro que a lo mejor sólo puedes usar while. En este caso valdría:

Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
int fila1 = 1;
int fila2 = 1;
int contador = 1;

while (contador<=4) {
fila1=fila2=1;
while (fila1 <= 8){
printf("* ");

fila1++;
}
printf("\n");
while (fila2 <= 8){
printf(" "); <---/*Esto no deberia de ir aqui, por eso no te cuadra las lineas*/
printf("* ");     /*no se donde, pero aqui no  ;) */

fila2++;
}
printf("\n");
     contador++;
}
return 0;
}




¡¡¡¡ Saluditos! ..... !!!!






Un saludooo

dmacias

Cita de: ivancea96 en  2 Febrero 2014, 18:30 PM
Código (cpp) [Seleccionar]
}
if (contador/2 == 0){

Pusiste eso. Elige 1: O incrementas el contador despues de los 2 "if", o pones ELSE-IF.

Es que estaba mal, deberia haber sido


            if (contador%2 ==0){


Pero ya me percate en cuanto pude hecharlo a andar y ver el resultado

Gracias a los dos