PDA

View Full Version : [c]mini calcolatrice


gir88
19-05-2005, 19:36
ho provato a fare una specie di mini calcolatrice.....semplicissima tanto per esercitami sulle funzioni....il compilatore nn mi da nessun errore...ma windows xp(sto maledetto) mi da il tipico errore(quello che chiede "inviare segnalazione errori?") dopo la visualizzazione dell menù....sapete il perchè?

il listato è questo:
#include<stdio.h>
#include<conio.h>

void addizione()
{
float num,num1,risultato;
printf("scrivi il primo valore da sommare : ");
scanf("%f", num);
printf("\nscrivi il secondo valore da sommare: ");
scanf("%f", num1);
risultato=num+num1;
printf("\nil risultato e' : %f", risultato);

}
void sottrazione()
{
float num2,num3,risultato1;
printf("scrivi il primo valore da sottrarre : ");
scanf("%f", num2);
printf("\nscrivi il secondo valore da sottrarre : ");
scanf("%f", num3);
risultato1=num2-num3;
printf("\nil risultato e' : %f", risultato1);

}
void moltiplicazione()
{
float num4,num5,risultato2;
printf("scrivi il primo valore da moltiplicare : ");
scanf("%f", num4);
printf("\nscrivi il secondo valore da moltiplicare : ");
scanf("%f", num5);
risultato2=num4*num5;
printf("\nil risultato e' : %f", risultato2);
}

void divisione()
{
float num6,num7,risultato3;
printf("scrivi il primo valore da dividere : ");
scanf("%f", num6);
printf("\nscrivi il secondo valore da dividere : ");
scanf("%f", num7);
risultato3=num6/num7;
printf("\nil risultato e' : %f", risultato3);

}
int main()

{
int istruzione;
printf("------------MENU' CALCOLATRICE--------------");
printf("\n1-addizione");
printf("\n2-sottrazione");
printf("\n3-moltiplicazione");
printf("\n4-divisione");
printf("\nscrivi il numero dell'istruzione che vuoi eseguire :");
scanf("%d", istruzione);
switch (istruzione){
case 1:
addizione();
break;
case 2:
sottrazione();
break;
case 3:
moltiplicazione();
break;
case 4:
divisione();
break;
default:
printf("il numero inserito non e' corretto :");
}
getch();
return 0;
}

71104
19-05-2005, 19:46
non incazzarti con Windows, in fondo la colpa non è sua, è tua ;)
il problema è che alle scanf gli argomenti aggiuntivi li devi passare per puntatore, non per valore; se li passi per valore giustamente la scanf tenta di accedere ad indirizzi di memoria inesistenti e ti fa saltare l'Access Violation che ovviamente non gestisci, ma fortunatamente interviene il buon Windows che lo gestisce mostrandoti una finestra bella e user-friendly che ti comunica gentilmente un errore di entità grave nel tuo programma.
(ora se solo poco poco mi vieni a dire che preferivi il brutale "segmentation fault" di Linux vengo a casa tua e ti sparo... :D)

71104
19-05-2005, 19:47
PS: la prossima volta che ricevi la finestra di invio segnalazione errori leggi i dettagli tecnici anziché lamentarti su HwUpagrde ;) così capisci il problema e ti fai le ossa; non voglio essere provocativo, dico sul serio: in quel caso i dettagli tecnici della segnalazione errori ti avrebbero permesso di capire il problema! ;)

gir88
19-05-2005, 20:28
grazie e scusate il disturbo inutile allora :D