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
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;
}
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("...")
;)
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...
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?
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;
}
#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);
}
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);
}
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???
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)...
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?
Originariamente inviato da Luc@s
Ma tu cm lo hai imparato?
Facendo anche prove come quella...
Originariamente inviato da cionci
Facendo anche prove come quella...
quindi nn sono pazzo a farle :eek:
Prova a fare una classe che gestisce un albero e stampane l'output facendo l'overloading del'operatore <<... E' interessante...
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:(
Originariamente inviato da Luc@s
Sto capendo le liste..........gli alberi sono troppo avanti:(
C'è poca differenza...
Originariamente inviato da cionci
C'è poca differenza...
se ti posto un cod ..........mi dici se ho capito le liste????
Magari in un altro thread...
scusate x l'OT :(
Cmq ho postato qui (http://forum.hwupgrade.it/showthread.php?s=&threadid=540221)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.