PDA

Visualizza la versione completa : [C] Progetto di rubrica telefonica


devil_prince
11-02-2011, 19:46
Salve ragazzi, sto svolgendo per un esame questo proggetto;

Gestione archivio telefonico Si vuole simulare l’archivio telefonico di un cellulare. Ogni
nominativo è identificato dal Cognome, Nome, numero telefonico. Provvedere
all’implementazione dell’algoritmo per la simulazione dell’archivio telefonico (massimo 30 nominativi).
Permettere, inoltre, all’utente di · Inserire o cancellare un nominativo · Dato il Cognome e il
Nome di un utente visualizzare il numero telefonico corrispondente (effettuare una ricerca binaria ricorsiva) · Dato un numero telefonico vedere il numero totale di chiamate da e verso quel numero L’archivio può anche essere inizializzato con informazioni casuali. Effettuare almeno due test per ognuna delle opzioni dell’utente.

per ora sono riuscito a buttare giù solo questi codici

#include <stdio.h>
#include <string.h>
void main ()
{
/* Lista prime voci*/
typedef struct
{
char nome[20];
char numero[10];
}voce;

voce v1,v2,v3,v4,v5;
strcpy (v1.nome, "Alberto Savarese");
strcpy (v1.numero, "0813746288");
strcpy (v2.nome, "Claudia Bianco");
strcpy (v2.numero, "08173638097");
strcpy (v3.nome, "Alessandro Carnale");
strcpy (v3.numero, "08173634597");
strcpy (v4.nome, "Vincenzo Colella");
strcpy (v4.numero, "08133638575");
strcpy (v5.nome, "Gianfranco Tessitore");
strcpy (v5.numero, "08147352908");
/* QUESTO E' IL MENU' PRINCIPALE*/
int i;
printf("===========================================\n");
printf("BENEVENUTO NELLA TUA RUBRICA TELEFONICA\n"); printf("===========================================\n\n");
printf("Cosa vuoi fare?\n"); printf("1=Visualizzare tutte le voci in rubrica\n2=\n"); scanf("%d",&i);
if (i=1)
{
printf("Nome=%s Numero=%s",v1.nome, v1.numero);
}
else
{
printf("errore inserimento");
}
}

solo che sono bloccato, vorrei creare la function per visualizzare l'intera lista di nomi senza dover scrivere ogni volta nella printf tutte le variabili (anche perchè nella traccia devo dare la possibilità all'utente di poter aggiungere o eliminare voci).
Mi date qualche dritta?

Celebron
11-02-2011, 20:40
perché stai usando 5 variabili diverse quando puoi creare direttamente un vettore di tipo "voce"?

(per la cronaca, se fai una roba del genere ad un esame qualsiasi di informatica ti becchi la bocciatura sul colpo xD e te lo dico perché le ho viste con i miei occhi queste cose fatte da alcuni miei ex compagni di corso, ai suoi tempi)

devil_prince
11-02-2011, 21:59
ok...in che senso con un vettore?

Celebron
12-02-2011, 02:59
voce elencoTelefonico[30];

devil_prince
12-02-2011, 13:32
ah intendevi un array...cmq si ora ho corretto ed ho fatto la prima parte del menù..cioè quella che permette di visualizzare i contatti ma non capisco perchè non escono i contatti...posto il codice:

#include <stdio.h>
void main ()
{
/* Lista prime voci*/
struct contatto {
char nome[20];
char cognome[20];
int numero;
};
typedef struct contatto Contatto;
Contatto contatti[10]={{"Antonio","Rossi",339000413},
{"Alessia","Scoglio",329000172},
{"Luca","Abbate",324000156},
{"Francesco","Esposito",334000151},
{"Federica","Riccio",338000365}};
int ver_contatti[10]={1,1,1,1,1,0,0,0,0,0};

/* QUESTO E' IL MENU' PRINCIPALE*/
int i,oper;
printf("===========================================\n");
printf("BENEVENUTO NELLA TUA RUBRICA TELEFONICA\n");
printf("===========================================\n\n");

printf("Cosa vuoi fare?\n");
printf("1=Visualizzare tutti i contatti in rubrica\n");
scanf("%d",&oper);
do{
scanf("%d",&oper);
}while (oper==1);
if (oper==1)
{
for(i=0;i<10;i++)
if(ver_contatti[i]==1)
{
printf("Contatto %d\n",i);
printf("%s %s %d",contatti[i].nome,contatti[i].cognome,contatti[i].numero);
}

}
}
Praticamente digito 1 e me lo fà digitare all'infinito finchè non digito un'altro numero

Celebron
12-02-2011, 13:51
Originariamente inviato da devil_prince
ah intendevi un array...cmq si ora ho corretto ed ho fatto la prima parte del menù..cioè quella che permette di visualizzare i contatti ma non capisco perchè non escono i contatti...posto il codice:

#include <stdio.h>
void main ()
{
/* Lista prime voci*/
struct contatto {
char nome[20];
char cognome[20];
int numero;
};
typedef struct contatto Contatto;
Contatto contatti[10]={{"Antonio","Rossi",339000413},
{"Alessia","Scoglio",329000172},
{"Luca","Abbate",324000156},
{"Francesco","Esposito",334000151},
{"Federica","Riccio",338000365}};
int ver_contatti[10]={1,1,1,1,1,0,0,0,0,0};

/* QUESTO E' IL MENU' PRINCIPALE*/
int i,oper;
printf("===========================================\n");
printf("BENEVENUTO NELLA TUA RUBRICA TELEFONICA\n");
printf("===========================================\n\n");

printf("Cosa vuoi fare?\n");
printf("1=Visualizzare tutti i contatti in rubrica\n");
scanf("%d",&oper);
do{
scanf("%d",&oper);
}while (oper==1);
if (oper==1)
{
for(i=0;i<10;i++)
if(ver_contatti[i]==1)
{
printf("Contatto %d\n",i);
printf("%s %s %d",contatti[i].nome,contatti[i].cognome,contatti[i].numero);
}

}
}
Praticamente digito 1 e me lo fà digitare all'infinito finchè non digito un'altro numero

per forza
a cosa ti serve questo?

do{
scanf("%d",&oper);
}while (oper==1);

gli stai dicendo: leggi un intero da tastiera, se è == 1, rileggi un intero da tastiera.

devil_prince
12-02-2011, 16:27
si praticamente ho fatto solo la prima voce del menù...quando sarà completo metterò gli altri numeri per selezionare le altre funzionalità, come cancella numero e via dicendo
cmq ho risolto...avevo messo la scanf sia fuori che dentro il ciclo del do

Loading