Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    programma in c rubrica telefonica

    vorrei una mano per capire perchè non parte questo programma scritto in c.I
    #include<stdio.h>
    #include<string.h>
    #define N 100
    #define MAX 90
    main()
    {
    int riemp=0;
    char cod;
    char inputOption[255];
    personaT persone[MAX],temp;
    riemp=leggiPersone(persone, MAX);
    printf("RUBRICA TELEFONICA\n");
    printf("Inserisci il codice dell'operazione da eseguire\n");
    printf("1 - Inserimento di un nuovo numero;\n");
    printf("2 - Cancellazione di un numero presente in rubrica;\n");
    printf("3 - Ricerca di un numero presente in rubrica;\n");
    printf("4 - Visualizza intera rubrica;\n");
    printf("5 - Riproponi elenco codici;\n");
    printf("6 - Modifica voce presente in rubrica;\n");
    printf("7 - Cancellazione intera rubrica;\n");
    printf("8 - Ricerca per iniziale del cognome;\n");
    printf("9 - Recupero Backup;\n");
    printf("0 - Esci dal programma.\n");
    printf("\n");
    do
    {
    printf("Inserisci codice operazione:\n");
    scanf("%s",&inputOption);
    cod=inputOption[0];
    switch(cod)
    {
    case '1': {
    printf("\nINSERIMENTO DI UN NUOVO NUMERO IN RUBRICA:\n\n");
    Nuovo_Numero(persone,&riemp,MAX);
    Memorizza(persone,riemp);
    Backup_Rub(persone,riemp);
    }; break;
    case '2': {
    printf("\nCANCELLAZIONE DI UN NUMERO PRESENTE IN RUBRICA\n\n");
    Backup_Rub(persone,riemp);
    Canc_Numero(persone,&riemp);
    Memorizza(persone,riemp);
    }; break;
    case '3': {
    printf("\nRICERCA DI UN NUMERO PRESENTE IN RUBRICA\n\n");
    Ricerca_Numero(persone,riemp);
    }; break;
    case '4': {
    printf("\nVISUALIZZAZIONE RUBRICA\n\n");
    Ordinamento(persone,riemp,temp);
    Visualizza(persone,riemp);
    }; break;
    case '5': {
    printf("\nMENU\n\n");
    printf("1 - Inserimento di un nuovo numero;\n");
    printf("2 - Cancellazione di un numero presente in rubrica;\n");
    printf("3 - Ricerca di un numero presente in rubrica;\n");
    printf("4 - Visualizza intera rubrica;\n");
    printf("5 - Riproponi elenco codici;\n");
    printf("6 - Modifica voce presente in rubrica\n");
    printf("7 - Cancellazione intera rubrica\n");
    printf("8 - Ricerca per iniziale del cognome\n");
    printf("9 - Recupero Backup\n");
    printf("0 - Esci dal programma.\n");
    printf("\n");
    }; break;
    case '6': {
    printf("\nMODIFICA DI UNA VOCE PRESENTE IN RUBRICA\n\n");
    Modifica_Voce(persone,riemp);
    Memorizza(persone,riemp);
    Backup_Rub(persone,riemp);
    }; break;
    case '7': {
    printf("\nCANCELLAZIONE INTERA RUBRICA\n\n");
    Backup_Rub(persone,riemp);
    Canc_Rub(persone,&riemp);
    printf("NESSUN NUMERO REGISTRATO.\n\n");
    printf(“Riavviare il programma.\n\n”);
    cod=‟0‟;
    }; break;
    case '8': {
    printf("\nRICERCA PER INIZIALE COGNOME\n\n");23
    Ric_Iniziale(persone,riemp);
    }; break;
    case '9': {
    printf("\nRECUPERO BACKUP RUBRICA\n\n");
    Rec_Backup();
    riemp=leggiPersone(persone,MAX);
    Visualizza(persone,riemp);
    }; break;
    case '0': {
    printf("\n");
    Backup_Rub(persone,riemp);
    }; break;
    default: printf("Codice non valido!\n"); break;
    }
    }
    while (cod!='0');
    }
    - “funzioni.h”
    #define N 100
    typedef struct
    {
    char cognome[N];
    char nome[N];
    char tel[N];
    char cel[N];
    } personaT;
    int leggiPersone(personaT persone[], int cap);
    void Nuovo_Numero(personaT persone[], int *riemp, int cap);
    void Canc_Numero(personaT persone[], int *riemp);
    void Ricerca_Numero(personaT persone[], int riemp);
    void Visualizza(personaT persone[], int riemp);
    void Memorizza(personaT persone[], int riemp);
    void Ordinamento(personaT persone[], int riemp,personaT temp);
    void Canc_Rub();
    void Modifica_Voce(personaT persone[], int riemp);
    void Ric_Iniziale(personaT persone[], int riemp);
    void Backup_Rub(personaT persone[], int riemp);
    void Rec_Backup ();
    - “funzioni.c”
    #include<stdio.h>
    #include<string.h>
    #include"funzioni.h"
    #define N 100
    #define MAX 90
    void Backup_Rub(personaT persone[], int riemp)
    {
    FILE *f;
    int i;
    f=fopen("bkp_rub.txt","w");
    for(i=0;i<riemp;i++)
    {
    fprintf(f,"%s %s %s %s\n", persone[i].cognome, persone[i].nome, persone[i].tel, persone[i].cel);
    }
    fclose(f);
    }
    int leggiPersone(personaT persone[], int cap)
    {
    FILE *f;
    int fine,i=0;
    f=fopen("rub_dati.txt","r");
    if (f==NULL)
    {
    f=fopen("rub_dati.txt","a");
    fclose(f);
    }
    f=fopen("rub_dati.txt","r");
    while(i<cap)
    {
    fine=fscanf(f,"%s %s %s %s",persone[i].cognome, persone[i].nome, persone[i].tel, persone[i].cel);
    if (fine==EOF) break;
    i++;
    }
    fclose(f);
    return i;
    }
    void Visualizza(personaT persone[], int riemp)
    {
    int i;
    for(i=0;i<riemp;i++)
    {
    printf("Voce Numero %d\n",i+1);
    printf("%s ", persone[i].cognome);
    printf("%s ", persone[i].nome);
    printf("%s ", persone[i].tel);
    printf("%s\n\n", persone[i].cel);
    }
    }
    void Memorizza(personaT persone[], int riemp)25
    {
    FILE *f;
    int i;
    f=fopen("rub_dati.txt","w");
    if (f==NULL)
    {
    return;
    }
    printf("Memorizzazione\n");
    for(i=0;i<riemp;i++)
    {
    fprintf(f,"%s %s %s %s\n", persone[i].cognome, persone[i].nome, persone[i].tel, persone[i].cel);
    }
    printf("\n\n");
    }
    void Nuovo_Numero(personaT persone[], int *riemp, int cap)
    {
    int i,j;
    int res1, res2;
    if(*riemp==cap)
    printf("Per inserire un nuovo numero, cancellare una voce\n\n");
    else
    {
    for(i=*riemp;i<*riemp+1;i++)
    {
    printf("Voce numero %d\n", i+1);
    printf("COGNOME: ");
    scanf("%s",&persone[i].cognome);
    printf("NOME: ");
    scanf("%s",&persone[i].nome);
    printf("NUM.TELEFONICO: ");
    scanf("%s",&persone[i].tel);
    printf("NUM.CELLULARE: ");
    scanf("%s",&persone[i].cel);
    printf("\n");
    for(j=0;j<*riemp;j++)
    {
    res1=strcmp(persone[j].cognome, persone[i].cognome);
    if(res1==0)
    {
    res2=strcmp(persone[j].nome, persone[i].nome);
    if(res2==0)
    {
    printf("E' già presente in rubrica una voce con
    stesso nome e cognome\n\n");
    printf("%s %s: tel %s cel %s\n",
    persone[j].cognome, persone[j].nome, persone[j].tel, persone[j].cel);
    }
    }
    }
    }
    *riemp=*riemp+1;
    if(*riemp==cap)
    printf("Per inserire nuovi numeri bisogna cancellare qualche voce.\n");
    }
    printf("\n");
    }
    void Canc_Numero(personaT persone[], int *riemp) {
    char cod, inputOption[255];
    char cogn_str[N],nome_str[N];
    int i=0,conta=0,j=0;
    int res1,res2;
    int voce;
    printf("Per cancellare un numero selezionando il numero della voce, scrivere: 1\n");
    printf("Per cancellare un numero selezionando cognome e nome, scrivere: 2\n");
    scanf("%s",&inputOption);
    cod=inputOption[0];
    switch(cod)
    {
    case '2': {
    printf("Inserisci il cognome della persona che vuoi cancellare dalla rubrica: ");
    scanf("%s",&cogn_str);
    printf("Inserisci il nome della persona che vuoi cancellare dalla rubrica: ");
    scanf("%s",&nome_str);
    printf("\n");
    for(i=0;i<(*riemp);i++)
    {
    res1=strcmp(cogn_str, persone[i].cognome);
    if(res1==0)
    {
    res2=strcmp(nome_str, persone[i].nome);
    if(res2==0)
    conta++;
    }
    }
    if(conta>1)
    {
    printf("Esistono %d persone registrate con lo stesso nome e cognome\n",conta);
    printf("Individuare il numero della voce da cancellare e rieseguire l'operazione\n");
    }
    else
    {
    for(i=0;i<(*riemp);i++)
    {
    res1=strcmp(cogn_str, persone[i].cognome);
    if(res1==0)
    {
    res2=strcmp(nome_str, persone[i].nome);
    if(res2==0)
    {
    for(j=i;j<(*riemp-1);j++)
    persone[j]=persone[j+1];
    (*riemp)--;
    }
    }
    }
    }
    if(conta==0)
    printf("La persona indicata non e' registrata in rubrica.\n\n");
    printf("\n\n");
    }; break;
    case '1': {
    printf("Inserire il numero della voce da cancellare: ");
    scanf("%d",&voce);
    if(voce>(*riemp))
    {
    do {
    printf("La voce indicata non esiste!\n");
    printf("Inserire il numero della voce da cancellare: ");
    scanf("%d",&voce);
    }
    while(voce>(*riemp));
    }
    for(j=voce;j<(*riemp-1);j++)
    persone[j]=persone[j+1];
    (*riemp)--;
    }; break;
    default : printf("Codice non valido!\n\n"); break;
    }
    }
    void Ricerca_Numero(personaT persone[], int riemp) {
    char cogn_str[N],nome_str[N],tel_str[N],c,cel_str[N];
    int i=0,conta=0,trovato,conta1=0;
    int res1,res2,res3;
    printf("Ricerca tramite nome e cognome: A\nRicerca tramite numero telefonico: B\nRicerca tramite numero
    cellulare: C\n\n");
    scanf("\n%c",&c);
    switch(c)
    {
    case 'A':
    {
    printf("Inserisci il cognome della persona di cui vuoi cercare il numero: ");
    scanf("%s",&cogn_str);
    printf("Inserisci il nome della persona di cui vuoi cercare il numero: ");
    scanf("%s",&nome_str);
    printf("\n");
    for(i=0;i<riemp;i++)
    {
    res1=strcmp(cogn_str, persone[i].cognome);
    if(res1==0)
    {
    res2=strcmp(nome_str, persone[i].nome);
    if(res2==0)
    {
    conta++;
    printf("%s %s: tel %s cel %s\n",
    persone[i].cognome, persone[i].nome, persone[i].tel, persone[i].cel);
    }
    }
    }
    if(conta==0)
    printf("La persona indicata non e' registrata in rubrica.\n\n");
    printf("\n\n");
    };break;
    case 'B':
    {
    printf("Inserisci il numero di telefono da cercare: ");
    scanf("%s",&tel_str);
    printf("\n");
    trovato=0;
    for(i=0;i<riemp;i++)
    {
    res3=strcmp(tel_str, persone[i].tel);
    if(res3==0)
    {
    trovato++;
    printf("%s %s: tel %s cel %s\n", persone[i].cognome,
    persone[i].nome, persone[i].tel, persone[i].cel);
    }
    }
    printf("\n");
    if(trovato==0)
    printf("Il numero indicato non e' presente in rubrica.\n");
    else
    {
    if(trovato>1)
    printf("In rubrica sono registrati %d numeri uguali.\n\n",trovato);
    }
    printf("\n");
    };break;
    case 'C':
    {
    printf("Inserisci il numero di cellulare da cercare: ");
    scanf("%s",&cel_str);
    printf("\n");
    trovato=0;
    for(i=0;i<riemp;i++)
    {
    res3=strcmp(cel_str, persone[i].cel);
    if(res3==0)
    {
    trovato++;
    printf("%s %s: tel %s cel %s\n", persone[i].cognome,
    persone[i].nome, persone[i].tel, persone[i].cel);
    }
    }
    printf("\n");
    if(trovato==0)
    printf("Il numero indicato non e' presente in rubrica.\n");
    else
    {
    if(trovato>1)
    printf("In rubrica sono registrati %d numeri uguali.\n\n",trovato);
    }
    printf("\n");
    };break;
    default : printf("Scelta non valida!\n");break;
    }
    }
    void Ordinamento(personaT persone[], int riemp,personaT temp)
    {
    int i,j;
    int res;
    for(i=0;i<riemp-1;i++)
    {
    for(j=i+1;j<riemp;j++)
    {
    res=strcmp(persone[i].cognome, persone[j].cognome);
    if(res>0)
    {
    temp=persone[i];
    persone[i]=persone[j];
    persone[j]=temp;
    }
    }
    }
    }
    void Canc_Rub() {
    char conferma[255];
    printf("Hai scelto di eliminare tutte le voci della rubrica.Continuare? (Y per confermare, N per annullare): ");
    scanf("\n%c",&conferma[0]);
    switch(conferma[0])
    {
    case 'Y': {
    remove("rub_dati.txt");
    }; break;
    case 'N': break;
    default: printf("Scelta non valida.Scrivere Y per confermare o N per annullare.\n");break;
    }
    }
    void Modifica_Voce(personaT persone[], int riemp) {
    char cogn_str[N],nome_str[N];
    char inputOption[255], cod;
    int i=0,conta=0;
    int res1,res2;
    int voce;
    printf("Per modificare una voce inserendo la sua posizione in rubrica, inserire 1.\n");
    printf("Per modificare una voce inserenfo nome e cognome, inserire 2: \n");
    scanf("%s",&inputOption);
    cod=inputOption[0];
    switch(cod)
    {
    case '1': {
    printf("Inserire il numero della voce da modificare: ");
    scanf("%d",&voce);
    if(voce>riemp)
    {
    do {
    printf("La voce indicata non esiste!\n");
    printf("Inserire il numero della voce da modificare: ");
    scanf("%d",&voce);
    }
    while(voce>riemp);
    }
    else
    {
    printf("Inserisci il\n\n");
    printf("COGNOME: ");
    scanf("%s",&persone[voce].cognome);
    printf("NOME: ");
    scanf("%s", &persone[voce].nome);
    printf("NUM:TELEFONICO: ");
    scanf("%s", &persone[voce].tel);
    printf("NUM.CELLULARE: ");
    scanf("%s",&persone[voce].cel);
    printf("La voce aggiornata e' la seguente:\n\n");
    printf("%s %s: tel %s cel %s", persone[voce].cognome,
    persone[voce].nome, persone[voce].tel, persone[voce].cel);
    }
    }; break;
    case '2': {
    printf("Inserisci il cognome e il nome di cui modificare la voce:\n\n");
    printf("COGNOME: ");
    scanf("%s", &cogn_str);
    printf("NOME: ");
    scanf("%s", &nome_str);
    printf("\n");
    for(i=0;i<riemp;i++){
    res1=strcmp(cogn_str, persone[i].cognome);
    if(res1==0)
    {
    res2=strcmp(nome_str, persone[i].nome);
    if(res2==0)
    {
    conta++;
    printf("%s %s: tel %s cel %s\n", persone[i].cognome,
    persone[i].nome, persone[i].tel, persone[i].cel);
    printf("Inserisci il\n\n");
    printf("COGNOME: ");
    scanf("%s",&persone[i].cognome);
    printf("NOME: ");
    scanf("%s", &persone[i].nome);
    printf("NUM:TELEFONICO: ");
    scanf("%s", &persone[i].tel);
    printf("NUM.CELLULARE: ");
    scanf("%s",&persone[i].cel);
    printf("La voce aggiornata e' la seguente:\n\n");
    printf("%s %s: tel %s cel %s", persone[i].cognome,
    persone[i].nome, persone[i].tel, persone[i].cel);
    }
    }
    }
    if(conta==0)
    printf("La persona non e' registrata in rubrica.\n\n");
    printf("\n\n");
    }; break;
    default: prinf("Codice non valido!\n"); break;
    }
    }
    void Ric_Iniziale(personaT persone[], int riemp) {
    int i;
    int conta=0;
    char car[255];
    printf("Inserisci l'iniziale del cognome: ");
    scanf("\n%c", &car[0]);
    printf("\n");
    for(i=0;i<riemp;i++)
    {
    if(persone[i].cognome[0]==car[0])
    {
    conta++;
    printf("%s %s: tel:%s cel:%s\n\n", persone[i].cognome, persone[i].nome,
    persone[i].tel, persone[i].cel);
    }
    if(conta==0)
    printf("Non c'è nessun cognome che inizi per %c\n", car[0]);
    }
    }
    void Rec_Backup ()
    {
    rename("bkp_rub.txt","rub_dati.txt");
    }

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Leggi il Regolamento di quest'area del forum.

    Innanzitutto, occorre indicare gli errori o i comportamenti anomali riscontrati; inoltre, il codice va formattato per essere comprensibile.

    Apri una discussione seguendo le indicazioni fornite, limitando il codice alla parte significativa, se possibile.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.