diff --git a/Pitagora.c b/Pitagora.c index 63dca1c..a5ff180 100644 --- a/Pitagora.c +++ b/Pitagora.c @@ -1,32 +1,93 @@ -/* Le righe contrassegbate da un commento vuoto sono le cose che ho dovuto cercare visto che il rpof non me le ha dette il day 0 di programmazione, ma ci sta, è il mio day 0... */ #include -#include /**/ +#include +#include -int main() { -/* titolo */ - printf("Calcolatore di teorema di Pitagora"); - printf("\n"); - printf("\n"); +/*MI RACCOMANDO SCRIVI IL PROTOTIPO(la parte subito prima dell'apertura della graffa) PRIMA DI DICHIARARE LA FUNZIONE O ALTRIMENTI SEI MARSO CHE VUOI SOTTERRARE L'INT MAIN DATO CHE TUTTE LE FUNZIONI (o prototipi) VANNO SCRITTI SOPRA L'INT MAIN O GCC VA IN CRISI*/ +int Diretto(); /*É il teorema di Pitagora così come da definizione*/ +int Inverso();/*É la formula inversa del teorema di Pitagora*/ +void Error();/*Serve a notificare l'utente che ha inserito una cosa che il programma non accetta. É per evitare che il programma "hangs"*/ +int Input();/*determina cosa è stato inserito coime input, legge la lunghezza della stringa e la usa per determinare qual funzione l'utente ha deciso di chiamare*/ +float sq(float a);/*calcola il qudrato dell'input a. L'ho implementata più che altro per fare il gigachad e far vedere che mi piacciono le funzioni*/ +int main(){ + printf("Pythagora's theorem calculator"); + printf("\n"); + printf("\n"); + Input(); +} +int Input(){ + char Input[7]; + int g; + printf("Direct or Inverse? "); + scanf("%s", Input); + g=strlen(Input);/*calcola la dimensione dell'array (sì, le stringhe sono un array - insieme - di caratteri) e la scrive in g. Questo era l'unico metodo che mi veniva in mente per creare un menu basato su stringhe dato che online trovo solo esempi con menu ad opzioni numeriche e se oso solo usare uno strcmp il programma va in crisi leggendo indirizzi di memoria a caso lagnandosi che sono read-only o pure "it hangs" come al solito. Per questo esatto motivo ho dovuto scriverlo tutto in inglese dato che diretto e inverso hanno lo stesso numero di lettere (7). Ah, strlen fa parte di string.h*/ + if(g==6){ + Diretto(); + } + else if(g==7){ + Inverso(); + } + else{ + Error(); + } +} +int Diretto() { + /* titolo */ + printf("Hypotenuse calculator"); + printf("\n"); + printf("\n"); -/*variabili*/ - int C1; - int C2; - printf("Dimensioni cateto 1="); - scanf("%d",&C1); - printf("Dimensioni cateto 2="); - scanf("%d",&C2); + /*variabili*/ + float C1; + float C2; + printf("Cathetus 1="); + scanf("%f",&C1); + printf("Cathetus 2="); + scanf("%f",&C2); -/*quadrati*/ - int sqC1; - int sqC2; - sqC1=C1*C1; - sqC2=C2*C2; + /*quadrati*/ + float sqC1; + float sqC2; + sqC1=sq(C1); + sqC2=sq(C2); -/*ipotenusa*/ - int sqI; - sqI=sqC1+sqC2; - int i; - i=sqrt(sqI); /**/ - printf("L'ipotenusa risulta %d\n",i); + /*ipotenusa*/ + float sqI; + float i; + sqI=sqC1+sqC2; + i=sqrt(sqI);/*Radice quadrata. Fa parte di math.h*/ + printf("Hypotenuse is equal to %f\n",i); return 0; +} +int Inverso(){ + /*Titolo*/ + printf("Cathetus calculator"); + printf("\n"); + printf("\n"); + /*Lettura variabili*/ + float I; + float c; + printf("Hypotenuse:"); + scanf("%f",&I); + printf("Cathetus:"); + scanf("%f",&c); + /*Elevamento al quadrato*/ + float sqI; + float sqc; + sqI=sq(I); + sqc=sq(c); + /*Calcolo cateto*/ + float sqc2; + float c2; + sqc2=sqI-sqc; + c2=sqrt(sqc2);/*Radice quadrata. Fa parte di math.h*/ + /*Output*/ + printf("Cathetus is equal to %f\n", c2); + return 0; +} +void Error(){ + printf("Insert Direct to find the hypotenuse, Inverse to find the cathetus.\n"); + main(); +} +float sq(float a){ + return a*a; } \ No newline at end of file diff --git a/inverse Pitagora.c b/inverse Pitagora.c deleted file mode 100644 index eb23485..0000000 --- a/inverse Pitagora.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -int main() { -/*Titolo*/ -printf("Calcolatore inverso del teorema di Pitagora"); -printf("\n"); -printf("\n"); -/*Lettura variabili*/ -int I; -int c; -printf("Scrivi il valore dell'ipotenusa:"); -scanf("%d",&I); -printf("Scrivi il valore del cateto:"); -scanf("%d",&c); -/*Elevamento al quadrato*/ -int sqI; -int sqc; -sqI=I*I; -sqc=c*c; -/*Calcolo cateto*/ -int sqc2; -int c2; -sqc2=sqI-sqc; -c2=sqrt(sqc2); -/*Output*/ -printf("Il cateto risulta %d\n", c2); -return 0; -}