Triangolo di tartagli

di il
7 risposte

Triangolo di tartagli

Salve a tutti,

Sono alle prime armi con il linguaggio c, vorrei chiedere a tutti voi il seguente aiuto:

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


Come posso realizzare il seguente programma?

Ho provato a risolvere in questo modo per capire bene come si usano i cicli:

prima di tutto per creare una colonna ho fatto cosi:

for(colonna=1; colonna<=5 ;colonna++){
printf("*");
printf("\n");

}
per realizzare una colonna.

Adesso come posso fare per inserire le righe il quella determinata colonna?


In attesa di risposta

7 Risposte

  • Re: Triangolo di tartagli

    
    int cont=1;
    while ( cont != 5 ) {
        for ( colonna = 1 ; colonna <= cont ; i++ ) 
                printf("*");
        print("\n");
        cont++;
    }
    
    Devi fare un doppio ciclo oppure utilizzi la ricorsione
  • Re: Triangolo di tartagli

    Dovrebbe essere così:

    int cont=0;

    for (int i=1,i<=5;i++){
    do{
    printf("*");
    cont++
    }while(cont<i)
    printf("\n");
    cont=0;
    }
  • Re: Triangolo di tartagli

    Grazie, di avermi risposto.
    Volevo chiedere ultima informazione, sempre per avere padronanza sui cicli.
    Mi potete spiegare, se io desidero creare una riga oppure una colonna a piacere come si fà.
    con il codice che ho visto avete ridotto molto. però visto che io devo creare altre figure sempre con gli asterischi mi dovete dire ad esempio
    1) creo una colonna
    2) affianco della prima colonna voglio inserire una riga

    come si fà a creare a piacere una colonna o una riga?

    cioè quanto creo il ciclo colonna, all'interno della colonna creo il ciclo di riga
    questa è una colonna?
    *
    *** questa è una riga?
    ***

    puo uscire questo?

    Se ho capito bene come si crea?
  • Re: Triangolo di tartagli

    Non ho capito bene cosa devi fare , la figura deve essere sempre tale che la prima riga deve avere un * , la seconda ** , la terza *** oppure il numero di "*" per riga può anche essere random ?.
    cioè quanto creo il ciclo colonna, all'interno della colonna creo il ciclo di riga
    questa è una colonna?
    *
    *** questa è una riga?
    ***
    Ogni volta che vai a capo inizia una nuova riga quindi nel tuo caso la tua ne ha 3 di righe . La colonna rappresa quanti elementi ci sono nella riga , nel tuo caso sempre 3 ( si vede il numero max ) La tua matrice è un 3x3

    [/quote]
    *
    **
    ****
    in questo caso ha 3 righe e 4 colonne.
  • Re: Triangolo di tartagli

    Salve,

    Grazie di tutto.

    C'è un problema dal codice che mi avete dato:
    1) quella sulla ricorsione mi stampa asterischi infiniti e non mi fa uscire il triangolo, come mai?
    2) Invece l'altro codice mi da in outuput il seguente errore:
    triangolo.c: In function ‘main’:
    triangolo.c:8:20: error: expected ‘;’ before ‘)’ token
    triangolo.c:20:3: error: expected ‘;’ before ‘printf’
    ecco il codice:
    #include<stdio.h>

    int main ( void ){

    int cont,i;
    cont=0;

    for (i=1,i<=5;i++){


    do{

    printf("*");
    cont++;

    }while(cont<i)



    printf("\n");
    cont=0;
    }



    return 0;

    }


    potete verificare?
  • Re: Triangolo di tartagli

    Per la prox volta , quando devi incollare un codice devi inserirlo tra i tag code e /code .

    Cmq hai sbagliato la sintassi:
    
    int main ( void ){ <--- ???? leva quel void 
    
    
    for (i=1,i<=5;i++){ <--------- i = 1 ;  i <= 5 ; i++   hai messo una virgola al posto del punto e virgola
    
    
    }while(cont<i)   <---- qui ci vuole un punto e virgola finale
    
  • Re: Triangolo di tartagli

    Per rispondere al primo messaggio servono due cicli for uno interno all'altro.

    ad esempio se tu volessi stampare un triangolo di 4 asterischi così
    *
    **
    ***
    ****

    dovresti fare in modo di avere
    #include <stdio.h>
    
    int main () {
    	int n=4;
            int j,i;
    for (i=0;i<n;i++) {
                              for(j=0;j<=i;j++) { printf ("*"); 
    }
    
    printf ("\n");
    
    }}
    
    
    così il pc sa che per la prima iterazione del primo ciclo stamperà un asterisco perchè il secondo ciclo itera solo una volta, per la seconda dato che i=1 j<=1 partendo da J=0 itererà due volte stampando così due asterischi...ecc...ricordati di mettere il terminatore di linea fuori dal secondo ciclo altrimenti non ti andrà a capo! (errore frequente è mettere nel secondo ciclo printf ("*\n"); così facendo si andrebbe a capo dopo ogni asterisco!)
Devi accedere o registrarti per scrivere nel forum
7 risposte