PDA

Visualizza la versione completa : [C] Problemi piramide


Ov3rLo4d
24-05-2008, 17:18
Ciao a tutti... non da malto che programmo... mi stato dato un esercizio da fare ma non mi viene in mente cosa usare per risolverlo... Questo il testo del problema:


/* Scrivere un programma che disegni sullo schermo un triangolo
* di asterischi data l'altezza dall'utente.
* L'altezza sara' minore di 20
*
* Es.
*
* *
* ***
* *****
* *******
* *********
*
* */


per ora io ho scritto questo (nulla di molto utile):

#include <stdio.h>
#include <stdlib.h>

#define max 20
int alt;

main()
{
printf("Inserisci l'altezza: ");
scanf("%d",&alt);
if(alt<max)
{
for(
}
}

Ov3rLo4d
24-05-2008, 17:20
Qui venuta male la figura con gli asterischi ma in teoria dovrebbe venire una piramide... copiando non venuta giusta

MItaly
24-05-2008, 17:37
#include <stdio.h>
#define MAXHEIGHT 20
int main()
{
int height,i,j;
fputs("Inserisci l'altezza del triangolo (1-20): ",stdout);
if(scanf("%d",&height)==0 || height>MAXHEIGHT || height<=0)
{
puts("Valore non valido");
return 1;
}
for(i=0;i<height;i++)
{
for(j=0;j<(height-i);j++)
putchar(' ');
for(j=0;j<(1+i*2);j++)
putchar('*');
putchar('\n');
}
return 0;
}

mondobimbi
24-05-2008, 17:41
sforzati un po' di pi.
hint: fai il ciclo da 1 fino al numero di asterischi della base e stampa per ogni ciclo tanti asterischi quanto il valore della variabile del ciclo.
ciao
sergio

MItaly
24-05-2008, 18:06
Si pu fare in tanti modi, basta tenere presenti le seguenti relazioni che risultano dall'esame della figura:


s=spazi da premettere agli asterischi
a=asterischi della linea
h=altezza del triangolo
r=riga corrente (iniziando a contare da zero)

s=h-r-1
a=r*2+1
.
Personalmente credo che abbia pi senso fare tutto in funzione del numero delle righe, ma "rivoltando" le dette relazioni puoi scrivere il ciclo in funzione di qualunque variabile.

MacApp
24-05-2008, 20:54
Originariamente inviato da Ov3rLo4d

per ora io ho scritto questo (nulla di molto utile):

#include <stdio.h>
#include <stdlib.h>

#define max 20
int alt;

main()
{
printf("Inserisci l'altezza: ");
scanf("%d",&alt);
if(alt<max)
{
for(
}
}
Qulla parentesi aperta, del for, non chiusa decisamente preoccupante..

Ov3rLo4d
25-05-2008, 16:13
Grazie a tutti.... mi siete stati molto utili... sono riuscito a farlo dasolo ^^

Loading