ID casuale relativo

di il
22 risposte

22 Risposte - Pagina 2

  • Re: ID casuale relativo

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAXCHAR 8
    
    void mainmenu();
    void inseriscisala(int *numerosale);
    void aggiungiopera(int *numeroopere);
    int esistenzacodice(char codice[MAXCHAR],int *numerosale);
    int esistenzaprogressivo(int progressivo,int *numerosale);
    void visualizzazionesaleopere(int numerosale,int *numeroopere);
    int numeroopere(int *numeroopere,char codice[MAXCHAR],int progressivo);
    void assegnaoperaasala(int numerosale,int numeroopere);
    
    
    
    struct sala{
    char nome[MAXCHAR];
    char piano[MAXCHAR];
    int progressivo;
    }sale[50];
    
    struct opera{
    char nome[MAXCHAR];
    char autore[MAXCHAR];
    char tipo[MAXCHAR];
    int progressivo;
    char assegnazione[MAXCHAR];
    int assegnazione2;
    
    
    }opere[50];
    
    int main()
    {
    mainmenu();
    return 0;
    }
    void mainmenu() {
        //Variabili
        int numerosale = 1;
        int numeroopere = 1;
        int azione;
    
        //Menù
        do {
            printf("Gestione Museo \n\n");
            printf("1 - Inserisci nuova sala\n");
            printf("2 - Inserisci nuova opera\n");
            printf("3 - Associa libro a studente\n");
            printf("4 - Visualizza studenti\n");
            printf("5 - visualizza libri a studente\n");
            printf("0 - Esci\n");
            printf("Inserisci la scelta -> ");
            scanf("%d", &azione);
    
            //Controllo scelta
            switch (azione) {
                case 0:
                    printf("Arrivederci!");
                    break;
                case 1:
                    system("cls");
                    inseriscisala(&numerosale);
                    break;
             /* case 2:
                  system("cls");
                   assegnaoperaasala(numerosale,numeroopere);
                   break;
              case 3:
                    system("cls");
                    visualizzazionesaleopere(numerosale, numeroopere);
                    break;
                    case 4:
                    system("cls");
                    visualizzastudenti(numerostudenti,numerolibri);
                    break;
                    */
                default:
                    printf("Azione non valida");
            }
        } while (azione != 0);
    }
    void inseriscisala(int *numerosale){
        char codice[MAXCHAR];
        int progressivo;
    fflush(stdin);
    
    printf("inserisci nome sala ");
    gets(sale[*numerosale].nome);
    fflush(stdin);
    printf("inserisci piano sala ");
    gets(sale[*numerosale].piano);
    sale[*numerosale].progressivo=*numerosale;
    printf("CODICE SALA: %s,PROGRESSIVO: %d",sale[*numerosale].piano,sale[*numerosale].progressivo);
    
    
    
    printf("sala aggiunta correttamente");
    *numerosale+=1;
    fflush(stdin);
    
    
    }
    void aggiungiopera(int *numeroopere){
        char codice[MAXCHAR];
        int progressivo;
        int indicecodice;
        int indiceprogressivo;
    fflush(stdin);
    printf("aggiungi nome opera ");
    gets(opere[*numeroopere].nome);
    fflush(stdin);
    printf("aggiungi autore opera ");
    gets(opere[*numeroopere].autore);
    fflush(stdin);
    printf("aggiungi tipo opera ");
    gets(opere[*numeroopere].tipo);
    opere[*numeroopere].progressivo=*numeroopere;
    printf("opera aggiunta correttamente ");
    *numeroopere+=1;
    system("PAUSE");
    system("cls");
    
    
    }
    
    
    
    int esistenzacodice(char codice[MAXCHAR],int *numerosale){
    
    
    int i;
    for(i=0;i<=*numerosale;i++){
        if(strcmp(sale[*numerosale].piano,codice)==0){
            return i;
        }
    
    }
    
    
    
    return 1;
    
    
    }
    int esistenzaprogressivo(int progressivo,int *numerosale){
    
    int i;
    for(i=0;i<=*numerosale;i++){
        if(sale[*numerosale].progressivo==progressivo){
            return i;
        }
    }
    
    
    return 1;
    }
    
    
    
    ecco il codice da lei richiesto
  • Re: ID casuale relativo

    Crossposting http://forum.ubuntu-it.org/viewtopic.php?f=33&t=608217&p=4856341#p4856341
  • Re: ID casuale relativo

    A parte il crossposting (devi leggere ancora il regolamento di questo forum?), vedo che

    piano

    non era un char ma un array di char

    char piano[MAXCHAR];

    Però continuo a non capiere perché il progressivo deve essere per "piano" ... E' specificato da qualche parte nel testo dell'esercizio o hai capito male?
  • Re: ID casuale relativo

    L'esercizio dice:"il codice è composto da una prima parte che indica il piano in cui è ubicata la sala (T=Terra,I=Primo piano,etc)e un progressivo relativo al piano di appartenenza."
  • Re: ID casuale relativo

    Quindi la struttura è sbagliata, deve esserci un codice, ad esempio

    char codice[10];

    e non piano e progressivo.

    Nel campo codice devi inserire una parte iniziale T I II III IV e una parte numerica magari con 5 cifre ad esempio

    T00001

    oppure

    IV00003

    A questo punto, quando inserisci una nuova sala, una volta ottenuto da tastiera il piano, scorri tutto il vettore cercando nel codice la parte iniziale e scoprendo l'ultimo codice inserito per quel piano, per ottenere il prossimo.


    P.S. Penso che questo thread sarà presto chiuso per crossposting.
  • Re: ID casuale relativo

    Quindi non devo fare piano e progressivo.....ho capito.....grazie mille
  • Re: ID casuale relativo

    Però, inoltre, la traccia dice che devo prendere in input il piano della sala in cui è ubicata,e assegnare in automatico un codice univoco per la sala e aggiungere all'archivio....
  • Re: ID casuale relativo

    Sì, il piano lo prendi in input ma per formare il codice.
Devi accedere o registrarti per scrivere nel forum
22 risposte