Accedi
Ultimi argomenti attivi
Migliori postatori
ab89 | ||||
Thalionwen | ||||
Eine The Phantom | ||||
Reaulece | ||||
ya89 | ||||
root | ||||
Infernet89 | ||||
Pablomares | ||||
ruggiero98 | ||||
ieschfor |
PROGRAMMA: Convertitore data in cifra in data nominale
2 partecipanti
Pagina 1 di 1
PROGRAMMA: Convertitore data in cifra in data nominale
Della serie, i programmini scemi!!
Non importa, visto che mi sono impegnata, lo posto lo stesso. Ecco qui di seguito un programmino grazie al quale è possibile convertire una data inserita in cifra (ES: 12.4.2009) in una data scritta "a parole" (ES: 12 Aprile 2009).
Più che altro si è trattato di un esercizio per imparare ad utilizzare il ciclo switch().
Ecco il codice:
Ora però ho una domanda da fare a "chi-se-ne-intende":
1) mettiamo che qualche genio inserisca alla richiesta della cifra del giorno o del mese un numero più grande di 31 per i giorni e più grande di 12 per mesi. Come posso fare in modo che il programma riconosca l'errore e chieda all'untente di reinserire i dati fino a quando quesi non siano corretti? Ho provato ad incastrare if() e while() ma con scarsi risultati.
Aspetto commenti e consigli!
Non importa, visto che mi sono impegnata, lo posto lo stesso. Ecco qui di seguito un programmino grazie al quale è possibile convertire una data inserita in cifra (ES: 12.4.2009) in una data scritta "a parole" (ES: 12 Aprile 2009).
Più che altro si è trattato di un esercizio per imparare ad utilizzare il ciclo switch().
Ecco il codice:
- Codice:
#include<stdio.h>
main ()
{
int gg;
int mm;
int aaaa;
printf("Inserisci il GIORNO (Es: gg) in cifre da 1 a 31: ");
scanf("%d",&gg);
printf("Inserisci il MESE (Es: m) in cifre da 1 a 12: ");
scanf("%d",&mm);
printf("Inserisci l'ANNO (Es: aaaa) in cifre: ");
scanf("%d",&aaaa);
switch(mm){
case 1:printf("La data inserita corrisponde al %d Gennaio %d.\n",gg,aaaa);
break;
case 2:printf("La data inserita corrisponde al %d Febbraio %d.\n",gg,aaaa);
break;
case 3:printf("La data inserita corrisponde al %d Marzo %d.\n",gg,aaaa);
break;
case 4:printf("La data inserita corrisponde al %d Aprile %d.\n",gg,aaaa);
break;
case 5:printf("La data inserita corrisponde al %d Maggio %d.\n",gg,aaaa);
break;
case 6:printf("La data inserita corrisponde al %d Giugno %d.\n",gg,aaaa);
break;
case 7:printf("La data inserita corrisponde al %d Luglio %d.\n",gg,aaaa);
break;
case 8:printf("La data inserita corrisponde al %d Agosto %d.\n",gg,aaaa);
break;
case 9:printf("La data inserita corrisponde al %d Settembre %d.\n",gg,aaaa);
break;
case 10:printf("La data inserita corrisponde al %d Ottobre %d.\n",gg,aaaa);
break;
case 11:printf("La data inserita corrisponde al %d Novembre %d.\n",gg,aaaa);
break;
case 12:printf("La data inserita corrisponde al %d Dicembre %d.\n",gg,aaaa);
break;
}
system("PAUSE");
}
Ora però ho una domanda da fare a "chi-se-ne-intende":
1) mettiamo che qualche genio inserisca alla richiesta della cifra del giorno o del mese un numero più grande di 31 per i giorni e più grande di 12 per mesi. Come posso fare in modo che il programma riconosca l'errore e chieda all'untente di reinserire i dati fino a quando quesi non siano corretti? Ho provato ad incastrare if() e while() ma con scarsi risultati.
Aspetto commenti e consigli!
RE: PROGRAMMA: Convertitore data in cifra in data nominale
Intanto ciao
Nessuna critica da fare al programma.
Tutto sommato va bene. Forse in fatto di terminologie sarebbe giusto definire lo Switch come un costrutto più che un ciclo, ma comunque sono dettagli.
Per il problema dei valori da inserire per l'anno il mese e il giorno ti consiglierei :
do
{
//lettura valore
}
while(valore non valido);
che tradotto in codice diventa
Poi se si volesse fare un cosa fatta bene con tanto di messaggio d'errore sarebbe
Allora, il codice è semplice anche se può apparire complesso. E' che così risulta meno lineare.
Ora sotituisci la parte di inserimento dei valori del tuo programma con quanto ho scritto e dovresti avere tutti i controlli necessari
Se hai bisogno sono a disposizione Ciao
Nessuna critica da fare al programma.
Tutto sommato va bene. Forse in fatto di terminologie sarebbe giusto definire lo Switch come un costrutto più che un ciclo, ma comunque sono dettagli.
Per il problema dei valori da inserire per l'anno il mese e il giorno ti consiglierei :
- invertire il senso di inserimento perchè il numero massimo di giorni al mese varia relativamente al mese scelto;
- invece di utilizzare un ciclo while provare ad usare un ciclo do..while che in queste situazioni risulta più utile dal mio punto di vista;
do
{
//lettura valore
}
while(valore non valido);
che tradotto in codice diventa
- Codice:
do
{
printf("Inserisci il MESE (Es: m) in cifre da 1 a 12: ");
scanf("%d",&mm);
}
while(mm <= 0 || m > 12);
Poi se si volesse fare un cosa fatta bene con tanto di messaggio d'errore sarebbe
- Codice:
int r = 0;
int limiteGiorni = 0;
do
{
r++;
if (r > 1)
printf("Errore ANNO deve essere maggiore di 0 \n ");
printf("Inserisci l'ANNO (Es: aaaa) in cifre: ");
scanf("%d",&aaaa);
}while(aaaa <= 0);
r = 0;
do
{
r++;
if (r > 1)
printf("Errore il GIORNO deve essere espresso in cifre da 1 a 12\n ");
printf("Inserisci il MESE (Es: m) in cifre da 1 a 12: ");
scanf("%d",&mm);
}while(mm <= 0 || mm > 12);
//determina giorni massimi del mese
if (mm == 2)
limiteGiorni = 28 + (aaaa%4==0?(aaaa%100==0?(aaaa%400==0?1:0):1):0); //anno bisestile o meno
else if (mm <= 6)
limiteGiorni = mm % 2 == 0? 30:31;
else
limiteGiorni = mm % 2 == 0? 31:30;
r = 0;
do
{
r++;
if (r > 1)
printf("Errore il GIORNO deve essere espresso in cifre da 1 a %d: \n ", limiteGiorni);
printf("Inserisci il GIORNO (Es: gg) in cifre da 1 a %d: ",limiteGiorni);
scanf("%d",&gg);
}while(gg <= 0 || gg > limiteGiorni);
Allora, il codice è semplice anche se può apparire complesso. E' che così risulta meno lineare.
Ora sotituisci la parte di inserimento dei valori del tuo programma con quanto ho scritto e dovresti avere tutti i controlli necessari
Se hai bisogno sono a disposizione Ciao
ab89- Admin
- Numero di messaggi : 74
Età : 35
Località : Rovigo
Data d'iscrizione : 29.09.08
Scheda personaggio
PF:
Re: PROGRAMMA: Convertitore data in cifra in data nominale
Rieccomi!!
Ho finalmente modificato a mio piacimento il programma di partenza includendo nelle modifiche (chiaramente) i consigli di ab89.
Ecco il codice:
Senza tante pretese, ora il programma funziona come volevo!!
Grazie ab89!
PS. Non ho apportato tutte le modifiche che hai consigliato, se hai notato. Ho fatto una cernita. Grazie lo stesso per lo spunto!
Ho finalmente modificato a mio piacimento il programma di partenza includendo nelle modifiche (chiaramente) i consigli di ab89.
Ecco il codice:
- Codice:
#include<stdio.h>
main ()
{
int gg;
int mm;
int aaaa;
int r = 0;
do
{
printf("Inserisci il GIORNO (Es: gg) in cifre da 1 a 31: ");
scanf("%d",&gg);
}
while(gg <= 0 || gg > 31);
do
{
printf("Inserisci il MESE (Es: m) in cifre da 1 a 12: ");
scanf("%d",&mm);
}
while(mm <= 0 || mm > 12);
do
{
r++;
if (r > 1){
printf("Errore: l'ANNO deve essere maggiore di 0\n ");
}
printf("Inserisci l'ANNO (Es: aaaa) in cifre: ");
scanf("%d",&aaaa);
}
while(aaaa <= 0);
r = 0;
switch(mm){
case 1:printf("La data inserita corrisponde al %d Gennaio %d.\n",gg,aaaa); break;
case 2:printf("La data inserita corrisponde al %d Febbraio %d.\n",gg,aaaa); break;
case 3:printf("La data inserita corrisponde al %d Marzo %d.\n",gg,aaaa); break;
case 4:printf("La data inserita corrisponde al %d Aprile %d.\n",gg,aaaa); break;
case 5:printf("La data inserita corrisponde al %d Maggio %d.\n",gg,aaaa); break;
case 6:printf("La data inserita corrisponde al %d Giugno %d.\n",gg,aaaa); break;
case 7:printf("La data inserita corrisponde al %d Luglio %d.\n",gg,aaaa); break;
case 8:printf("La data inserita corrisponde al %d Agosto %d.\n",gg,aaaa); break;
case 9:printf("La data inserita corrisponde al %d Settembre %d.\n",gg,aaaa); break;
case 10:printf("La data inserita corrisponde al %d Ottobre %d.\n",gg,aaaa); break;
case 11:printf("La data inserita corrisponde al %d Novembre %d.\n",gg,aaaa); break;
case 12:printf("La data inserita corrisponde al %d Dicembre %d.\n",gg,aaaa); break;
}
system("PAUSE");
}
Senza tante pretese, ora il programma funziona come volevo!!
Grazie ab89!
PS. Non ho apportato tutte le modifiche che hai consigliato, se hai notato. Ho fatto una cernita. Grazie lo stesso per lo spunto!
Re: PROGRAMMA: Convertitore data in cifra in data nominale
Felice di esserti stato di aiuto
ab89- Admin
- Numero di messaggi : 74
Età : 35
Località : Rovigo
Data d'iscrizione : 29.09.08
Scheda personaggio
PF:
Argomenti simili
» aiuto in programma con if
» PROGRAMMA : Realizzare un timer
» PROGRAMMA: BINARY CODE
» PROGRAMMA: Vediamo se il numero N è pari o dispari
» PROGRAMMA Cercare una stringa in un File
» PROGRAMMA : Realizzare un timer
» PROGRAMMA: BINARY CODE
» PROGRAMMA: Vediamo se il numero N è pari o dispari
» PROGRAMMA Cercare una stringa in un File
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.
Dom Giu 02, 2013 4:30 pm Da ruggiero98
» problema con la funzione SE aiutoooo x favore?????
Dom Giu 02, 2013 4:18 pm Da ruggiero98
» aiuto in programma con if
Dom Mag 26, 2013 5:39 pm Da ruggiero98
» CALCOLO PERCENTUALE IN C
Sab Apr 20, 2013 8:22 pm Da ruggiero98
» Costruire un temporizzatore software per accensione luci a led
Lun Mar 25, 2013 2:34 pm Da Cristina Shady
» Ciao a tutti!
Gio Mar 22, 2012 4:19 am Da cosmos91
» Virtualbox VS le periferiche USB
Mar Apr 06, 2010 1:49 pm Da dandeciani
» PROGRAMMA: BINARY CODE
Mar Dic 23, 2008 7:28 pm Da Thalionwen
» saluti a tutti
Mar Dic 23, 2008 7:12 pm Da Thalionwen
» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Prima Parte]
Sab Nov 29, 2008 11:44 am Da ya89
» un semplice ciao
Sab Nov 29, 2008 11:38 am Da ya89
» Aiuto per alice 7 mega
Ven Nov 14, 2008 4:03 pm Da root
» FORUM: I nuovi banner
Ven Nov 14, 2008 2:48 pm Da Thalionwen
» Zooming Ricorsivo, questo sconosciuto.
Ven Nov 14, 2008 2:43 pm Da Thalionwen
» GUIDA : LEZIONE 4 : UTILIZZARE GLI ARRAY IN C#
Ven Nov 14, 2008 1:54 pm Da ab89
» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Terza e Ultima Parte]
Ven Nov 14, 2008 12:41 am Da ab89
» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Seconda Parte]
Mer Nov 12, 2008 12:59 am Da ab89
» [PS2] Dark Cloud
Mar Nov 11, 2008 6:50 pm Da ab89
» [PC] Sacred 2
Lun Nov 10, 2008 10:49 pm Da ab89
» GUIDA : CAP 1 LEZIONE 3 INTRODUZIONE AGLI ARRAY
Lun Nov 10, 2008 1:37 pm Da ab89