Duda en programación C:

Iniciado por Error 404:, 6 Septiembre 2014, 11:55 AM

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

Error 404:

Hola a todos de nuevo, veréis, me he atascado en un programita de C, es un ejercicio de un manual que estoy haciendo. El enunciado dice así:

1)Escriba un programa que imprima los patrones siguientes de manera separada, uno debajo del otro. Utilice ciclos
for para generar los patrones. Todos los asteriscos (*) deben imprimirse mediante una sola instrucción printf
de la forma printf("*"); (esto provoca que los asteriscos se impriman uno al lado del otro). Pista: Los dos últimos
patrones requieren que cada línea comience con el número apropiado de espacios en blanco.
Los dibujos están en el código en forma de comentario, hay 4 aunque solo aparecen 3 pues es en el que tengo la duda, y una vez sepa el 3, el 4 yo creo que podré sacarlo.
Dejo también los dos primeros, aunque esos si me han salido sin problema, aunque si veis algo que podría optimizarse un poco o cualquier observación, siempre se agradece  :rolleyes:
Ahí va:



#include<stdio.h>
int main(){
int i,j=10;
int espacios;



/* A)
*
**
***
****
*****
******
*******
********
*********
*/
for(i=1;i<=10;i++){
for(j=1;j<=i;j++){
printf("*");
    }
printf("\n");
}
printf("\n\n");


/* B)
**********
*********
********
*******
******
*****
****
***
**
*
*/
   for(i=1;i<=10;i++){
for(j=10;j>=i;j--){
printf("*");
    }
    printf("\n");
}
printf("\n\n");


/* C)
**********
*********
  ********
   *******
    ******
     *****
      ****
       ***
        **
         *
*/
   for(i=1;i<=10;i++){
      for(espacios=1;espacios<=10-j;espacios++)
     printf(" ");
      for(j=10;j>=i;j--){
     printf("*");
  }
      printf("\n");
   }   

return 0;
}


La figura C) es la que me falla, me sale una representación bastante distinta, es algo así:

**********
                *********
               ********
              *******
            *******
          *******
        *****
......
y así
Gracias por las ayudas de antemano.
Si se puede imaginar, se puede programar.

ivancea96

Ahí j empieza siendo como terminó en el patrón B. Inicializa j. Luego, sis igue mal, vuelve a decir por aquí.

Blaster

#2
Cita de: superkorlas en  6 Septiembre 2014, 11:55 AM
La figura C) es la que me falla, me sale una representación bastante distinta, es algo así:

Debería quedar mas o menos así:

Código (cpp) [Seleccionar]
for(i = 1; i <= 10; i++)
{  
 for(j = 1; j < i; j++) printf(" ");
    for(j = 10; j >= i; j--) printf("*");
 printf("\n");
}  


Saludos

rir3760

Cita de: superkorlas en  6 Septiembre 2014, 11:55 AMLa figura C) es la que me falla, me sale una representación bastante distinta, es algo así:

**********
                *********
               ********
              *******
            *******
          *******
        *****
......
Cuando publiques un dibujo en texto por favor utiliza etiquetas [ code ] para preservar el espaciado. ¿No sera algo así?
          **********
         *********
        ********
       *******
      ******
     *****
    ****
   ***
  **
*

En este caso se imprimen diez lineas cada una con el mismo numero de espacios y asteriscos, empezando con diez y terminando con uno. Para hacerlo solo tienes que aplicar lo aprendido en los ejercicios anteriores.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Error 404:

Hola, gracias por la ayuda. rir3760 el dibujo era como lo había puesto, era raro pero si, era como puse al principio.
ivancea96 ya había pensado en eso y lo probé, pero al ver que no variaba en nada el resultado decidí quitarlo, aunque gracias por la sugerencia.
Blaster gracias por tu ayuda, lo he hecho y a funcionado, y he entendido como funciona asi que muchas gracias  ;D.
Gracias a todos por vuestra ayuda, de veras, gracias a este foro he podido avanzar bastante, mucho más de lo que lo hubiera hecho si estuviera totalmente solo sin ninguna ayuda, ya que este foro es mi única ayuda, además de los manuales  :rolleyes:
Si se puede imaginar, se puede programar.

Hacknel

Codigo Funcional


//Creacion: 08/10/2019 22:10 AM
//Modificacion: 12/10/2019 16:22 PM
/*
Escriba un programa que imprima los patrones siguientes de manera separada, uno debajo del otro. Utilice ciclosforpara generar los patrones.
Todos los asteriscos (*) deben imprimirse mediante una sola instrucción printfde la forma printf("*"); (esto provoca que los asteriscos se impriman uno al lado del otro).
Pista:Los dos úl-timos patrones requieren que cada línea comience con el número apropiado de espacios en blanco.
*/


#include <stdio.h>


int main()
{
//se definen variables
int i,j,k;

//primera piramide
//para columnas
for(i=1;i<=10;i++)
{
//para filas
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}

printf("\n");

//segunda piramide
//para columnas
for(i=1;i<=10;i++)
{
//para filas
for(j=10;j>=i;j--)
{
printf("*");
}
printf("\n");
}

printf("\n");

//tercera figura
//para columnas
for(i=1;i<=10;i++)
{
//para espacios
for(j=1;j<=i;j++)
{
printf(" ");
}
//para filas
for(k=10;k>=i;k--)
{
printf("*");
}
printf("\n");
}
   
    printf("\n");

//cuarta figura
//para columnas
for(i=1;i<=10;i++)
{
//para espacios
for(j=10;j>=i;j--)
{
printf(" ");
  }
  //para filas
      for(k=1;k<=i;k++)
      {
      printf("*");
}
      printf("\n");
    }   


return 0;
}