Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: dmacias en 2 Febrero 2014, 17:19 PM

Título: Imprimir un patron de asteriscos
Publicado por: dmacias en 2 Febrero 2014, 17:19 PM
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.

(http://www.dmaciasblog.com/wp-content/uploads/2014/02/captura-libro.png)

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

(http://www.dmaciasblog.com/wp-content/uploads/2014/02/captura-libro2.png)

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

Un saludo
Título: Re: Imprimir un patron de asteriscos
Publicado por: 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:


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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Imprimir un patron de asteriscos
Publicado por: dmacias en 2 Febrero 2014, 18:12 PM
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
Título: Re: Imprimir un patron de asteriscos
Publicado por: 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.
Título: Re: Imprimir un patron de asteriscos
Publicado por: dmacias en 2 Febrero 2014, 18:31 PM
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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)




Un saludooo
Título: Re: Imprimir un patron de asteriscos
Publicado por: dmacias en 2 Febrero 2014, 18:35 PM
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