View Full Version : [C]Errore strano
Perche quando eseguo sto cod:
//------------------------ Include ---------------------------------------------
#include <stdio.h>
#include "mate.h"
//----------------------- Pragmi -----------------------------------------------
#pragma hdrstop
#pragma argsused
//---------------------------- Main --------------------------------------------
int main(int argc, char* argv[])
{
//--------------------------- Variabili ---------------------------------------
int constr, a, b;
//--------------------------- Variabili ----------------------------------------
//--------------------------- Do di controllo ----------------------------------
do
{
printf(
"Sciegli un operazione\n"
);
printf(
"1)Addiziona\n"
);
printf(
"2)Sottrai\n"
);
printf(
"3)Moltiplica\n"
);
printf(
"4)Dividi\n"
);
printf(
"5)Esci\n"
);
scanf(
"%i",
constr
);
printf(
"\nInserisci i 2 numeri"
);
scanf(
"%i",
a
);
capo();
scanf(
"%i",
b
);
capo();
//-------------------------------- Case di Selezione ---------------------------
switch (constr)
{
case 1:
somma(a, b);
break;
case 2:
sottrai(a, b);
break;
case 3:
moltiplica(a,b );
break;
case 4:
dividi(a,b );
break;
//-------------------------------- Case di Selezione ---------------------------
}
}while(constr != 5);
//--------------------------- Do di controllo ----------------------------------
system("PAUSE");
return 0;
}
Mi da errore di violazione CPU?????????
P.S: va bene come lo commento o sbaglio??????
Tnk
Come mia le scanf le scrivi in quel modo con un argomento per riga ?!?!? Secondo me è molto brutto e controproducente...
Comunque mancano le & davanti alle variaibli delle scanf... Poi si usa più spesso %d al posto di %i...
Originariamente inviato da cionci
[B]Come mia le scanf le scrivi in quel modo con un argomento per riga ?!?!? Secondo me è molto brutto e controproducente...
Comunque mancano le & davanti alle variaibli delle scanf... Poi si usa più spesso %d al posto di %i... Perche controproducente???????io cosi mi trovo melio a gestire printf();
Cmq i commenti e la formattazione vanno bene cosi o no?????
nn va lo stesso:
//------------------------ Include ---------------------------------------------
#include <stdio.h>
#include "mate.h"
//----------------------- Pragmi -----------------------------------------------
#pragma hdrstop
#pragma argsused
//----------------------- /Pragmi ----------------------------------------------
//---------------------------- Main --------------------------------------------
int main(int argc, char* argv[])
{
//--------------------------- Variabili ---------------------------------------
int constr, a, b;
//-------------------------- /Variabili ----------------------------------------
//--------------------------- Do di controllo ----------------------------------
do
{
printf(
"Sciegli un operazione\n"
);
printf(
"1)Addiziona\n"
);
printf(
"2)Sottrai\n"
);
printf(
"3)Moltiplica\n"
);
printf(
"4)Dividi\n"
);
printf(
"5)Esci\n"
);
scanf(
"%d",
constr
);
printf(
"\nInserisci i 2 numeri"
);
scanf(
"%d",
&a
);
capo();
scanf(
"%i",
&b
);
capo();
//-------------------------------- Case di Selezione ---------------------------
switch (constr)
{
case 1:
somma(a, b);
break;
case 2:
sottrai(a, b);
break;
case 3:
moltiplica(a,b );
break;
case 4:
dividi(a,b );
break;
//------------------------------- /Case di Selezione ---------------------------
}
}while(constr != 5);
//-------------------------- /Do di controllo ----------------------------------
system("PAUSE");
return 0;
}
//--------------------------- /Main --------------------------------------------
ekko l'errore che mi da il BCB
Originariamente inviato da Luc@s
[B]Perche controproducente???????io cosi mi trovo melio a gestire printf();
Perchè prima di tutto ti ci vorrebbero 500 righe per scrivere 100 istruzioni...seconda cosa per capire a quale istruzione si riferisce un parametro devi scorrere sopra per vedere la funzione...
Infine non si riesce a seguire il flusso del programma...e per questo ci si infilano errori a ripetizione ;)
Originariamente inviato da Luc@s
[B]Cmq i commenti e la formattazione vanno bene cosi o no?????
I commenti non vanno bene così perchè stai usando il modo di commentare del C++...in C i commenti si scrivono con /*commento*/
#include <stdio.h>
#include "mate.h"
#pragma hdrstop
#pragma argsused
/* Main program */
int main(int argc, char* argv[])
{
int constr, a, b;
do
{
/* Stampa menu */
do
{
printf("Sciegli un operazione\n"
"1)Addiziona\n"
"2)Sottrai\n"
"3)Moltiplica\n"
"4)Dividi\n"
"5)Esci\n");
scanf("%d", &constr); /* qui ti mancava la & */
} while(constr < 1 && constr > 5);
/* Inserimento dei due numeri */
printf("\nInserisci i 2 numeri separati da spazio : ");
scanf("%d %d", &a, &b);
/* Selezione degli operatori */
switch (constr)
{
case 1:
somma(a, b);
break;
case 2:
sottrai(a, b);
break;
case 3:
moltiplica(a, b);
break;
case 4:
dividi(a, b);
break;
default:
}
} while(constr != 5);
system("PAUSE");
return 0;
}
I commenti solitamente non sono "Inizio ciclo", "fine ciclo"...ma solitamente si inseriscono per descrivere cosa fa la parte di codice compresa fra il commento corrente e quello successivo...
tnk ma l'errore che ho postato a cosa era dovuto?
Te l'ho scritto nel codice...ti manca la & nella prima scanf davanti a constr...
Originariamente inviato da cionci
[B]Te l'ho scritto nel codice...ti manca la & nella prima scanf davanti a constr... quindi senza & mi da violazione della CPU??????
Originariamente inviato da Luc@s
[B]quindi senza & mi da violazione della CPU??????
Sì...perchè alla scanf devi passare un indirizzo (quindi &constr è l'indirizzo di constr)...se gli passi constr hai problemi perchè constr in quel momento contiene (a seconda del compilatore) o zero o il centenuto precedente della memoria dove è allocata quella variabile...e quindi la scanf tenta di scrivere in un indirizzo non valido...
Originariamente inviato da cionci
[B]
Sì...perchè alla scanf devi passare un indirizzo (quindi &constr è l'indirizzo di constr)...se gli passi constr hai problemi perchè constr in quel momento contiene (a seconda del compilatore) o zero o il centenuto precedente della memoria dove è allocata quella variabile...e quindi la scanf tenta di scrivere in un indirizzo non valido... tnk!!!
Sei sempre il mio mito a livello informatico:D
Originariamente inviato da Luc@s
[B]Sei sempre il mio mito a livello informatico:D
Eh...esagerato :)
I miti sono ben altri...
Originariamente inviato da cionci
[B]
Eh...esagerato :)
I miti sono ben altri... tipo?
Originariamente inviato da Luc@s
[B]tipo?
Linus Torvald, Peter Norton...
Originariamente inviato da cionci
[B]
Linus Torvald, Peter Norton... ho letto i sergenti della vers 1 di Linux
:eek: :eek: :eek:
e Stallman con Emacs nn ce lo metti??????
Vabbè...ho messo i due secondo me più grandi...poi di miti ce ne sono tanti...
Originariamente inviato da cionci
[B]Vabbè...ho messo i due secondo me più grandi...poi di miti ce ne sono tanti...
ma Peter Norton ....che ha fatto?:confused:
Originariamente inviato da Luc@s
[B]ma Peter Norton ....che ha fatto?:confused:
Ora non so quanto programmi... credo che attualmente sia un capoccia alla Symantec... Hai presente il Norton Antivirus ? Le Norton Utilities ?
Hai tempi del DOS i suoi programmi di diagnostica e utilità erano strepitosi....
Originariamente inviato da cionci
[B]
Ora non so quanto programmi... credo che attualmente sia un capoccia alla Symantec... Hai presente il Norton Antivirus ? Le Norton Utilities ?
Hai tempi del DOS i suoi programmi di diagnostica e utilità erano strepitosi....
ekko kosa mi ricordava : l' antivirus!!!!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.