ho modificato alcune cose come tu mi hai detto:
codice:
#include <stdlib.h>#include <string.h>
#define MAX 100
/*Variabili Globali*/
typedef struct recRubrica
{
char Cognome[10];
char Nome[10];
int Numero;
}t_Rubrica;
/*Prototipi Procedure*/
void visualmenu();
void scelta(int *N);
void iniazializzazione(t_Rubrica *rubrica);
void visualrubrica(t_Rubrica *rubrica);
void aggiungi(int *c,t_Rubrica *rubrica);
void gestione(int n,int *c,t_Rubrica *rubrica);
/*Programma Principale*/
int main()
{
t_Rubrica rubrica[MAX];
int n;
int c=0;
iniazializzazione(&rubrica);
do{
visualmenu();
scelta(&n);
gestione(n,&c,&rubica);
system("PAUSE");
system("cls");
}while(n=!5);
system("PAUSE");
return(0);
}
/*Procedure:*/
void iniazializzazione(t_Rubrica *rubrica){
int i;
for(i=0;i<MAX;i++)
rubrica[i].Nome[0]= 'x';
return;
}
void visualmenu(){
printf("\t\t\tRUBRICA TELEFONICA:");
printf("\n\n\t 1-Aggiungi nuova voce in rubrica");
printf("\n\n\t 2-Ricerca per nome");
printf("\n\n\t 3-Ricerca per cognome");
printf("\n\n\t 4-Stampa intera rubrica");
printf("\n\n\t 5-Esci");
return;
}
void scelta(int *N){
printf("\n\tInserisci scelta: ");
scanf("%d",N);
return;
}
void gestione(int n,int *c,t_Rubrica *rubrica){
switch(n){
case 1: aggiungi(c,&rubrica);
break;
case 2:
break;
case 3:
break;
case 4: visualrubrica(&rubrica);
break;
}
return;
}
void aggiungi(int *c,t_Rubrica *rubrica){
if(*c!=MAX){
printf("\n\tInserisci Nome: ");
scanf("%s",&rubrica[*c].Nome);
printf("\n\tInserisci Cognome: ");
scanf("%s",&rubrica[*c].Cognome);
printf("\n\tInserisci Numero telefonico: ");
scanf("%s",&rubrica[*c].Numero);
(*c)++;
}else{
printf("\n\n\t\tMemoria piena");
}
return;
}
void visualrubrica(t_Rubrica *rubrica){
int i;
printf("\n\tNOME \t- \tCOGNOME \t- \tNUMERO TELEFONICO");
for(i=0;i<MAX;i++){
if(rubrica[i].Nome[0]!='x'){
printf("\n\t%s \t \t%s \t%d",rubrica[i].Nome,rubrica[i].Cognome,rubrica[i].Numero);
}
}
return;
}
alcune cose ho risolto, altre invece no .. riscontro comunque problemi nel passaggio di parametri