PDA

Visualizza la versione completa : [c]tartaglia


spode
02-09-2010, 15:14
salve. questo codice salta da "inserisci r" a vuoi riprovare e quindi non disegna il triangolo di tartaglia

#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;
}

LeleFT
02-09-2010, 15:23
E mi sembra ovvio:

Appena entra nel ciclo while succede questo:



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. :ciauz:

spode
02-09-2010, 15:41
neanche con queste correzioni funziona

#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;
}

LeleFT
02-09-2010, 15:44
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. :ciauz:

Loading