stevemb Inviato 3 Febbraio 2010 Segnala Condividi Inviato 3 Febbraio 2010 #include <stdio.h> #include <stdlib.h> #define dim 20 char nome[dim],cognome[dim],valmes,nomecodice[dim],cognomecodice[dim]; int i,j,x,a,data[4],mese,sesso,giorno,valdata; int main() { printf("\tBENVENUTO NEL PROGRAMMA PER CALCOLARE IL TUO CODICE FISCALE\n"); printf("inserisci il tuo nome(in maiuscolo)\n"); scanf("%s",&nome); for(i=0;i<dim;i++) { if(nome[i]!='\0') j++; else j=j; } printf("inserisci il tuo cognome(in maiuscolo)\n"); scanf("%s",&cognome); for(i=0;i<dim;i++) { if(cognome[i]!='\0') x++; else x=x; } printf("inserisci il tuo giorno di nascita\n"); scanf("%d",&giorno); printf("sei maschio(premi 1) o femmina(premi 2)?\n"); scanf("%d",&sesso); switch(sesso){ case 1: { valdata=giorno; break;} case 2: { valdata=giorno+40; break;} } printf("inserisci la tuo anno di nascita (4 cifre);a ognicifra premi invio\n"); for(i=0;i<4;i++){scanf("%d",&data[i]);} printf("inserisci il tuo mese di nascita(2 cifre)\n"); scanf("%d",&mese); switch(mese){ case 1: { valmes='A'; break;} case 2: { valmes='B'; break;} case 3: { valmes='C'; break;} case 4: { valmes='D'; break;} case 5: { valmes='E'; break;} case 6: { valmes='H'; break;} case 7: { valmes='L'; break;} case 8: { valmes='M'; break;} case 9: { valmes='P'; break;} case 10: { valmes='R'; break;} case 11: { valmes='S'; break;} case 12: { valmes='T'; break;} } printf("nome"); for(i=0;i<=j;i++) { if(nome[i]!=65&&nome[i]!=69&&nome[i]!=73&&nome[i]!=79&&nome[i]!=85) {printf("%c",nome[i]); nomecodice[i]=nome[i]; } if(nome[i]==65&&nome[i]==69&&nome[i]==73&&nome[i]==79&&nome[i]==85) {} } printf("\ncognome\t"); for (i=0;i<=x;i++) { if(cognome[i]!=65&&cognome[i]!=69&&cognome[i]!=73&&cognome[i]!=79&&cognome[i]!=85) {printf("%c",cognome[i]); cognomecodice[i]=cognome[i];} if(nome[i]==65&&cognome[i]==69&&cognome[i]==73&&cognome[i]==79&&cognome[i]==85) {printf("");}} printf ("\n\nnomecodice\t\t"); for(i=0;i<j;i++){printf("%c",nomecodice[i]);} printf("\nfine programma\n\nIL TUO CODICE FISCALE:\t"); //inizio stampa codice fiscale //cognome for (i=0; i<3; i++) { printf("%c",cognomecodice[i]); } //nome for(i=0;i<3;i++) {printf("%c",nomecodice[i]);} //data for(i=2;i<4;i++) printf("%d",data[i]); //mese printf("%c",valmes); //giorno printf("%d",valdata); } il problema è che nella stampa finale mi prende sempre una lettera in meno uff Link al commento Condividi su altri siti Altre opzioni di condivisione...
stevemb Inviato 3 Febbraio 2010 Autore Segnala Condividi Inviato 3 Febbraio 2010 nessuno? Link al commento Condividi su altri siti Altre opzioni di condivisione...
Vik89 Inviato 3 Febbraio 2010 Segnala Condividi Inviato 3 Febbraio 2010 Puoi farmi un esempio di caso d'uso? Il codice è poco leggibile quindi non riesco a capire che problema hai... dimmi un esempio dei vari input, e l'output che ti dà / che vorresti avere Link al commento Condividi su altri siti Altre opzioni di condivisione...
stevemb Inviato 3 Febbraio 2010 Autore Segnala Condividi Inviato 3 Febbraio 2010 ok io gli do nome,cognome,data di nascita(anno-giorno-mese),sesso.(tutti con input separati) poi io devo dirgli di prendere solo le consonanti(quindi levare le vocali) e poi stampare solo le prime 3,solo che a me,se ne servono 3 ne stampa 2,se ce n'è 2,ne stampa 1,non capisco il perchè.(l'errore dev'essere nelle ultime 10-20 righe,sopra è tutto giusto) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Vik89 Inviato 4 Febbraio 2010 Segnala Condividi Inviato 4 Febbraio 2010 Ok vedi che nei cicli for in cui tu vorresti "saltare" le vocali hai sbagliato la condizione booleana... volevi scrivere la negata di quella in cui cerchi le consonanti ma per la legge di De Morgan : ! (X!=a && X!=b ...) (ovvero la negata della condizione) = (X==a || X==b ...) In pratica devi mettere || (OR) e non && (AND) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Vik89 Inviato 4 Febbraio 2010 Segnala Condividi Inviato 4 Febbraio 2010 che poi non sono sicuro che comunque si possa sempre calcolare così... ci sono nomi che hanno due consonanti, come Agata, Fabio, Ugo, ecc.. lì come fai? Agata = GTA ecc. Oppure viceversa, io mi chiamo Vittorio (VTT?) Ma il mio codice fiscale è VTR insomma bisogna un attimino rivedere l'algoritmo (a meno che non è solo per esercizio e non ti importa che funzioni) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.