Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: drk00 en 4 Julio 2011, 03:55 am



Título: Ayuda con un ejercicio
Publicado por: drk00 en 4 Julio 2011, 03:55 am
Hola nesesito que me den una idea de como se podria resolver este ejercicio
ya e intentado de varias formas pero no me sale y ahorita muy distraido
y no se me ocurrre una forma de resolverlo.

Bueno, el ejercicio dice que poniendo la medida del lado de un cuadrado lo dibuje(pero no es el de un cuadrado solido es ya lo resolvi, tiene que ser el
puro perimetro dibujado)
ejemplo:

Entrada 3

Salida

* * *
*    *
*    *
* * *

y como ya se que me van a pedir el codigo que tengo es este:

espero que sea legible
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int cont=1, cont2=1;
  8.    int numero=5;
  9.  
  10.    /*
  11.     cout<<"Cuanto mide el lado del cuadrado: ";
  12.     cin>>numero;*/
  13.  
  14.  
  15.    while(cont <= numero)
  16.    {
  17.  
  18.        while(cont2 <= numero)
  19.        {
  20.            cout <<"*";
  21.            ++cont2;
  22.        }
  23.        cont2=1;
  24.        while(cont2 <= numero)
  25.        {
  26.            cout<<"*";
  27.            while(cont2<=numero)
  28.            {
  29.                cout<<" ";
  30.                ++cont2;
  31.            }
  32.            cout<<"*";
  33.        }        
  34.        cout<<endl;
  35.        ++cont;
  36.    }
  37.    system("pause");
  38.    return 0;
  39. }
  40.  
La salida:
******     *
*       *
*       *
*       *
*       *
Presione una tecla para continuar . . .
esa es la salida ya mas o menos tiene forma
eso es todo Gracias.



Título: Re: Ayuda con un ejercicio
Publicado por: Oblivi0n en 4 Julio 2011, 04:32 am
bueno, por aburrimiento he echo el codigo y me funciona, se que está algo ilegible... pero bueno, espero que te sirva (siento no poder hacerlo en C++)

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int lado;
  6.    printf("Introduce el lado del cuadrado\n");
  7.    scanf("%d",&lado);
  8.  
  9.    for(int i = 1 ; i <= lado ; i++)
  10.    {
  11.            if(i == 1 || i == lado)
  12.            {
  13.                 for( int o = 0 ; o < lado ; o++ )
  14.                 {
  15.                         printf("* ");
  16.                 }
  17.                 printf("\n");
  18.            }
  19.            else
  20.            {
  21.                printf("* ");
  22.                for( int n = 0;n < (lado-2); n++ )
  23.                {
  24.                        printf("  ");
  25.                }
  26.                printf("*\n");
  27.            }
  28.    }
  29.    scanf("%d",&lado);
  30.    return 0;
  31. }


Título: Re: Ayuda con un ejercicio
Publicado por: satu en 4 Julio 2011, 11:55 am
Hola

En C++ partiendo del código de Oblivi0n

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.    int lado;
  9.    cout<<"Introduce el lado del cuadrado: ";
  10.    cin>>lado;
  11.    cout<<endl;
  12.  
  13.    for(int i = 0 ; i < lado ; i++)
  14.        {
  15.        if(i == 0 || i == lado-1)
  16.            {
  17.            for( int o = 0 ; o < lado ; o++ )
  18.                cout<<"* ";
  19.            cout<<endl;
  20.            }
  21.        else
  22.            {
  23.            cout<<"* ";
  24.            for( int n = 0;n < (lado-2); n++ )
  25.                cout<<"  ";
  26.            cout<<"*\n";
  27.            }
  28.        }
  29.  
  30.    while(cin.get()!='\n'); //Limpia el buffer de entrada
  31.  
  32.    cout<<endl<<endl<<"Pulsa Enter para salir";
  33.    cin.get(); //Pausa el programa hasta que presiones Enter
  34.  
  35.    return EXIT_SUCCESS;
  36. }
  37.  

Saludos


Título: Re: Ayuda con un ejercicio
Publicado por: Valkyr en 4 Julio 2011, 14:10 pm
Ya hay respuestas con soluciones pero, me llamó la atención el problema y lo hice yo también xD

Código
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int main(void){
  5. int lado, cont;
  6. cin>>lado;
  7. cont = 0;
  8. if(lado>0){
  9. cout<<"*";
  10. for(int i=1;i<lado;i++){
  11. cout<<" *";
  12. cont+=2;
  13. }
  14. cout<<endl;
  15. cont--;
  16.  
  17. for(int i=0;i<lado-1;i++){
  18. cout<<"*";
  19. for(int j=0;j<cont;j++)
  20. cout<<" ";
  21. cout<<"*"<<endl;
  22. }
  23. cout<<"*";
  24. for(int i=1;i<lado;i++)
  25. cout<<" *";
  26. cout<<endl;
  27. }
  28. }

Te lo dejo porque me parece algo más claro por tener menos if's.

Espero sirva. Saludos.


Título: Re: Ayuda con un ejercicio
Publicado por: drk00 en 5 Julio 2011, 03:54 am
Estan bien las soluciones pero buscaba hacerlo con while, pero de todos modos muchas gracias porque ya tengo la idea de como hacerlo y era lo que buscaba

Gracias.

es algo largo y probablemente se les haga una solucion tonta pero  como boy empezando creo que esta bien, al menos para mi

Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int contador=1,lado=5, contador2=1;
  8.  
  9.    cout<<"cuanto mide el lado del cuadrado?(Maximo 20): ";
  10.    cin>>lado;
  11.  
  12.    if(lado > 0)
  13.    {
  14.  
  15.        while(contador <= lado)
  16.        {
  17.            while(contador2 <= lado)
  18.            {
  19.                cout<<"* ";
  20.                ++contador2;
  21.            }
  22.            ++contador;
  23.        }
  24.  
  25.        contador = 2;
  26.        contador2 = 2;
  27.  
  28.        while(contador <= lado)
  29.        {
  30.            contador2=0;
  31.            cout<<endl;
  32.            cout<<"* ";
  33.            while(contador2 != lado)
  34.            {
  35.                cout<<" ";
  36.                ++contador2;
  37.            }
  38.            ++contador;
  39.            cout<<" *";
  40.        }
  41.        cout<<endl;
  42.  
  43.        contador=1;
  44.        contador2=1;
  45.  
  46.        while(contador <= lado)
  47.        {
  48.            while(contador2 <= lado)
  49.            {
  50.                cout<<"* ";
  51.                ++contador2;
  52.            }
  53.            ++contador;
  54.        }
  55.  
  56.  
  57.  
  58.  
  59.    }
  60.    else
  61.    {
  62.        cout<<"la medida del lado no puede ser 0";
  63.        cout<<endl;
  64.        return main();
  65.    }
  66.    return 0;
  67.  
  68.  
  69. }
  70.