PDA

Visualizza la versione completa : [C] Aiuto rubrica in C


klavier
13-01-2010, 10:01
Salve ragazzi sono nuovo e stavo cercando una mano.
Sto creando una rubrica in c di cui posto il sorgente

#include <stdio.h>
#include <stdlib.h>
struct data{
int giorno;
int mese;
int anno;
};
struct indirizzo{
char via[25];
char citta[25];
char provincia[25];
char nazione[25];
char cap[6];
};
struct persona{
char nome[25];
char cognome[25];
struct data data_nascita;
struct indirizzo ind;
char sesso;
};
int mesi[]={31,28,31,30,31,30,31,31,30,31,30,31};
struct persona pers[50];
int controllo_nom();
int controllo_data(int, int, int);
char controllo_sesso();
void inserimento(int);
int main(int argc, char *argv[])
{


int nom;

nom=controllo_nom();
inserimento(nom);

system("PAUSE");
return 0;
}
int controllo_nom(){
int a,nom;
do{
printf("Quanti nominativi inserire? ");
scanf("%d",&nom);
if (nom>0 && nom<=50){
a=1;
}
else{
system("CLS");
printf("Inserire un numero compreso tra 0 e 50\n");
a=0;
}
}while(a!=1);
return nom;
}
int controllo_data(int g, int m, int a){
float resto;
resto=a%4;
if(resto==0)
mesi[1]=29;
if(m>0 && m<=12){
if(m==4 || m==6 || m==9 || m==11)
if(g>0 && g<=30 && a<=2009){
return 1;
}
else{
printf("Inserire una data valida\n");
return 0;
}
if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
if(g>0 && g<=31 && a<=2009){
return 1;
}
else{
printf("Inserire una data valida\n");
return 0;
}
if(m==2)
if(g>0 && g<=mesi[1] && a<=2009){
return 1;
}
else{
printf("Inserire una data valida\n");
return 0;
}
}
else{
printf("Inserire una data valida\n");
return 0;
}
}

void inserimento(int n){
int i,tmp,tem;
for(i=0;i<n;i++){
printf("Inserisci %d nome: ",i+1);
scanf("%s",&pers[i].nome);
printf("\n");
printf("Inserisci %d cognome: ",i+1);
scanf("%s",&pers[i].cognome);
printf("\n");
//printf("Inserisci %d sesso m o f: ",i+1);
//scanf("%c",&pers[i].sesso);
pers[i].sesso=controllo_sesso();

do{
printf("Inserisci %d giorno nascita gg: ",i+1);
scanf("%d",&pers[i].data_nascita.giorno);
printf("\n");
printf("Inserisci %d mese nascita mm: ",i+1);
scanf("%d",&pers[i].data_nascita.mese);
printf("\n");
printf("Inserisci %d anno nascita aaaa: ",i+1);
scanf("%d",&pers[i].data_nascita.anno);
printf("\n");
tmp=controllo_data(pers[i].data_nascita.giorno,pers[i].data_nascita.mese,pers[i].data_nascita.anno);
}while(tmp!=1);

printf("Inserisci %d indirizzo di residenza: ",i+1);
fflush(stdin);
gets(pers[i].ind.via);
printf("\n");
printf("Inserisci %d citta' di residenza: ",i+1);
gets(pers[i].ind.citta);
printf("\n");
printf("Inserisci %d provincia di residenza: ",i+1);
gets(pers[i].ind.provincia);
printf("\n");
printf("Inserisci %d nazione di residenza: ",i+1);
scanf("%s",&pers[i].ind.nazione);
printf("\n");
//pers[i].ind.cap=controllo_cap(i);
//do{
printf("Inserisci %d C.A.P. di residenza: ",i+1);
scanf("%s",&pers[i].ind.cap);
printf("\n");
//}while(pers[i].ind.cap[4]=='\0');
}
printf("%s",pers[i].ind.cap);
}
char controllo_sesso(){
char s;
printf("Digitare il sesso: ");
scanf("\n%c",&s);
while (s!='m' && s!='f'){
printf("Digitare il sesso: ");
scanf("\n%c",&s);
}
return s;
}


Sto cercando di implementare un controllo sul C.A.P e magari implementare anche una rubrica.
C' qualcuno che possa darmi una mano?

oregon
13-01-2010, 10:30
Devi fare una domanda precisa ... chiedere "una mano" troppo generico.

klavier
13-01-2010, 10:48
Vorrei implementare un controllo sulla lunghezza del CAP, se il cap inserito di soltanto 4 numeri allora mi deve dare l'errore la stessa cosa se di 6. in pratica se lo prende per buono solo se di 5.

Loading