[C] programmino sulla somma.
Ho provato un programmino semplice, ma ahimè non mi riesco ad eseguirlo! =_=
Ve lo riporto:
quando lo compilo con
Ve lo riporto:
#include <stdio.h> int main() { int a; int b; scanf("%d" &a); printf("%d", a); scanf("%d", &b); printf("%d", b); int c; c = a + b; printf("\n la somma calcolata: %d", c); return 0; }
quando lo compilo con
./sommami libera la shell, senza che il programmino funzioni, anche se con
gccnon mi da nessun errore. Dove è lo sbaglio? -.-'
Risposte
Il programmino sembra corretto ma non ho capito quanto segue:
"clever":
quando lo compilo con./sommami libera la shell, senza che il programmino funzioni, anche se congccnon mi da nessun errore. Dove è lo sbaglio? -.-'
in C di solito le dichiarazioni di variabili sono permesse solo all'inzio di una funzione, anche se non è sempre vero, perciò
non va bene, fai un unico gruppo di dichiarazioni in cima, è buona norma fare così.
poi guarda bene, manca una virgola nel primo scanf
Poi consiglio, per compilare usa
printf("%d", b); int c; c = a + b;
non va bene, fai un unico gruppo di dichiarazioni in cima, è buona norma fare così.
poi guarda bene, manca una virgola nel primo scanf

Poi consiglio, per compilare usa
gcc -Wallche ti dirà anche i warning.
"ham_burst":
Poi consiglio, per compilare usagcc -Wallche ti dirà anche i warning.
Cioè compilarlo cosi:
gcc -Wall somma.c -o somma
non mi da alcun errore.
Adesso l'ho aggiustato come hai detto tu.
#include <stdio.h> int main() { int a; int b; int c; scanf("%d" &a); printf("%d", a); scanf("%d", &b); printf("%d", b); c = a + b; printf("\n la somma calcolata: %d", c); return 0; }
non mi da nessun warning, ma non funziona neppure ora

Come già ti aveva suggerito ham_burst
a scanf("%d" &a); manca la virgola dopo il "%d".
a scanf("%d" &a); manca la virgola dopo il "%d".
"eugenio.amitrano":
Come già ti aveva suggerito ham_burst
a scanf("%d" &a); manca la virgola dopo il "%d".
Corretta, corretta...ma nulla

a = numero intero b = numero intero c = a + b
no è un consiglio compilare con quel parametro, molti errori sono nascosti se non si usa, nel tuo caso vuol dire che gcc non ha rilevato nulla.
Non hai capito dove ti ho segnalato, all'interno dello scanf, cioè:
consiglio metti il rientro di carrello "\n" alla fine del printf, così avrai da inserire il testo su ogni linea, cioé:
così non dovresti avere più problemi.
@eugenio.amitrano: sorry abbiamo scritto insieme
Non hai capito dove ti ho segnalato, all'interno dello scanf, cioè:
sbagliato: scanf("%d" &a); corretto: scanf("%d", &a);
consiglio metti il rientro di carrello "\n" alla fine del printf, così avrai da inserire il testo su ogni linea, cioé:
printf("%d\n", a);
così non dovresti avere più problemi.

@eugenio.amitrano: sorry abbiamo scritto insieme

Ho 'modificato' anche quello, ho aggiunto la libreria
Sto vedendo svariati esempi anche su you tube, e
<math.h> sperando in qualche miglioramento ma niente, libera la shell.
gccnon riporta errori, e quando compilo uso
./somma.
Sto vedendo svariati esempi anche su you tube, e
int cnon lo scrivono all'inizio ma dopo. :S Sembrava un programmino 'scemo' e invece...
per la dichiarazione delle variabili all'inizio è una "coding rules", forse quei video sono di esempio. Ma è una regola che ti consiglio di seguire, è una questione di ingegneria del software, vuoi mettere dichiarare dove si vuole una variabile in 10000000000000 di linee...ti faccio immaginare cosa capiti 
ma non ti funziona ancora?
per il tuo codice lo ho compilato ora io, questo è il tuo codice:
non mi da nessun problema e da esattamente la somma.
inserire la libreria math.h serve per utilizzare funzioni matematiche in questo caso è inutile.
cosa intendi con "libera la shell", e domanda idiota: sei in un Linux o in qualche port?

ma non ti funziona ancora?
per il tuo codice lo ho compilato ora io, questo è il tuo codice:
#include <stdio.h> int main() { int a; int b; int c; scanf("%d", &a); printf("%d\n", a); scanf("%d", &b); printf("%d\n", b); c = a + b; printf("\n la somma calcolata: %d", c); return 0; }
non mi da nessun problema e da esattamente la somma.
inserire la libreria math.h serve per utilizzare funzioni matematiche in questo caso è inutile.
cosa intendi con "libera la shell", e domanda idiota: sei in un Linux o in qualche port?
Scusa qual'è il problema?!
Appena lanciato il programma è in attesa che tu inserisca un input, in particolare un intero...l'ho appena eseguito con successo senza alcun problema
Appena lanciato il programma è in attesa che tu inserisca un input, in particolare un intero...l'ho appena eseguito con successo senza alcun problema

xD che niubbo ignorante che sono! Giusto, quello attende che io scriva qualcosa!
Ora ho un' altra domanda da porre: perchè succede una cosa tipo:
cioè ripete due volte ciò che metto? :S
P.S math.h lo tolgo si?
Ora ho un' altra domanda da porre: perchè succede una cosa tipo:
5 5 7 7 la somma calcolata: 12
cioè ripete due volte ciò che metto? :S
P.S math.h lo tolgo si?
scusa se mi faccio na risata 
la doppia stampa c'è perchè prima scrivi il numero te, il programma lo legge, e poi lo stampa.
math.h lo includi se utilizzi una funzione che è implementata li dentro tipo pow(), abs(), ecc

la doppia stampa c'è perchè prima scrivi il numero te, il programma lo legge, e poi lo stampa.
math.h lo includi se utilizzi una funzione che è implementata li dentro tipo pow(), abs(), ecc

"ham_burst":
scusa se mi faccio na risata
la doppia stampa c'è perchè prima scrivi il numero te, il programma lo legge, e poi lo stampa.
Ah non ti preoccupare! xD la risata me la faccio prima io! ^^
Non so non c'è un modo più pulito per non far comparire due volte lo stesso numero?

non preoccuparti tutti devono iniziare da qualche parte 
bhe semplicemente non lo stampi....
puoi fare un qulcosa di più interattivo, tipo:
praticamente catturi il valore e stampi dopo il risultato.
Piccola nota (solo per darti un altro spunto): nella printf puoi inserire anche funzioni tipo

bhe semplicemente non lo stampi....
puoi fare un qulcosa di più interattivo, tipo:
printf("Inserisci il primo addendo: "); scanf("%d,&a); printf("Inserisci il secondo addendo: "); scanf("%d,&b);
praticamente catturi il valore e stampi dopo il risultato.
Piccola nota (solo per darti un altro spunto): nella printf puoi inserire anche funzioni tipo
printf("risultato somma: %d\n", (a+b));
Alcune domande:
Scrivere
Perchè si scrive nel
Scrivere
scanf("%d,&b);è scrivere
scanf("%d, &b);? Cioè quello spazio fa la differenza?
Perchè si scrive nel
printf("risultato somma: %d\n", (a+b));
(a+b)e non
c?
gli spazi non fanno nessunissima differenza, anzi è meglio non tenere tutto allineato a destra o sinistra, ma fare una bella intendazione. solo il rientro di carrello fa degenerare il compilatore (il parser).
ci scommettevo che ti facevo confondere, era solo una cosa in più. Te "c" puoi bennissimo metterlo, era solo per dirti che nel printf puoi inserire non solo variabili, ma anche richiamare funzioni direttamente.
Ma lascia stare, aspetta di vedere meglio questi argomenti, intanto concentrati sulle cose basilari.
PS: stai seguendo un corso, o sei autonomo?
printf("risultato somma: %d\n", (a+b));
ci scommettevo che ti facevo confondere, era solo una cosa in più. Te "c" puoi bennissimo metterlo, era solo per dirti che nel printf puoi inserire non solo variabili, ma anche richiamare funzioni direttamente.
Ma lascia stare, aspetta di vedere meglio questi argomenti, intanto concentrati sulle cose basilari.
PS: stai seguendo un corso, o sei autonomo?
Ah ecco, perchè il prof a lezione ha detto che c'è differenza nello scrivere per esemèpio:
Quello di scrivere nel printf
Sto seguendo il corso di informatica generale per programmare in C. Sto facendo i primi esercizi, per capire bene il meccanismo. Se faccio domande 'banali', mi scuso a priori.
Spero di imparare tante cose per programmare 'decentemente'.
c = a + be
c=a+b
Quello di scrivere nel printf
(a+b)è più una finezza, che il prof non ci ha fatto presente xD
Sto seguendo il corso di informatica generale per programmare in C. Sto facendo i primi esercizi, per capire bene il meccanismo. Se faccio domande 'banali', mi scuso a priori.

non c'è differenza semantica ne sintattica tra i due casi. Solo una differenza visiva, se aggiungi operatori o variabili avere più spazi, con parentizzazioni messe bene, aiuta molto a non commettere errori, e a creare bug.
(a+b) non è tanto una finezza è un altro modo per fare la stessa cosa, invece che salvare il valore in una nuova locazione, fai un trasferimento diretto, lo vedrai comunque.
In C ci (che ironia
) sono molti modi per fare le stesse cose, è una particolarità (negativa alle volte) di questo linguaggio.
non preoccuparti se chiedi cose banali, questo forum esiste proprio per aiutare tutti, senza guardare il livello di conoscenze. Alla prossima
(a+b) non è tanto una finezza è un altro modo per fare la stessa cosa, invece che salvare il valore in una nuova locazione, fai un trasferimento diretto, lo vedrai comunque.
In C ci (che ironia

non preoccuparti se chiedi cose banali, questo forum esiste proprio per aiutare tutti, senza guardare il livello di conoscenze. Alla prossima
