Foros del Web » Programación » C/C++ »

Cómo modificar éste programa que dibuja cuadrados con asteriscos (while / if)

Estas en el tema de Cómo modificar éste programa que dibuja cuadrados con asteriscos (while / if) en el foro de C/C++ en Foros del Web. Bueno... primero hice un programa que dependiendo del numero que le indique el usuario, "dibuja" un cuadrado con asteriscos... el código fuente es este: Código: ...
  #1 (permalink)  
Antiguo 17/05/2011, 23:02
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 3 años, 5 meses
Puntos: 8
Exclamación Cómo modificar éste programa que dibuja cuadrados con asteriscos (while / if)

Bueno... primero hice un programa que dependiendo del numero que le indique el usuario, "dibuja" un cuadrado con asteriscos... el código fuente es este:

Código:
#include <stdio.h>

int main(){
    
    int lado;
    int contador = 1;
    int contador2 = 1;
    
    printf("Ingrese la medida de los lados del cuadrado: ");
    scanf("%d", &lado);
    printf(" \n");
    
    while (contador2 <= lado){
          contador = 1;
          
          while (contador <= lado){
                printf("%s ", "*");
                contador++;
          }
          printf(" \n");
          contador2++;
    }
    printf(" \n");
    system("PAUSE");
}
Osea... si le indicamos 5, en la pantalla aparecerá:

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

Ahora... un ejercicio me pide que modifique el programa para que solo muestre el perímetro del cuadrado, osea así:

* * * * *
*.........*
*.........*
*.........*
* * * * *

(Sin los puntitos)


Y la verdad no tengo idea de cómo hacerlo!... alguien me puede ayudar porfavor? Explicandome un poco... y mostrandome el código fuente modificado ¿?

Muchas Gracias de antemano!
  #2 (permalink)  
Antiguo 18/05/2011, 01:21
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 3 años, 8 meses
Puntos: 89
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

¿Qué es lo que quieres pintar? Los extremos del cuadrado y sólo los extremos
¿Cómo sabes si estas en el extremo? Bueno, usas contadores para recorrer el cuadrado, ¿no?

Con esas dos pistas deberías ser más que capaz de solucionarlo por ti mismo
  #3 (permalink)  
Antiguo 18/05/2011, 01:58
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 3 años, 5 meses
Puntos: 8
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Contadores? Me podrías explicar bien que es, porfavor?

Apenas estoy en el capítulo 3 del libro "C/C++ y Java: Cómo programar" de Deitel & Deitel... no se si ya haya visto "contadores", pero no me suena! :S

Muchas gracias!
  #4 (permalink)  
Antiguo 18/05/2011, 02:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 3 años, 5 meses
Puntos: 0
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Las variables a las que tu llamas "contador" y "contador2" son... contadores.

No es muy dificil lo que tienes que hacer. Debes saber que tanto la primera fila como la última tienen que ir enteras a asteriscos; es decir, para contador2 = 1 y contador2 = lado.

Y para el resto de lineas que falten, tienes que saber que la primera posicion y la ultima tienen que llevar asterisco; es decir, para contador = 1 y contador = lado.

El fuente quedaría tal que así:

#include <stdio.h>

int main(){

int lado;
int contador = 1;
int contador2 = 1;

printf("Ingrese la medida de los lados del cuadrado: ");
scanf("%d", &lado);
printf(" \n");

while (contador2 <= lado){
contador = 1;

if (contador2 == 1 || contador2 == lado)
{
while (contador <= lado){
printf("%s ", "*");
contador++;
};
}
else
{
while (contador <= lado){

if (contador == 1 || contador == lado)
{
printf("%s ", "*");
contador++;
}
else
{
printf("%s ", " ");
contador++;
}
};
};
printf(" \n");
contador2++;
};
printf(" \n");
system("PAUSE");
}


Un saludo!
  #5 (permalink)  
Antiguo 18/05/2011, 04:45
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 3 años, 8 meses
Puntos: 89
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Cita:
Iniciado por reethok Ver Mensaje
Contadores? Me podrías explicar bien que es, porfavor?

Apenas estoy en el capítulo 3 del libro "C/C++ y Java: Cómo programar" de Deitel & Deitel... no se si ya haya visto "contadores", pero no me suena! :S

Muchas gracias!
Si no has visto contadores y tienes en tu código variables que se llaman contador, deberías esforzarte por entender el código que tienes xD

El compañero ya te ha dado la solución
  #6 (permalink)  
Antiguo 18/05/2011, 07:58
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 3 años, 5 meses
Puntos: 8
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Ya... pero quería resolver el problema sin || ya que es algo que en el libro aun no he visto... :S
  #7 (permalink)  
Antiguo 18/05/2011, 15:32
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 3 años, 5 meses
Puntos: 8
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Ohh... muchas gracias a todos... YA PUDE :D, utilizé varios if's (ya que eso me pedía el libro)

El programa quedó así:

Código:
#include <stdio.h>

int main(){
    
    int lado;
    int contador = 1;
    int contador2 = 1;
    
    printf("Ingrese la medida de los lados del cuadrado: ");
    scanf("%d", &lado);
    printf(" \n");
    
    while (contador2 < lado+1){
          contador = 1;
          
          while (contador < lado+1){
                if (contador2 == 1)
                   printf("* ");
                if (contador2 != 1)
                   if (contador2 != lado){
                      if (contador == 1)
                         printf("* ");
                      else
                          if (contador < lado)
                             printf("  ");
                          else
                              printf("* ");
                              }
                   else 
                        printf("* ");
                          
                contador++;
                
          }
          printf(" \n");
          contador2++;
    }
    printf(" \n");
    system("PAUSE");
}
Gracias!

Saludos :)
  #8 (permalink)  
Antiguo 19/05/2011, 02:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 3 años, 5 meses
Puntos: 0
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Estupendo. Si que te aconsejo que inicialices los contadores a 0; acostúmbrate a interpretar la primera posicion como pocición 0. Es más correcto ahora y te facilitará la vida más adelante.

De esta forma no tendrías que poner ese "lado+1" que tan feo queda, y en los if pondrías, por ejemplo: contador == 0 en vez de contador == 1.

Es solo un consejo, pero no te lo van a dar por malo tal cual lo tienes.

Un saludo!
  #9 (permalink)  
Antiguo 19/05/2011, 10:52
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.848
Antigüedad: 4 años, 6 meses
Puntos: 227
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

El lado+1 se puede resolver usando el <= en vez de solo usar el <.

El tema de empezar en 1 o en 0 creo que pasa mas por el uso de los arrays mas que en esto de los contadores. Pero ese es un tema que no se si lo tocaste todavia.
  #10 (permalink)  
Antiguo 09/03/2012, 23:11
Avatar de archeraion  
Fecha de Ingreso: marzo-2012
Ubicación: Veracruz Llave, Veracruz-Llave, Mexico, Mexico
Mensajes: 1
Antigüedad: 2 años, 7 meses
Puntos: 0
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

sale carnal no se si en java te sirva pero así se me hace mas simple y entendible



Código:
//este imprime el mugre cuadro sin relleno

import java.util.*;

public class CuadroVacio{

public static void main(String args[]){

int n,i,j;

Scanner obj1=new Scanner(System.in);

System.out.print("introduce la medida de la figura: ");
n=obj1.nextInt();

for(i=1;i<=n;i++){
   System.out.println();

    for(j=1;j<=n;j++){

       if(i==1 || j==1){
          System.out.print("*");
          }
     else{
          if(i==n || j==n)               
          System.out.print("*");
        else
          System.out.print(" ");
    }        

   }

  }

 }

}
y este imprime el cuadro relleno

Código:
import java.util.*;

public class CuadroRelleno{

public static void main(String args[]){

int n,i,j;

Scanner obj1=new Scanner(System.in);

System.out.print("introduce la medida de la figura: ");
n=obj1.nextInt();

for(i=1;i<=n;i++){
   System.out.println();

    for(j=1;j<=n;j++){
    System.out.print("*");
       
   }

  }

 }

}
ps ahí esta tu respuesta 20 años después XD

Última edición por archeraion; 10/03/2012 a las 03:46
  #11 (permalink)  
Antiguo 13/07/2013, 02:39
 
Fecha de Ingreso: julio-2013
Ubicación: Murcia
Mensajes: 1
Antigüedad: 1 año, 3 meses
Puntos: 0
Respuesta: Cómo modificar éste programa que dibuja cuadrados con asteriscos (while /

Agrego otro código por si le sirve a alguien.


Código:
#include <stdio.h>

int main()
{

    int num, a, b;

    printf("Inserte tamano cuadrado:");
    scanf("%d",&num);

    for(b=1; b <= num; b++)
    {
        for(a=1; a<= num; a++)
        {
            if(b==1 || b== num)
            {
                printf("*");
            }else if(a==1 || a== num){
                printf("*");
            }else{

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






}

Etiquetas: cuadrados, modificar, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:42.
SEO by vBSEO 3.3.2