codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define dmax 100
typedef char stringa[dmax];
//funzioni
void Inserisci_nuovo(stringa *nome, stringa *cognome, stringa *numero, int *dim);
void Cancella_nom(stringa *nome, stringa *cognome,stringa *numero,int *dim);
void Modifica_num(stringa *nome, stringa *cognome, stringa *numero,int dim);
void Visualizza_num(stringa *nome, stringa *cognome,stringa *numero,int dim);
void Visualizza_ALPHA(stringa *nome, stringa *cognome, stringa *numero, int dim);
void SeqSel(stringa *nome,stringa *cognome, stringa *numero,int N);
int Ricerca(stringa nomes,stringa cognomes,int dim,stringa *nome,stringa *cognome);
int main(){
int scelta,dim=0;
stringa nome[dmax],cognome[dmax],numero[dmax];
while(scelta!=0){
system("cls");
printf("\t\t\t ***** RUBRICA TELEFONICA *****\n");
printf("\n 1. Inserimento nuovo nominativo e telefono\n");
printf(" 2. Cancellazione nominativo\n");
printf(" 3. Modifica numero di telefono\n");
printf(" 4. Visualizza numero di telefono di un nominativo\n");
printf(" 5. Visualizzazione rubrica per lettera iniziale del cognome\n");
printf(" 0. Premi 0 per uscire\n");
printf("\n\t\t\t Scelta: ");
scanf("%d",&scelta);
if(scelta==1){
system("cls");
fflush(stdin);
Inserisci_nuovo(nome,cognome,numero,&dim);
}
else if(scelta==2){
system("cls");
fflush(stdin);
Cancella_nom(nome,cognome,numero,&dim);
}
else if(scelta==3){
system("cls");
fflush(stdin);
Modifica_num(nome,cognome,numero,dim);
}
else if(scelta==4){
system("cls");
fflush(stdin);
Visualizza_num(nome,cognome,numero,dim);
}
else if(scelta==5){
system("cls");
fflush(stdin);
Visualizza_ALPHA(nome,cognome,numero,dim);
}
}
}
void Inserisci_nuovo(stringa *nome, stringa *cognome, stringa *numero, int *dim){
int i=(*(dim));
printf("\t\t\t Inserimento nuovo contatto\n");
printf("\n Inserisci il nome: ");
gets(nome[i]);
printf(" Inserisci il cognome: ");
gets(cognome[i]);
printf(" Inserisci il numero di telefono: ");
gets(numero[i]);
(*(dim))++;
SeqSel(nome,cognome,numero,(*dim));
getch();
}
void SeqSel(stringa *nome,stringa *cognome,stringa *numero,int N){
int imin,i,j;
stringa sc;
for(i=0;i<N-1;i++){
imin=i;
for(j=i+1;j<N;j++){
if((strcmp(cognome[j],cognome[imin]))<0)
imin=j;
}
strcpy(sc,cognome[i]);
strcpy(cognome[i],cognome[imin]);
strcpy(cognome[imin],sc);
strcpy(sc,nome[i]);
strcpy(nome[i],nome[imin]);
strcpy(nome[imin],sc);
strcpy(sc,numero[i]);
strcpy(numero[i],numero[imin]);
strcpy(numero[imin],sc);
}
}
void Cancella_nom(stringa *nome, stringa *cognome,stringa *numero,int *dim){
int i;
stringa nomes,cognomes;
printf("Inserisci nome e cognome del nominativo che desideri cancellare\n");
printf("\n Cognome: ");
gets(cognomes);
printf(" Nome: ");
gets(nomes);
i=Ricerca(nomes,cognomes,(*(dim)),nome,cognome);
if(i==-1) printf("\n\t\t\t NOME DA CANCELLARE NON TROVATO!!!");
else{
for(;i<(*(dim));i++){
strcpy(nome[i],nome[i+1]);
strcpy(cognome[i],cognome[i+1]);
strcpy(numero[i],numero[i+1]);
}
printf("\t\t\tOK\n");
}
getch();
}
int Ricerca(stringa nomes,stringa cognomes,int dim,stringa *nome,stringa *cognome){
int i;
for(i=0;i<dim && (strcmp(nomes,nome[i])!=0) && (strcmp(cognomes,cognome[i])!=0);i++);
if(i==dim) return -1;
return i;
}
void Modifica_num(stringa *nome, stringa *cognome, stringa *numero,int dim){
stringa nomes,cognomes,numeros;
int i;
printf("Modifica numero di telefono\n");
printf("\nInserisci il nome\n");
gets(nomes);
printf("\nInserisci il cognome\n");
gets(cognomes);
i=Ricerca(nomes,cognomes,dim,nome,cognome);
if(i==-1) printf("\n\t\t\t CONTATTO NON TROVATO");
else{
printf("Inserisci il nuovo numero: ");
gets(numeros);
strcpy(numero[i],numeros);
}
getch();
}
void Visualizza_num(stringa *nome, stringa *cognome,stringa *numero,int dim){
stringa nomes,cognomes;
int i;
printf("Modifica numero di telefono\n");
printf("\nInserisci il nome\n");
gets(nome);
printf("\nInserisci il cognome\n");
gets(cognome);
i=Ricerca(nomes,cognomes,dim,nome,cognome);
if(i==-1) printf("\n\t\t\t CONTATTO NON TROVATO");
else{
printf("Il numero e': ");
puts(numero[i]);
}
getch();
}
void Visualizza_ALPHA(stringa *nome, stringa *cognome, stringa *numero, int dim){
int i=0;
char iniziale;
printf("Inserisci l'iniziale della pagina che desideri visualizzare\n");
scanf("%c",&iniziale);
while(i<dim && cognome[i][0]==iniziale){
puts(cognome[i]);
puts(nome[i]);
puts(numero[i]);
}
getch();
}