Ayuda con un ejercicio

Iniciado por drk00, 4 Julio 2011, 03:55 AM

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

drk00

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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
    int cont=1, cont2=1;
    int numero=5;
   
    /*
    cout<<"Cuanto mide el lado del cuadrado: ";
    cin>>numero;*/
   
   
    while(cont <= numero)
    {
       
        while(cont2 <= numero)
        {
            cout <<"*";
            ++cont2;
        }
        cont2=1;
        while(cont2 <= numero)
        {
            cout<<"*";
            while(cont2<=numero)
            {
                cout<<" ";
                ++cont2;
            }
            cout<<"*";
        }       
        cout<<endl;
        ++cont;
    }
    system("pause");
    return 0;
}

La salida:
******     *
*       *
*       *
*       *
*       *
Presione una tecla para continuar . . .
esa es la salida ya mas o menos tiene forma
eso es todo Gracias.



Oblivi0n

#1
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++)


#include <stdio.h>

int main()
{
   int lado;
   printf("Introduce el lado del cuadrado\n");
   scanf("%d",&lado);
   
   for(int i = 1 ; i <= lado ; i++)
   {
           if(i == 1 || i == lado)
           {
                for( int o = 0 ; o < lado ; o++ )
                {
                        printf("* ");
                }
                printf("\n");
           }
           else
           {
               printf("* ");
               for( int n = 0;n < (lado-2); n++ )
               {
                       printf("  ");
               }
               printf("*\n");
           }
   }
   scanf("%d",&lado);
   return 0;
}

satu

Hola

En C++ partiendo del código de Oblivi0n

Código (cpp) [Seleccionar]

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int lado;
    cout<<"Introduce el lado del cuadrado: ";
    cin>>lado;
    cout<<endl;

    for(int i = 0 ; i < lado ; i++)
        {
        if(i == 0 || i == lado-1)
            {
            for( int o = 0 ; o < lado ; o++ )
                cout<<"* ";
            cout<<endl;
            }
        else
            {
            cout<<"* ";
            for( int n = 0;n < (lado-2); n++ )
                cout<<"  ";
            cout<<"*\n";
            }
        }

    while(cin.get()!='\n'); //Limpia el buffer de entrada

    cout<<endl<<endl<<"Pulsa Enter para salir";
    cin.get(); //Pausa el programa hasta que presiones Enter

    return EXIT_SUCCESS;
}


Saludos
Breakbeat como forma de vida

Valkyr

Ya hay respuestas con soluciones pero, me llamó la atención el problema y lo hice yo también xD

Código (cpp) [Seleccionar]

#include<iostream>
using namespace std;

int main(void){
int lado, cont;
cin>>lado;
cont = 0;
if(lado>0){
cout<<"*";
for(int i=1;i<lado;i++){
cout<<" *";
cont+=2;
}
cout<<endl;
cont--;

for(int i=0;i<lado-1;i++){
cout<<"*";
for(int j=0;j<cont;j++)
cout<<" ";
cout<<"*"<<endl;
}
cout<<"*";
for(int i=1;i<lado;i++)
cout<<" *";
cout<<endl;
}
}


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

Espero sirva. Saludos.

drk00

#4
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 (cpp) [Seleccionar]
#include<iostream>

using namespace std;

int main()
{
   int contador=1,lado=5, contador2=1;

   cout<<"cuanto mide el lado del cuadrado?(Maximo 20): ";
   cin>>lado;

   if(lado > 0)
   {

       while(contador <= lado)
       {
           while(contador2 <= lado)
           {
               cout<<"* ";
               ++contador2;
           }
           ++contador;
       }

       contador = 2;
       contador2 = 2;

       while(contador <= lado)
       {
           contador2=0;
           cout<<endl;
           cout<<"* ";
           while(contador2 != lado)
           {
               cout<<" ";
               ++contador2;
           }
           ++contador;
           cout<<" *";
       }
       cout<<endl;

       contador=1;
       contador2=1;

       while(contador <= lado)
       {
           while(contador2 <= lado)
           {
               cout<<"* ";
               ++contador2;
           }
           ++contador;
       }




   }
   else
   {
       cout<<"la medida del lado no puede ser 0";
       cout<<endl;
       return main();
   }
   return 0;


}