Ciao a tutti è da poco che studio C e sono autodidatta. Sto lavorando sempre sullo stesso progetto per imparare(interamente creato da me). Oggi volevo aggiungere l' opzione "poligono" in modo che mettendo l' apotema e il numero dei lati, calcola l' Area e il Perimetro.
Il problema sorge quando(mettendo come lati 5 funziona perfettamente..) metto come lato da 6 in poi... inizia a dire che aerea è 0 e anche perimetro...
Per favore ditemi cosa non va.
codice:#include <stdio.h> #include <conio.h> #include <malloc.h> #include <math.h> #include <stdlib.h> int main(void) { // Variabili float base,altezza,area,perimetro; int lati; char s; //Da qui "do" serve per ripetere l operazione finché... do{ printf("Di cosa devo calcolare l'area?\nt=Triangolo \nr=Rettangolo \nc=Cerchio \np=Poligono lato>4 lati \nx=Esci\n"); printf("Scegli l'operazione..."); scanf("%c",&s); getchar(); system("cls"); switch(s){ case 't': printf("Inserisci la misura della Base in cm: "); scanf("%f",&base); printf("Inserisci la misura dell' Altezza in cm: "); scanf("%f",&altezza); area=(base*altezza)/2; perimetro=(sqrt((base/2)*(base/2)+(altezza*altezza)))*2+base; printf("l'area e' %.3f cm \n", area); printf("il perimetro e' %.3f cm \n", perimetro); system("pause"); system("cls"); break; getchar(); case 'r': printf("Inserisci la misura della Base in cm: "); scanf("%f",&base); printf("Inserisci la misura dell' Altezza in cm : "); scanf("%f",&altezza); area=base*altezza; perimetro=(base*2)+(altezza*2); printf("l'area e' %.3f cm \n", area); printf("il perimetro e' %.3f cm \n", perimetro); system("pause"); system("cls"); break; getchar(); case 'c': printf("Inserisci la misura del Raggio in cm: "); scanf("%f",&base); area=3.14*base*base; perimetro=base*6.28; printf("l' area e' %.3f cm \n", area); printf("la circonferenza e' %.3f cm \n", perimetro); system("pause"); system("cls"); break; getchar(); case 'p': printf("Queste operazioni valgono solo per un poligono regolare... \n"); system("pause"); printf("Inserisci la misura dell' apotema in cm: "); scanf("%f",&base); printf("Inserisci il numero di lati (max 10): "); scanf("%d",&lati); switch (lati) { case 5: altezza=base*0.688; perimetro=altezza*5; area=(perimetro*base)/2; printf("Il perimetro e' : %f \n",perimetro); printf("L'Area e' : %f \n\n\n\n\n",area); system("pause"); system("cls"); break; getchar(); case 6: altezza=base*0,866; perimetro=altezza*6; area=(perimetro*base)/2; printf("Il perimetro e' : %f \n",perimetro); printf("L'Area e' : %f \n\n\n\n\n",area); system("pause"); system("cls"); break; getchar(); case 7 : altezza=base*1,040; perimetro=altezza*7; area=(perimetro*base)/2; printf("Il perimetro e' : %f \n",perimetro); printf("L'Area e' : %f \n\n\n\n\n",area); system("pause"); system("cls"); break; getchar(); case 8 : altezza=base*1,207; perimetro=altezza*8; area=(perimetro*base)/2; printf("Il perimetro e' : %f \n",perimetro); printf("L'Area e' : %f \n\n\n\n\n",area); system("pause"); system("cls"); break; getchar(); case 9 : altezza=base*1,374; perimetro=altezza*9; area=(perimetro*base)/2; printf("Il perimetro e' : %f \n",perimetro); printf("L'Area e' : %f \n\n\n\n\n",area); system("pause"); system("cls"); break; getchar(); case 10: altezza=base*1,539; perimetro=altezza*10; area=(perimetro*base)/2; printf("Il perimetro e' : %f \n",perimetro); printf("L'Area e' : %f \n\n\n\n\n",area); system("pause"); system("cls"); break; getchar(); default: printf("I lati del poligono sono troppi"); break; } case 'x': break; default:printf("Operazione non prevista! Ripeti la tua scelta...\n\n"); } getchar(); //...non si preme tasto "x" }while(s!='x'); printf("\n\nGrazie per aver utilizzato il calcolatore By Marco \n"); system("pause"); return 0; }

Rispondi quotando
.Ci ho messo un po' per trovare l' errore
. Grazie a visualstudio mi ha colorato di colore diverso il numero decimale(numero fisso) perché avevo messo "," non ".". Grazie comunque a tutti.
