PDA

View Full Version : mi serve un aiutino sul C


fromillo
15-10-2003, 19:56
Ciao a tutti

Sto studiano C e sono alle prime armi.

Ho così scritto per allenarmi questo semlice programmino

#include <stdio.h>

main()
{
int annasc, etat;
printf("inscerisci il tuo anno di nascita e premi invio \n");
scanf("%d", &annasc);
etat = 2003 - annasc;
etat > 40 ? printf("hai superato gli anta, avendo %d anni \n", etat) : ("Hai ancora parecchi anni di vita davanti a te, avendo solo %d anni /n", etat);




}

Come potete vedere qualcosa non va.

+ Precisamente io volevo che a seconda dell' eta di una persona venisse visualizzato un messaggio differente.

Come posso fare visto che così non va?

Help Ciao

OrizoN
15-10-2003, 20:06
puoi usare switch in questo modo:


#include <stdio.h>

main()
{
int annasc, etat;
printf("inscerisci il tuo anno di nascita e premi invio \n");
scanf("%d", &annasc);
etat = 2003 - annasc;
switch (etat) {
case 'etat > 60':
printf("A mazza quanto sei vecchio!\n);
break;
case 'etat > 50':
printf("Sei nel mezzo del cammin della tua vita...\n");
break;
case 'etat >20':
printf("Sei ancora giovanissimo!, hai l'intera vita d'avanti\n");
break;
}
return 0;
}

giova22
15-10-2003, 20:22
Grazie mille

Ma mi puoi spiegare perchè come ho scritto io non va?

E cosa vuol dire break?

Puoi spiegarmi brevemente come hai fatto tu?

Scoperchiatore
15-10-2003, 21:23
Originariamente inviato da giova22
Grazie mille

Ma mi puoi spiegare perchè come ho scritto io non va?

E cosa vuol dire break?

Puoi spiegarmi brevemente come hai fatto tu?

ha usato il case, struttura a scelta multipla....

quello che hai fatto tu sembra corretto prova a mettere l'if invece che il ?....

tipo if (eta>40) printf(".....")
else printf("...")

;)

cionci
15-10-2003, 22:18
Originariamente inviato da OrizoN
puoi usare switch in questo modo:


#include <stdio.h>

main()
{
int annasc, etat;
printf("inscerisci il tuo anno di nascita e premi invio \n");
scanf("%d", &annasc);
etat = 2003 - annasc;
switch (etat) {
case 'etat > 60':
printf("A mazza quanto sei vecchio!\n);
break;
case 'etat > 50':
printf("Sei nel mezzo del cammin della tua vita...\n");
break;
case 'etat >20':
printf("Sei ancora giovanissimo!, hai l'intera vita d'avanti\n");
break;
}
return 0;
}


Lo switch non funziona esattamente così :)

switch(espressione)
{
case valore1:
statement;
case valore1:
statement;
....
case valoreN:
statement;
default:
statement;
}

break interrompe il flusso di esecuzione corrente e lo riprende dopo la fine del blocco dell'istruzione di controllo più interna...

OrizoN
15-10-2003, 22:29
Originariamente inviato da cionci
Lo switch non funziona esattamente così :)

switch(espressione)
{
case valore1:
statement;
case valore1:
statement;
....
case valoreN:
statement;
default:
statement;
}


Anche io alle prime armi, mi spieghi cosa sbaglio?

cionci
15-10-2003, 23:28
int a;
scanf("%d", &a)
switch(a)
{
case 2:
printf("Hai inserito due, stamperò anche uno");
case 1:
printf("Hai inserito uno");
break;
case 3:
printf("Hai inserito tre");
break;
default:
printf("Hai inserito un numero diverso da uno, due e tre");
break;
}

Luc@s
16-10-2003, 06:17
#include <stdio.h>

main()
{
int annasc, etat;
printf("inscerisci il tuo anno di nascita e premi invio \n");
scanf("%d", &annasc);
etat = 2003 - annasc;
char *msg = (etat > 40) ? printf("hai superato gli anta, avendo %d anni \n", etat) : ("Hai ancora parecchi anni di vita davanti a te, avendo solo %d anni /n", etat);
printf("%s", msg);

}

cionci
16-10-2003, 08:08
Grande Luc@s :)
Comunque non importava l'assegnazione a char *msg e ti manca un printf sulla stringa in fondo... Comunque è più semplice così:

#include <stdio.h>

main()
{
int annasc, etat;
printf("inscerisci il tuo anno di nascita e premi invio \n");
scanf("%d", &annasc);
etat = 2003 - annasc;
printf((etat > 40) ? "hai superato gli anta, avendo %d anni \n" : "Hai ancora parecchi anni di vita davanti a te, avendo solo %d anni \n", etat);

}

Luc@s
16-10-2003, 14:32
Originariamente inviato da cionci
Grande Luc@s :)

Tnk!
Cmq sto rivedendo l' I/O del C e penso che utilizzero quello anche in C++...............faccio male???

cionci
16-10-2003, 14:40
Ovviamente sì :)
Ci sono motle cose utili nell'I/O del C++...utili soprattutto con le classi... Ad esempio tante volte mi è servito ridefinire l'operatore <<... Certo in molte situazioni l'I/O del C è comodo, ma è meglio avere pazienza in quelle situazioni e abituarsi a quello del C++ (io ci ho messo tanto per abituarmi)...

Luc@s
16-10-2003, 14:42
Ma il maximo che ho fatto è stato questo:


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
#define MAX_BUF 2048
#define SUCCES 0
#define ER -1

using namespace std;
int copy(char src, char dst);

int main(int argc, char *argv[])
{
char buf;
ifstream in_file;
ofstream out_file;
in_file.open(argv[1]);
out_file.open(argv[2]);
while((!in_file.eof()) && (in_file.get(buf))){
out_file.put(buf);
}
system("PAUSE");
return SUCCES;
}



Ma tu cm lo hai imparato?

cionci
16-10-2003, 14:45
Originariamente inviato da Luc@s
Ma tu cm lo hai imparato?
Facendo anche prove come quella...

Luc@s
16-10-2003, 14:47
Originariamente inviato da cionci
Facendo anche prove come quella...

quindi nn sono pazzo a farle :eek:

cionci
16-10-2003, 14:47
Prova a fare una classe che gestisce un albero e stampane l'output facendo l'overloading del'operatore <<... E' interessante...

Luc@s
16-10-2003, 15:38
Originariamente inviato da cionci
Prova a fare una classe che gestisce un albero e stampane l'output facendo l'overloading del'operatore <<... E' interessante...

Sto capendo le liste..........gli alberi sono troppo avanti:(

cionci
16-10-2003, 15:43
Originariamente inviato da Luc@s
Sto capendo le liste..........gli alberi sono troppo avanti:(
C'è poca differenza...

Luc@s
16-10-2003, 15:43
Originariamente inviato da cionci
C'è poca differenza...

se ti posto un cod ..........mi dici se ho capito le liste????

cionci
16-10-2003, 15:56
Magari in un altro thread...

Luc@s
16-10-2003, 16:03
scusate x l'OT :(
Cmq ho postato qui (http://forum.hwupgrade.it/showthread.php?s=&threadid=540221)