[Solucionado] Problema en codigo C++, no se ejecuta el else

Iniciado por Mario Olivera, 25 Julio 2014, 23:09 PM

0 Miembros y 3 Visitantes están viendo este tema.

Mario Olivera

Hola gente, estoy teniendo un problema con un código, el tema es que tengo que dibujar
esto en el programa:


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


Y nosé por qué no se ejecuta el else  para la línea que tiene un espacio (osea la 2da, 4ta,6ta,8va)

Y quiero hacerlo con while

Código (cpp) [Seleccionar]
#include <iostream>
using std::cout;
using std::endl;
using std::cin;

class Tablero
{
public:
void imprime()
{
linea=0;
while (linea != 8) // itera 8 veces.
{
if (linea == 0 || linea ==2 || linea== 4 || linea ==6)
{
int dibujaLinea = 0;
while (dibujaLinea > 9)
{
cout <<"*";
++dibujaLinea;
}

}
else
{
cout <<" ";
int dibujaLinea= 0;

while (dibujaLinea < 8) // itera 7 veces
{
cout <<"*";
++dibujaLinea;
}

}
cout <<endl;
++linea;
   }
}

private:
int linea;
};


int main()
{
Tablero Tablero1;
Tablero1.imprime();
cin.get();
return 0;
}


Desde ya agradezco cualquier ayuda   :)

Blaster

La condición del segundo while debe quedar así:

Código (cpp) [Seleccionar]
while (dibujaLinea < 9) // Aqui el <

Y el tercero así:

Código (cpp) [Seleccionar]
while (dibujaLinea < 9) // Aqui el 9

Saludos

Mario Olivera

#2
Cita de: Blaster en 25 Julio 2014, 23:34 PM
La condición del segundo while debe quedar así:

Código (cpp) [Seleccionar]
while (dibujaLinea < 9) // Aqui el <

Y el tercero así:

Código (cpp) [Seleccionar]
while (dibujaLinea < 9) // Aqui el 9

Saludos

Muchas gracias por la ayuda Blaster!  ;-)

ivancea96

Perdona una cosa 718208. El caso es que en todos los códigos que te veo publicar, usas clases, cuando lo más acertados ería una función. En caso de que solo muestres una parte del código, pues vale. Pero si ese es todo el código, recuerda que tus clases consumen memoria, y al final acaban haciendo lo mismo que una función.

eferion

Cita de: ivancea96 en 26 Julio 2014, 00:02 AM
Perdona una cosa 718208. El caso es que en todos los códigos que te veo publicar, usas clases, cuando lo más acertados ería una función. En caso de que solo muestres una parte del código, pues vale. Pero si ese es todo el código, recuerda que tus clases consumen memoria, y al final acaban haciendo lo mismo que una función.

Consumen memoria... esa clase consume el equivalente a un int... 4 bytes ... tampoco hay que dramatizar jejejeje

Yo es que soy partidario de poner todo en clases... permite organizar el código mejor... lo que sucede es que funciones como estas pueden perfectamente ser estáticas, no hace falta crear una instancia de la clase para manejarlas.

ivancea96

Yo siempre hago clases para todo. Pero no una clase por función xD

leosansan

#6
Cita de: 718208 en 25 Julio 2014, 23:09 PM
Hola gente, estoy teniendo un problema con un código, el tema es que tengo que dibujar
esto en el programa:


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

...................................................
Desde ya agradezco cualquier ayuda   :)

Creo que "desparramas" el código, en buena parte por el uso de los while.

Un poco más "cortito":

Código (cpp) [Seleccionar]
public:
    void imprime() {
      for ( int i = 0 ; i < linea ; i++ ){
        for ( int j = 0 ; j < linea ; j++ )
        ( i % 2 != 0 && j == 0 ) ? cout << ' ' : cout << '*' ;
      cout << endl ;
    }
  }


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





Blaster

Con una pequeña modificación lo dibujaríamos tal como muestra el ejem:

Código (cpp) [Seleccionar]
void imprime()
{
    for ( int i = 0, linea = 8; i < linea ; i++ )
    {
         for ( int j = 0, linea = 8; j < linea ; j++ )
             ( i % 2 != 0 && j == 0 ) ? ++linea, cout << ' ' : cout << '*' ;
         cout << endl ;
     }
}

Saludos

leosansan

#8
Cita de: Blaster en 26 Julio 2014, 17:08 PM
Con una pequeña modificación lo dibujaríamos tal como muestra el ejem:
.............................

Salida a tu código:

Código (cpp) [Seleccionar]
********
********
*********
*********
**********
**********
***********
***********
************
************
*************
*************
**************
**************
***************


Y de paso rectifico el mío:

Código (cpp) [Seleccionar]
void imprime() {
     for ( int i = 0 ; i < linea ; i++ ){
       for ( int j = 0 ; j < linea ; j++ )
       ( i % 2 != 0 && j == 0 ) ? cout << " *" : cout << '*' ;
     cout << endl ;
   }


Con la salida deseada:

Código (cpp) [Seleccionar]
********
********
********
********
********
********
********
********


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



Blaster

#9
Cita de: leosansan en 26 Julio 2014, 17:34 PM
Salida a tu código:
....................

Es imposible que obtengas esa salida con el código que postee

Cita de: leosansan en 26 Julio 2014, 17:34 PM
Y de paso rectifico el mío:

Con la modificación que le hiciste al actual obvio obtendrás la salida esperada, antes lo dibujaba de esta forma:

Salida anterior:

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