01/06/09 18:32
Ciao a tutta la community innanzitutto.
Sono 7h3.c0r3 e sono appena entrato nel mondo della programmazione.
Ho scritto questo programma che calcola le aree di alcune figure piane.
Il programma di per se funziona alla grande ma ho notato un paio di cose che vorrei correggere:
1. Il programma si chiude se il numero immesso è con la virgola e non il punto. Vorrei risolvere in modo che la virgola si trasformi da sola in punto.
2. Il programma crasha se vengono immessi caratteri.
3. Le variabili float e double presentano troppi decimali dopo il punto, si possono limitare? Se si, come?
4. Domanda da niubbo, scusate, mi sono appena addentrato in questo mondo: come si mette l'interfaccia grafica a un programma in C?
Sono gradite anche dritte e critiche, grazie a tutti anticipatamente.
Sono 7h3.c0r3 e sono appena entrato nel mondo della programmazione.
Ho scritto questo programma che calcola le aree di alcune figure piane.
#include <stdio.h> #include <windows.h> main() { char choose; char subchoose; char exitorno; float x; float y; float z; do { system ("CLS"); printf ("## Area Calculator 0.1 Beta.\n"); printf ("## Autor: 7h3.c0r3.\n"); printf ("## Please, choose your language.\n"); printf ("## 1. Enghlish\n"); printf ("## 2. Italiano\n"); printf ("## My choose: "); scanf ("%i", &choose); } while (choose > 2 || choose == 0); if (choose==1) { do { system ("CLS"); printf ("## Enghlish selected!\n"); printf ("## Select the figure from the list.\n"); printf ("## 1. Triangle\n"); printf ("## 2. Square\n"); printf ("## 3. Rectangle\n"); printf ("## 4. Trapeze\n"); printf ("## 5. Rumble\n"); printf ("## 6. Circle\n"); printf ("## 7. Another Polygons\n"); printf ("## My choose: "); scanf ("%i", &subchoose); switch (subchoose) { case 1: printf ("\n## Enter the base dimension in cm: "); scanf ("%f", &x); printf ("## Enter the height dimension in cm: "); scanf ("%f", &y); printf ("## Area dimension: %f cm2.\n", (x*y)/2); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 2: printf ("\n## Enter the side dimension in cm: "); scanf ("%f", &x); printf ("## Area dimension: %f cm2.\n", x*x); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 3: printf ("\n## Enter the base dimension in cm: "); scanf ("%f", &x); printf ("## Enter the height in cm: "); scanf ("%f", &y); printf ("## Area dimension: %f cm2.\n", (x*y)); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 4: printf ("\n## Enter the greater base dimension in cm: "); scanf ("%f", &x); printf ("## Enter the smaller base dimension in cm: "); scanf ("%f", &y); printf ("## Enter the height dimension in cm: "); scanf ("%f", &z); printf ("## Area dimension: %f cm2.\n", ((x+y)*z)/2); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno);; if (exitorno == 1) { return 0; } break; case 5: printf ("\n## Enter the greater diagonal dimension in cm: "); scanf ("%f", &x); printf ("## Enter the smaller diagonal dimension in cm: "); scanf ("%f", &y); printf ("## Area dimension: %f cm2.\n", (x*y)/2); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 6: printf ("\n## Enter the circle beam dimension in cm: "); scanf ("%f", &x); printf ("## Area dimension: %f cm2.\n", x*x*3.14); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 7: printf ("\n## Enter the perimeter dimension in cm: "); scanf ("%f", &x); printf ("## Enter the apothem dimension in cm: "); scanf ("%f", &y); printf ("## Area dimension: %f cm2.\n", (x*y)/2); printf ("## Press 1 to exit, press 2 to continue: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; } // fine switch } while (subchoose > 7 || subchoose == 0 || exitorno == 1); // fine ciclo do-while return 0; // programma eseguito correttamente } // fine if if (choose==2) { do { system ("CLS"); printf ("## Italiano selezionato!\n"); printf ("## Seleziona una delle seguenti figure.\n"); printf ("## 1. Triangolo\n"); printf ("## 2. Quadrato\n"); printf ("## 3. Rettangolo\n"); printf ("## 4. Trapezio\n"); printf ("## 5. Rombo\n"); printf ("## 6. Cerchio\n"); printf ("## 7. Altri Poligoni\n"); printf ("## La mia scelta: "); scanf ("%i", &subchoose); switch (subchoose) { case 1: printf ("\n## Inserisci la misura della base in cm: "); scanf ("%f", &x); printf ("## Inserisci la misura dell'altezza in cm: "); scanf ("%f", &y); printf ("## La dimensione dell'area e': %f cm2.\n", (x*y)/2); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 2: printf ("\n## Inserisci la misura del lato in cm: "); scanf ("%f", &x); printf ("## La dimensione dell'area e': %f cm2.\n", x*x); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 3: printf ("\n## Inserisci la misura della base in cm: "); scanf ("%f", &x); printf ("## Inserisci la misura dell'altezza in cm: "); scanf ("%f", &y); printf ("## La dimensione dell'area e': %f cm2.\n", (x*y)); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 4: printf ("\n## Inserisci la misura della base maggiore in cm: "); scanf ("%f", &x); printf ("## Inserisci la misura della base minore in cm: "); scanf ("%f", &y); printf ("## Inserisci la misura dell'altezza in cm: "); scanf ("%f", &z); printf ("## La dimensione dell'area e': %f cm2.\n", ((x+y)*z)/2); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 5: printf ("\n## Inserisci la misura della diagonale maggiore in cm: "); scanf ("%f", &x); printf ("## Inserisci la misura della diagonale minore in cm: "); scanf ("%f", &y); printf ("## La dimensione dell'area e': %f cm2.\n", (x*y)/2); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 6: printf ("\n## Inserisci la misura del raggio in cm: "); scanf ("%f", &x); printf ("## La dimensione dell'area e': %f cm2.\n", x*x*3.14); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; case 7: printf ("\n## Inserisci la misura del perimetro in cm: "); scanf ("%f", &x); printf ("## Inserisci la misura dell'apotema in cm: "); scanf ("%f", &y); printf ("## La dimensione dell'area e': %f cm2.\n", (x*y)/2); printf ("## Premi 1 per uscire, premi 2 per continuare: "); scanf ("%i", &exitorno); if (exitorno == 1) { return 0; } break; } //fine switch } while (subchoose > 7 || subchoose == 0 || exitorno == 1); // fine ciclo do-while } // fine if return 0; // programma eseguito correttamente } // fine main()
Il programma di per se funziona alla grande ma ho notato un paio di cose che vorrei correggere:
1. Il programma si chiude se il numero immesso è con la virgola e non il punto. Vorrei risolvere in modo che la virgola si trasformi da sola in punto.
2. Il programma crasha se vengono immessi caratteri.
3. Le variabili float e double presentano troppi decimali dopo il punto, si possono limitare? Se si, come?
4. Domanda da niubbo, scusate, mi sono appena addentrato in questo mondo: come si mette l'interfaccia grafica a un programma in C?
Sono gradite anche dritte e critiche, grazie a tutti anticipatamente.
Ultima modifica effettuata da 01/06/09 18:34