PDA

View Full Version : [C]Errore strano


Luc@s
08-11-2002, 18:56
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

cionci
08-11-2002, 19:01
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...

Luc@s
08-11-2002, 19:04
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?????

Luc@s
08-11-2002, 19:10
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

cionci
08-11-2002, 21:34
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...

Luc@s
09-11-2002, 15:14
tnk ma l'errore che ho postato a cosa era dovuto?

cionci
10-11-2002, 10:31
Te l'ho scritto nel codice...ti manca la & nella prima scanf davanti a constr...

Luc@s
10-11-2002, 10:33
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??????

cionci
10-11-2002, 10:45
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...

Luc@s
10-11-2002, 10:49
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

cionci
10-11-2002, 10:53
Originariamente inviato da Luc@s
[B]Sei sempre il mio mito a livello informatico:D
Eh...esagerato :)

I miti sono ben altri...

Luc@s
10-11-2002, 10:54
Originariamente inviato da cionci
[B]
Eh...esagerato :)

I miti sono ben altri... tipo?

cionci
10-11-2002, 10:57
Originariamente inviato da Luc@s
[B]tipo?
Linus Torvald, Peter Norton...

Luc@s
10-11-2002, 11:00
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??????

cionci
10-11-2002, 11:06
Vabbè...ho messo i due secondo me più grandi...poi di miti ce ne sono tanti...

Luc@s
10-11-2002, 11:07
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:

cionci
10-11-2002, 11:39
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....

Luc@s
10-11-2002, 11:53
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!!!!!!