PDA

View Full Version : [C] dov'è l'errore in questo programma?


Lo ScArSe
02-10-2009, 20:06
ciao a tutti, oggi a scuola ho iniziato la programmazione in C ed ho scritto questo programma sul dev cpp:

#include <stdio.h>
main ()
{
float l, a, p;
printf("inserisci lato ");
scanf("%f", &l);
p = l * 4;
a = l * l;
printf("risultati area %f perimetro %f", a, p);
return 0;
}

è stato compilato senza problemi ma quando apro l'eseguibile e inserisco il lato, il programma si chiude senza darmi risultati e deve essere riaperto, cosi tutte le volte :mc: ... sapete dirmi dov'è l'errore?? grazie anticipatamente a tutti ;)

Rsk
02-10-2009, 20:09
aggiungi un getchar() alla fine in modo che il terminale non si chiuda e ti lasci il tempo di vedere l'output

Lo ScArSe
02-10-2009, 20:11
#include <stdio.h>
main ()
{
float l, a, p;
printf("inserisci lato ");
scanf("%f", &l);
p = l * 4;
a = l * l;
printf("risultati area %f perimetro %f", a, p);
return 0;
getchar();
}

cosi? lo fa lo stesso...

Rsk
02-10-2009, 20:11
#include <stdio.h>
main ()
{
float l, a, p;
printf("inserisci lato ");
scanf("%f", &l);
p = l * 4;
a = l * l;
printf("risultati area %f perimetro %f", a, p);
return 0;
getchar();
}

cosi? lo fa lo stesso...

togli return 0

Lo ScArSe
02-10-2009, 20:13
togli return 0

lo stesso...

wingman87
02-10-2009, 23:41
Metti due getchar invece di uno, il primo leggerà il carattere di ritorno a capo che è stato digitato quando hai letto il lato con scanf e il secondo metterà in attesa di un altro input il programma permettendoti di leggere il risultato.

hasmet
03-10-2009, 09:17
metti alla fine il comando system("pause");

Lo ScArSe
03-10-2009, 13:13
il system pause me lo ha detto anche il prof oggi ma sul dev mi dice questo?

11 C:\....`system' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

ndakota
03-10-2009, 13:15
il system pause me lo ha detto anche il prof oggi ma sul dev mi dice questo?

11 C:\....`system' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)


Mi sa che non hai aggiunto l'header che contiene la funziona system ma non ti saprei dire quale che sia. Te ne sconsiglio in ogni caso l'utilizzo :O

AnonimoVeneziano
03-10-2009, 13:16
#include <windows.h>

wingman87
03-10-2009, 13:17
Non hai risolto con i due getchar?

Lo ScArSe
03-10-2009, 21:29
Non hai risolto con i due getchar? :muro: non avevo letto, cosi funzione;) grazie a tutti :cool:

sapete dirmi perchè col system("PAUSE") non funziona?

||ElChE||88
03-10-2009, 21:32
sapete dirmi perchè col system("PAUSE") non funziona?
manca #include <stdlib.h>

Ikon O'Cluster
04-10-2009, 01:03
:muro: non avevo letto, cosi funzione;) grazie a tutti :cool:

sapete dirmi perchè col system("PAUSE") non funziona?

Il dev-c è decisamente buggato... è qualcosa di devastante... fare il debug ricordo che faceva diventare matti. Io almeno lo usavo alla versione 4.9.9.2. Ti consiglio di passare su Linux, magari qualcosa di semplice come Kubuntu o ubuntu. Puoi affidarti a Kdevelop oppure io personalmente utilizzo Geany+Meld+Nemiver+RapidSVN più vari plugins per Geany. Mi trovo molto bene.

||ElChE||88
04-10-2009, 01:50
Il dev-c è decisamente buggato... è qualcosa di devastante... fare il debug ricordo che faceva diventare matti. Io almeno lo usavo alla versione 4.9.9.2. Ti consiglio di passare su Linux, magari qualcosa di semplice come Kubuntu o ubuntu. Puoi affidarti a Kdevelop oppure io personalmente utilizzo Geany+Meld+Nemiver+RapidSVN più vari plugins per Geany. Mi trovo molto bene.
Cioè... per scrivere 10 righe di codice dovrebbe cambiare sistema operativo? :rotfl:
E io che pensavo "metti dev-cpp" fosse il peggior consiglio possibile. :asd:

hasmet
04-10-2009, 08:04
Io ho sempre usato codeblocks sotto windows xp oppure il gcc sotto linux e non ho mai avuto problemi...

Ikon O'Cluster
04-10-2009, 12:10
Cioè... per scrivere 10 righe di codice dovrebbe cambiare sistema operativo? :rotfl:
E io che pensavo "metti dev-cpp" fosse il peggior consiglio possibile. :asd:

Suppongo che stia studiando... e quindi se mettesse mano anche su Linux se lo ritroverebbe per il futuro!

||ElChE||88
04-10-2009, 12:34
Suppongo che stia studiando... e quindi se mettesse mano anche su Linux se lo ritroverebbe per il futuro!
Non riesco a capire cosa dovrebbe risolvere usando Linux invece di Windows.

Ikon O'Cluster
04-10-2009, 13:36
... non deve risolvere... dato che cerca una IDE che le provi tutte. E' giusto che sappia che su Linux può trovare alternative tipo Kdevelop.

||ElChE||88
04-10-2009, 14:57
... non deve risolvere... dato che cerca una IDE che le provi tutte. E' giusto che sappia che su Linux può trovare alternative tipo Kdevelop.
Scusa, avevo letto male (risolverebbe invece di ritroverebbe). :fagiano:

Però non credi che sia un po' esagerato, per uno che ha appena iniziato?

Ikon O'Cluster
04-10-2009, 23:10
Scusa, avevo letto male (risolverebbe invece di ritroverebbe). :fagiano:

Però non credi che sia un po' esagerato, per uno che ha appena iniziato?

Il saggio disse: "chi ben comincia è a metà dell'opera"... se funziona al CEPU... funziona per tutti :)

Ikon O'Cluster
04-10-2009, 23:16
Devo dire cmq che ho provato code::blocks leggendo i vari post e mi sembra molto molto buono funziona molto bene anche il completamento che con Geany non va quasi per niente. Geany cmq è buono per la sua leggerezza, inoltre è spartano e non rischi di perderti in amenità varie... Io purtroppo non posso affidarmi a Kdevelop xkè uso Gnome e dopo un po' ha cominciato a sballarsi la finestra :) adesso Kdevelop è aperto oltre l'area visibile del desktop senza possibilità di trascinamento!!! Anche NetBeans mi ispira molto, però è pesantissimo... inoltre devo dire la verità: non so configurarlo per gestire un progetto in C/C++ :P Una alternativa ci sarebbe: il Borland Turbo C!!! AHUAHUUHAHUA :D

Lo ScArSe
05-10-2009, 13:27
ho usato kubuntu per anni fino alle 8.04 mi pare, ora ero tornato a windows per crysis, l'ho finito da tempo e sono pronto a tornare indietro :P

Ikon O'Cluster
05-10-2009, 13:40
ho usato kubuntu per anni fino alle 8.04 mi pare, ora ero tornato a windows per crysis, l'ho finito da tempo e sono pronto a tornare indietro :P

Saggia idea... :D

Lo ScArSe
11-10-2009, 21:20
come si compila con kdevelop?

Lo ScArSe
09-11-2009, 19:10
#include <stdio.h>
#include <stdlib.h>

main()
{
float I, A;
printf("inserire il saldo di imposta");
scanf("%f", I);
if (I > 0) {
A = (I * 98) / 100;
if (A > 50) {
printf("l'acconto è %f", A);
}
}
system("PAUSE");
}

cosa c'è qui che non va? il programma parte ma quando vado ad inserire il numero mi va in errore e si apre la finestra "invio segnalazioni di errore a microsoft..."

wingman87
09-11-2009, 19:24
A scanf devi passare l'indirizzo di I, non il valore

Lo ScArSe
09-11-2009, 19:27
A scanf devi passare l'indirizzo di I, non il valore

che fesso xD... grazie 1000 ;)

Lo ScArSe
09-11-2009, 20:06
#include <stdio.h>
#include <stdlib.h>
#define b 1
main()
{
float p, c;
printf("inserisci il preso della lettera ");
scanf("%f", &p);
if (p < 50) {
c = p * 2 + b;
printf("il costo è %f", c);
}
else {
if (50 < p < 100) {
c = p * 3,50 + b;
printf("il costo è %f", c);
}
}
else {
if (p > 100) {
c = p * 4,50 + b;
printf("il costo è %f", c);
}
}
}

qui invece? forse sta sbagliata propio l'impostazione del programma, in pratica devo calcolare il costo della spedizione di una lattera sapendo che per meno di 50 grammi si paga 2€, tra 50 e 100 si paga 2,50€ e >100 si paga 4,50€, inoltre c''è il bollo fisso di 1€. p è il peso, b è il bollo e c è il costo

wingman87
09-11-2009, 21:02
Hai fatto un doppio else, non può compilare perché non si sa che ramo else prendere se non si entra nel primo if. Usa il tag code comunque, altrimenti non si capisce molto