View Full Version : [C] Aiutino per neofita sfigato!
Salve a tutti , avrei bisogno di alcuni chiarimenti sul C ,premettendo che sono il numero uno dei niubbi , volevo chiedervi come mai nel laboratorio usando Win XP e DEV C++ riesco a compilare i programmi in C e a casa usando Windows Vista e Pelles C lo stesso programma mi da' errori in fase di compilazione?
Vi posto il sorgente e gli errori (tanto è roba corta!)
#include <stdio.h>
main ()
{
float addendo1,addendo2 ;
printf ("\n CALCOLATRICE PER LA SOMMA \n") ;
printf ("\n Inserire il primo addendo da sommare ") ;
scanf ("%f" , &addendo1) ;
printf ("\n Inserire il secondo addendo da sommare \n");
scanf ("%f , &addendo2");
printf ("La somma è : %f" , addendo1+addendo2);
getch () ;
}
Pelles C , quando clicco su Compile File o su Build File dice :
C:\Users\Amministrazioe\Desktop\c\calcolasomme\calcolasomme.c(2): warning #2099: Missing type specifier.
C:\Users\Amministrazioe\Desktop\c\calcolasomme\calcolasomme.c(9): error #2001: Syntax error: expected ';' but found 'scanf'.
C:\Users\Amministrazioe\Desktop\c\calcolasomme\calcolasomme.c(11): warning #2027: Missing prototype for 'getch'.
C:\Users\Amministrazioe\Desktop\c\calcolasomme\calcolasomme.c(12): warning #2096: Missing return value.
*** Error code: 1 ***
Done.
A proposito che differenza c'è tra Build File e Compile File?
Grazie a tutti .
#include <stdio.h>
main ()
{
float addendo1,addendo2 ;
printf ("\n CALCOLATRICE PER LA SOMMA \n") ;
printf ("\n Inserire il primo addendo da sommare ") ;
scanf ("%f" , &addendo1) ;
printf ("\n Inserire il secondo addendo da sommare \n");
scanf ("%f , &addendo2");
printf ("La somma è : %f" , addendo1+addendo2);
getch () ;
}
la riga in grassetto è sbagliata sicuramente volevi fare
scanf("%f", &addendo2);
un'altra cosa, io metterei
int main()
e prima della fine del programma
return 0;
e se fossi in te userei codeblocks come ide.. se vuoi provarlo lo trovi qui (http://sourceforge.net/project/downloading.php?groupname=codeblocks&filename=codeblocks-8.02mingw-setup.exe&use_mirror=puzzle)
RaouL_BennetH
11-11-2008, 11:57
Sono quasi tutti warning :
uno credo che te lo indichi perchè la funzione main deve sempre ritornare un valore, quindi dovresti cambiarla in:
int main()
//e farle ritornare un valore
return 0;
L'errore vero e proprio è un semplice errore di sintassi:
scanf ("%f , &addendo2");
//dev'essere:
scanf("%f", &addendo2);
P.S: ndakota mi hai bruciato sul tempo :D
P.S: ndakota mi hai bruciato sul tempo :D
:Prrr: :Prrr:
Ok problemi quasi risolti .Grazie veramente. Compilato tutto, senza errori ,pero' quando mando in esecuzione il programma mi chiede di inserire addendo1 e addendo2, ma non mi scrive la somma dei due numeri..... Ho provato a inserire la & nella riga printf che fa la somma ....ma non funziona.
potrebbe essere che si chiude prima che tu riesca a vedere il risultato? se così, usando codeblocks risolverai il problema perchè tiene aperto la finestra da solo.. altrimenti prova a mettere due
getchar();
getchar();
prima del
return 0;
Nada ho provato anche a togliere getchar , ma non funziona.
#include <stdio.h>
int main ()
{
float addendo1,addendo2 ;
printf ("\n CALCOLATRICE PER LA SOMMA \n") ;
printf ("\n Inserire il primo addendo da sommare ") ;
scanf ("%f" , &addendo1) ;
printf ("\n Inserire il secondo addendo da sommare \n") ;
scanf ("%f ", &addendo2);
printf ("La somma è : %f" , addendo1 + addendo2);
getchar();
return 0 ;
}
Mancherà mica qualche libreria che non conosco?
royaleagle
11-11-2008, 15:41
Nada ho provato anche a togliere getchar , ma non funziona.
#include <stdio.h>
int main ()
{
float addendo1,addendo2 ;
printf ("\n CALCOLATRICE PER LA SOMMA \n") ;
printf ("\n Inserire il primo addendo da sommare ") ;
scanf ("%f" , &addendo1) ;
printf ("\n Inserire il secondo addendo da sommare \n") ;
scanf ("%f ", &addendo2);
printf ("La somma è : %f" , addendo1 + addendo2);
getchar();
return 0 ;
}
Mancherà mica qualche libreria che non conosco?
Il problema è lo statement evidenziato, sostituiscilo con:
scanf ("%f", &addendo2);
cioè togli lo spazio dopo %f.
Ci
ao
Grazie , sto imparando piu' qui a leggere le vostre risposte e le altre discussioni che in una settimana di lezioni!!! Che ci vado a fare a lezione non si sa!!
Per cercare di evolvermi un po' ho scritto quest'altro programma per la soluzione di equazioni di secondo grado , stanamente lo ha compilato al primo colpo senza errori, solo che quando lo mando in esecuzione inserisco il primo parametro e poi windows vista lo chiude forzatamente.
#include <stdio.h>
#include <math.h>
int main ()
{
float a,b,c,delta,x1,x2 ;
printf ("CALCOLO DI EQUAZIONI DI SECONDO GRADO");
printf ("\n Inserire il parametro a \n");
scanf("\n %g , &a");
printf ("Inserire il parametro b");
scanf("\n %g , &b");
printf ("Inserire il parametro c");
scanf("\n %g , &c");
delta == b*b-4*a*c ;
x1=((-b-sqrt (delta)) /(2*a));
x2=((-b+sqrt (delta)) /(2*a));
if (delta <0) {
printf ("\n Non esistono soluzioni Reali \n") ;
return 0;}
if (delta >0) {
printf ("\n Le soluzioni dell'equazione sono" "\n %g, x1,x2 \n");
return 0; }
if (delta==0) {
printf ( "Esistono due soluzioni coincidenti in x uguale a " "%g , x1"); }
return 0;
}
royaleagle
11-11-2008, 16:44
Hai fatto lo stesso errore di prima...
scanf ("%f , &addendo2");
//dev'essere:
scanf("%f", &addendo2);
Inoltre sarebbe meglio che tu imparassi ad usare il costrutto if-elseif-else.
Credo ci sia dell'altro perche adesso mi da' questa roba :
Building equazion2.obj.
C:\Users\Amministrazioe\Desktop\c\equazione\equazion2.c(5): warning #2115: Local 'x1' is initialized but never used.
C:\Users\Amministrazioe\Desktop\c\equazione\equazion2.c(5): warning #2115: Local 'x2' is initialized but never used.
C:\Users\Amministrazioe\Desktop\c\equazione\equazion2.c(5): warning #2116: Local 'delta' is used but never assigned a value.
Building equazion2.exe.
Done
Il programma mi chiede il parametro a , lo inserisco poi mi chiede il b e poi il cursore rimane lampeggiante senza chiedermi il c se premo invio me lo chiede ma poi si ferma l'esecuzione.
#include <stdio.h>
#include <math.h>
int main ()
{
float a,b,c,delta,x1,x2 ;
printf ("CALCOLO DI EQUAZIONI DI SECONDO GRADO");
printf ("\n Inserire il parametro a \n");
scanf("%f", &a );
printf ("Inserire il parametro b \n");
scanf("%f ", &b);
printf ("\n Inserire il parametro c \n");
scanf(" %f ", &c);
delta == b*b-4*a*c ;
x1=((-b-sqrt (delta)) /(2*a));
x2=((-b+sqrt (delta)) /(2*a));
if (delta <0) {
printf ("\n Non esistono soluzioni Reali \n") ;
return 0;}
if (delta >0) {
printf ("\n Le soluzioni dell'equazione sono" "\n %g, x1,x2 \n");
return 0; }
if (delta==0) {
printf ( "Esistono due soluzioni coincidenti in x uguale a " "%g , x1"); }
return 0;
}
royaleagle
11-11-2008, 21:42
Te lo avevo già detto prima, stai attento alle correzioni!!
All'interno di scanf non aggiungere spazi oltre a %d, %f ecc...
Correggi questi due statement:
scanf("%f ", &b);
scanf(" %f ", &c);
come detto nei post precedenti la funzione scanf non si aspetta spazi nel parametro wildcard (il primo parametro).
questo assegnamento è errato delta == b*b-4*a*c ;
devi utilizzare un solo =, e magari mettere qualche parentesi :D
#include <stdio.h>
#include <math.h>
int main ()
{
float a,b,c,delta,x1,x2 ;
printf ("CALCOLO DI EQUAZIONI DI SECONDO GRADO");
printf ("\n Inserire il parametro a \n");
scanf("%f", &a );
printf ("Inserire il parametro b \n");
scanf("%f", &b);
printf ("\n Inserire il parametro c \n");
scanf("%f", &c);
delta=(b*b)-(4*a*c) ;
x1=((-b-sqrt (delta)) /(2*a));
x2=((-b+sqrt (delta)) /(2*a));
if (delta <0) {
printf ("\n Non esistono soluzioni Reali \n") ;
return 0;}
if (delta >0) {
printf ("\n Le soluzioni dell'equazione sono" "\n %g, x1,x2 \n");
return 0; }
if (delta==0) {
printf ( "Esistono due soluzioni coincidenti in x uguale a " "%g , x1"); }
return 0;
}
Scusate il codice che ho citato prima era senza spazi ma quando lo cito me li fa!!Ho provato a usare modifica ma una volta che faccio salva ci risono .Ho dovuto riscrivere la riga.
Comunque , nel sorgente non ci sono e nemmeno qui adesso spero . Ho messo le parentesi al delta in riga 13 ....ma il programma si inceppa
sono sbagliate le printf, ad esempio:
printf ("\n Le soluzioni dell'equazione sono" "\n %g, x1,x2 \n");
diventa
printf ("\n Le soluzioni dell'equazione sono\nx=%f\nx=%f\n", x1, x2);
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.