Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [c]tartaglia

  1. #1
    Utente di HTML.it L'avatar di spode
    Registrato dal
    Jul 2010
    Messaggi
    85

    [c]tartaglia

    salve. questo codice salta da "inserisci r" a vuoi riprovare e quindi non disegna il triangolo di tartaglia
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int r=0,i=0,m=0,a[100][100];
        char risposta;
    
        do{
        system("cls");
        printf("\t\t\t\tTRIANGOLO DI TARTAGLIA\n\n");
        printf("\t\tCiao. Inserisci il raggio: ");
        scanf("%d",&r);
        while(m<=r)
        {
            if(i==0)
            {
                a[m][i]=1;
            }
            else
            {
                break;
            }
            if(m==0&&i>=1)
            {
                a[m][i]=0;
            }
            else
            {
                break;
            }
            if(i==r)
            {
                m++;
            }
            else
            {
                break;
            }
            if(m!=0&&i!=0)
            {
                a[m][i]=a[m-1][i-1]*a[m-1][i];
            }
            else
            {
                break;
            }
            printf("%d",a[m][i]);
            i++;
        }
        printf("Vuoi riprovare? (s/n) ");
        risposta=getche();
        }while(risposta=='s');
    
        return 0;
    }
    SO: Windows 7

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    E mi sembra ovvio:

    Appena entra nel ciclo while succede questo:

    codice:
            if(i==0)
            {
                a[m][i]=1;
            }
            else
            {
                break;
            }
            if(m==0&&i>=1)
            {
                a[m][i]=0;
            }
            else
            {
                break;
            }
    Il primo test (i == 0) è vero. Viene eseguita l'assegnazione.
    Il secondo test è falso, perchè i non è >= 1 (è ancora uguale a 0). Quindi esegue il break.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di spode
    Registrato dal
    Jul 2010
    Messaggi
    85
    neanche con queste correzioni funziona
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int r=0,i=0,m=0,a[100][100];
        char risposta;
    
        do{
        system("cls");
        printf("\t\t\t\tTRIANGOLO DI TARTAGLIA\n\n");
        printf("\t\tCiao. Inserisci il raggio: ");
        scanf("%d",&r);
        while(m<=r)
        {
            if(i==0)
            {
                a[m][i]=1;
            }
            else
            {
                continue;
            }
            if(m==0&&i>=1)
            {
                a[m][i]=0;
            }
            else
            {
                continue;
            }
            if(i==r)
            {
                m++;
            }
            else
            {
                continue;
            }
            if(m!=0&&i!=0)
            {
                a[m][i]=a[m-1][i-1]*a[m-1][i];
    
            }
            printf("%d",a[m][i]);
            i++;
        }
        printf("Vuoi riprovare? (s/n) ");
        risposta=getche();
        }while(risposta=='s');
    
        return 0;
    }
    SO: Windows 7

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da spode
    dici che dovrei usare "continue" al posto di "break"?
    Non sono stato lì a controllare la logica di funzionamento del programma: ho solo evidenziato il perchè del problema che riscontri... certo che se non hai compreso la differenza fra break (fermati) e continue (continua) dovresti, quantomento, andarti a riguardare la documentazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.