Mi controllate se questo codice è esatto
In pratica devo trovare il minimo tra tre interi
#include<iostream> using namespace std; int a,b,c,min; int main() { cout << "inserisci tre numeri interi\n"; cout<<"primo:\n"; cin >> a; cout<<"secondo:\n"; cin >> b; cout<<"terzo:\n"; cin >> c; if (a<b) { if (a<c) min=a; } [else min=c]; else if (b<c) min=b; else min=c; } cout<< min; system("pause"); return 0; }
Risposte
vediamo un po' 
perchè le dichiari globali?
è ok nelle condizioni, ma non mi piace molta la strutturazione che hai fatto dello scoping... es:
non usare cose strane per scrivere codice, se sei alle prime armi utilizza strutture semplici (questa io non lo ho mai vista)
usi DEV-C++? se passa di qui apatriarca ti mangia
EDIT:
corretto svarione momentaneo

"Mifert4":
In pratica devo trovare il minimo tra tre interi
#include<iostream> using namespace std; int a,b,c,min;
perchè le dichiari globali?
if (a<b) { if (a<c) min=a; } [else min=c]; else if (b<c) min=b; else min=c; }
è ok nelle condizioni, ma non mi piace molta la strutturazione che hai fatto dello scoping... es:
[else min=c];
non usare cose strane per scrivere codice, se sei alle prime armi utilizza strutture semplici (questa io non lo ho mai vista)
system("pause"); return 0; }
usi DEV-C++? se passa di qui apatriarca ti mangia

EDIT:
corretto svarione momentaneo

perchè le dichiari globali?
in che senso,che significa globali e perchè non vanno bene?
se due numeri sono uguali allo stato attuale cosa pensi accada?
si,mi rendo conto che il programma non è perfetto,perchè se inserissi 2 o tre numeri reali non saprebbe che fare,ma non è importante questo per me,quanto il capire la struttura generale dell'esercizio.
un suggerimento è la definizione di "scoping" in questo caso delle condizioni
cioè...?
usi DEV-C++?
no,scrivo su gedit e poi compilo da terminale con g++(uso ubuntu).
Beh,come puoi intuire è uno dei primi esercizi che svolgo di programmazione,fino a una settimana fa non sapevo nemmeno cosa fosse l'informatica,e non avevo idea che un sofware si creasse "scrivendo"...

"Mifert4":perchè le dichiari globali?
in che senso,che significa globali e perchè non vanno bene?
ok, per il momento va bene così penso che lo vedrai (ad un corso?)
Solo per la tua intuizione:
- dichiarazione globale:
int a; int main(){ ... }
- dichiarazione locale:
int main(){ int a; }
se due numeri sono uguali allo stato attuale cosa pensi accada?
si,mi rendo conto che il programma non è perfetto,perchè se inserissi 2 o tre numeri reali non saprebbe che fare,ma non è importante questo per me,quanto il capire la struttura generale dell'esercizio.
un suggerimento è la definizione di "scoping" in questo caso delle condizioni
Allora te metti delle parentesi {} che sono lo scoping, cioè racchiudi il codice. Lascia stare lo vedrai anche questo. Intanto concentriamoci solo sul programma

tolgo
[else min=c];che mi da fastidio

if (a<b) { if (a<c) min=a; } else min=c; else if (b<c) min=b; else min=c; }
in questo momento non dovrebbe nemmeno essere compilabile, perchè non c'è corrispondenza delle parentesi graffe (ricordati che se ne apri una devi anche chiuderla). Basta aprirne una e spostarne un'altra:
if (a<b) { if (a<c) min=a; else min=c; } else { if (b<c) min=b; else min=c; }
per farlo bene avresti potuto scriver così:
if (a<b) { if (a<c){ min=a; } else { min=c; } } else { if (b<c) { min=b; } else { min=c; } }
ma diventa illeggibile

if (a<b) { if (a<c){ min=a; } else { min=c; } } else if (b<c) { min=b; } else { min=c; }
si può scrivere in vari modi come vedi

ti è chiaro?
usi DEV-C++?
no,scrivo su gedit e poi compilo da terminale con g++(uso ubuntu).
Beh,come puoi intuire è uno dei primi esercizi che svolgo di programmazione,fino a una settimana fa non sapevo nemmeno cosa fosse l'informatica...
allora system(PAUSE) è INUTILE...
non preoccuparti utti partono da qualche parte

Il tag corretto per inserire delle citazioni è quote e non code. Per questa volta ti ho corretto io stesso il post.
Elimina immediatamente quella riga dal tuo codice...

Ma non ti scrive qualcosa tipo "Comando sconosciuto" sul terminale? Lo scopo di system è quello di richiamare un qualche comando da terminale mettendo nel frattempo in pausa il processo. In Windows "PAUSE" stampa qualcosa come "Premi un tasto per terminare..." e aspetta la pressione di un tasto prima di chiudersi. In Linux questo comando NON esiste e non ha quindi alcun senso inserire quella funzione nel tuo codice.
Odio i professori che insegnano queste oscenità..
EDIT: Per quanto riguarda il problema, ci sono troppi if. È infatti sufficiente ricorrere all'identità: \(\min (a, b, c) = \min( \min(a, b), c) \). È cioè sufficiente scrivere:
Nota che il ramo else del secondo if non è necessario.
no,scrivo su gedit e poi compilo da terminale con g++(uso ubuntu).
Beh,come puoi intuire è uno dei primi esercizi che svolgo di programmazione,fino a una settimana fa non sapevo nemmeno cosa fosse l'informatica,e non avevo idea che un sofware si creasse "scrivendo"...![]()






Ma non ti scrive qualcosa tipo "Comando sconosciuto" sul terminale? Lo scopo di system è quello di richiamare un qualche comando da terminale mettendo nel frattempo in pausa il processo. In Windows "PAUSE" stampa qualcosa come "Premi un tasto per terminare..." e aspetta la pressione di un tasto prima di chiudersi. In Linux questo comando NON esiste e non ha quindi alcun senso inserire quella funzione nel tuo codice.

EDIT: Per quanto riguarda il problema, ci sono troppi if. È infatti sufficiente ricorrere all'identità: \(\min (a, b, c) = \min( \min(a, b), c) \). È cioè sufficiente scrivere:
int min; if (a < b) min = a; else min = b; if (min > c) min = c;
Nota che il ramo else del secondo if non è necessario.
Molto elegante!
"Piz":
Molto elegante!
Si infatti,che differenza fra la mia versione contorta e questa.Ma per arrivare a questo punto ci vogliono anni di esperienza,vero?