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

    [C] Programma gestione archivio

    Dovrei scrivere un programma C per la gestione dell’archivio dei soci di un club di macchine d'epoca. In particolare, i dati da mantenere per ciascun associato sono i seguenti:Cognome (stringa di massimo 20 caratteri, può contenere spazi al suo interno),Nome (stringa di massimo 20 caratteri, può contenere spazi al suo interno),Codice fiscale,Indirizzo e-mail,Vetture possedute.Ogni vettura è caratterizzata da:Marca,modello,anno di produzione.definire le seguenti funzioni:Socio: funzione che ha come parametri i dati di una persona e li inserisce nella struttura dati atta a memorizzarli: essa deve leggere le informazioni da standard input ed inserirle in modo ordinato rispetto al cognome e nome; Email: funzione che, accettando in ingresso un modello di vettura ed un periodo temporale definito da due anni, visualizzi su standard output gli indirizzi e-mail di tutti i soci che possiedono una vettura del tipo definito e prodotta nel periodo dato in input;Vettura:funzione che accettando in ingresso il codice fiscale di un socio, permette di aggiungere una vettura a lui associata; main: all’interno del main predisporre un opportuno menu che permetta di scegliere e far eseguire le diverse funzioni implementate.
    Allora inizio cosi:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 21
    
    typedef struct *lpointer;
    typedef struct {
    char marca [MAX];
    char modello [MAX];
    int anno;
    }vet;
    
    typedef struct {
    char cognome [MAX];
    char nome [MAX];
    codfis [MAX];
    email [MAX];
    vet auto;
    lpointer next;
    }user;
    lpointer entryp=NULL
    
    void socio();
    void email();
    void vettura ();
    void aggiungi(lpointer pn);
    lpointer* cerca (lpointer* inizio, char us);
    void inserisci(*lpointer*pins,lpointer pnodo);
    
    main (){
    int scelta;
    for(;; ) {
    printf("\nMenù archivio soci");
    printf("n1) Aggiunta di un socio ");
    printf("n2) Email soci che possiedono una vettura specifica");
    printf("n3) Aggiunta vettura socio ");
    prinft("n0) Fine");
    printf("\nScelta operazione (1,2,3,0) ");
    scanf("%d", &scelta)
    if(!scelta)
    break;
    switch (scelta) {
    case 1: 
    socio ();
    break;
    case 2:
    email():
    break;
    case 3:
    vettura ();
       }
    }
    return 0;
    }
    void socio () {
    lpointer nuovo;
    nuovo=(lpointer) malloc (size of (user));
    if (nuovo==NULL){
    printf ("\nMemoria insufficente");
    }else{
    printf("\nInserimento nuovo Socio");
    printf ("\nInserisci nome : );
    gets(nuovo->nome);
    printf(\nInserisci cognome : )
    gets(nuovo->cognome);
    prinf(\nInserisci email : );
    gets(nuovo->email);
    printf(\nInserisci codice fiscale : );
    gets(nuovo->codfis);
    printf(\nInserisci vettura : );
    adesso come inserisco la vettura? 
    poi continuando
    aggiungi(nuovo);
       }
    }
    void aggiungi(lpointer pn) {
    lpointer *posins;
    posins=cerca(&entryp,pn->cognome);
    inserisci(posins,pn);
    lpointer* cerca(lpointer*inizio, char us)
    if(*inizio==NULL)
    return inizio;
    if(strcmp((*inizio)->cognome,us)>0))
    return inizio;
    inizio=cerca (&((*inizio)->next),us);
    return inizio;
    }
    void inserisci(*lpointer*pins,lpointer pnodo){
    pnodo->next=*pins;
    *pins=pnodo;
    }
    è giusto? come scrivo le altre 2 funzioni? vi ringrazio in anticipo buona giornata[CODE]

  2. #2
    Ogni socio dovrebbe avere un vettore di vetture (o una lista, o un altro container a tuo piacimento) , in questo modo tu puoi aggiungergli tutte le vetture che vuoi quando chiami la funzione apposita.
    Per come hai fatto adesso invece il socio possiede una ed una sola vettura

  3. #3
    Quindi modifico con
    vet auto [5]?
    E poi la richiamo con:
    printf("\ninserisci modello : )
    gets(nuovo->modello)?

  4. #4
    Originariamente inviato da morbidoso
    Quindi modifico con
    vet auto [5]?
    E poi la richiamo con:
    printf("\ninserisci modello : )
    gets(nuovo->modello)?
    No il vettore auto sarebbe meglio che fosse dinamico, altrimenti ti devi ricordare quante auto ci hai inserito, per ogni utente (per esempio in user aggiungi un int che è il numero di auto possedute, e quando aggiungi una nuova auto lo incrementi).
    Per inserirne uno nuovo fai inserire da tastiera modello marca e anno e lo metti come ultimo
    codice:
    {
    //...
    vet* auto;
    }user
    
    void tuaFunzione(char marca[MAX], char modello[MAX], int anno){
    //crei un oggetto vettura con marca, modello, anno di ingresso
    //all'ultimo indice di auto inserisci la vettura appena creata
    }

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 © 2025 vBulletin Solutions, Inc. All rights reserved.