Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23

    [C] Strutture e funzioni.Esercizio d'esame

    Ciao a tutti....Potreste aiutarmi in questo esercizio.....ho problemi nell'inserimento ricorsivo di una stringa, l'inserimento dovrebbe terminare all'inserimento di "end" , il programma mi da dei problemi... Nel ciclo while devo pure inserire due interi...e chiamare una funzione che riceve un vettore di struttura(inizializzata a 0), la stringa,e i due interi, e inserisce la stringa e i due interi nel vettore di struttura. Vi prego spiegatemi dove sbaglio....o datemi qualche consiglio...
    Grazie

    codice:
    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    
    struct ferie {
                  char *cognome;
                  int inizio;
                  int durata;
                  };
    typedef struct ferie Ferie;
    Ferie impiegati[10];                 //Vettore di strttura Ferie
    
    int prenota(Ferie*,char,int,int);    //Funzione prenota
    char nome[10][12];
    
    main()                                            //MAIN
    {int i,j=0,inizio,durata;
    
     for(i=0;i<10;i++){                                     //inizializzazione struttura
                       impiegati[i].cognome="Vuoto";
                       impiegati[i].inizio=0;
                       impiegati[i].durata=0;
                       }
    
    
     do{
        printf("Inserisci il cognome dell'impiegato: ");
        scanf("%s",nome[i]);
    
    
                        printf("Inserisci il gg d'inizio delle ferie : \n");
                        scanf("%d",&inizio);
                         if(inizio>0 && inizio<31){
                                                  printf("Inserisci la durata delle ferie : \n");
                                                   scanf("%d",&durata);
                                                   if(durata >0 && durata<8)
                                                   {prenota (impiegati,nome,inizio,durata);
                                                   j++;}
                                                   else printf("Errore! La durata va da 1 a un massimo di 7 gg.\n");
                                                   }
                         else printf("Inserisci nuovamente il nome e il giorno di inizio delle ferie(1-31).\n");
    
     }while(strcmpi(nome[i++],"end")&& j<10);                     //PROBLEMA
    
     for(i=0;i<10;i++)
     printf("%c   %d    %d \n",impiegati[i].cognome,impiegati[i].inizio,impiegati[i].durata);
    
    fflush(stdin);
    getchar();
    }
    
    
    
    int prenota(Ferie*w,char nome[][12] ,int in ,int dur)
                                                                        //FUNZIONE PRENOTA
    {int j=0,x,i=0,conta=0;                                             //Che riceve un nome il gg di inizio delle ferie
                                                                        //e la durata e inserisce i dati nel vettore di
                                                                        //struttura.
                                                                        //Se ci sono tre impiegati che hanno le ferire
                                                                        //nello stesso periodo rende 0 altrimenti 1
    
       while((strcmpi(w[j].cognome,"Vuoto")))  j++;
                           w[j].cognome= nome[i];
                           w[j].inizio=in;
                           w[j].durata=dur;
                            x=j;
    if(x){
          for(i=1;i<x;i++){
                           if(w[i].inizio <= w[i-1].inizio+w[i].durata)
                           conta++;
                           }
    if (conta==3) return (0);
                  else return (1);
    }else return (1);
     }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: [C] Strutture e funzioni.Esercizio d'esame

    Originariamente inviato da mawjuve
    il programma mi da dei problemi...
    Le solite domande:

    - quali?
    - in che punto del programma?
    - in compilazione o in esecuzione?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23
    L'ho corretto un pò... Ho scritto //PROBLEMA come commento nel codice alla riga 46,nel while.
    Ho un problema nel while....quando scrivo end nel nome per terminare l'inserimento dei dati
    il programma continua a chiedermi l'inserimento dei dati.
    Inoltre dopo l'inserimento non mi stampa la struttura...si blocca il programma.
    Quindi sicuramente c'è un problema nella funzione....
    codice:
    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    
    struct ferie {
                  char *cognome;
                  int inizio;
                  int durata;
                  };
    typedef struct ferie Ferie;
    Ferie impiegati[3];                 //Vettore di strttura Ferie
    
    int prenota(Ferie*,char*,int,int);    //Funzione prenota
    char nome[12];
    
    main()                                            //MAIN
    {int i,j=0,inizio,durata,q;
    
     for(i=0;i<3;i++){                                     //inizializzazione struttura
                       impiegati[i].cognome="vuoto";
                       impiegati[i].inizio=0;
                       impiegati[i].durata=0;
                       }
    
     printf("%s   %d    %d \n",impiegati[i].cognome,impiegati[i].inizio,impiegati[i].durata);
    
     do{
        printf("Inserisci il cognome dell'impiegato: ");
        scanf("%s",&nome);
    
    
                        printf("Inserisci il gg d'inizio delle ferie : \n");
                        scanf("%d",&inizio);
                         if(inizio>0 && inizio<31){
                                                  printf("Inserisci la durata delle ferie : \n");
                                                   scanf("%d",&durata);
                                                   if(durata >0 && durata<8)
                                                                  {prenota (impiegati,nome,inizio,durata);
                                                                   j++;}
                                               else printf("Errore! La durata va da 1 a un massimo di7gg.\n");
                                                   }
                         else printf("Inserisci nuovamente il nome e il giorno di inizio delle ferie(1-31).\n");
    
     }while((strcmpi(nome,"end")) || j<3);                     //PROBLEMA
    
     for(i=0;i<3;i++)
     printf("%c   %d    %d  \n",impiegati[i].cognome,impiegati[i].inizio,impiegati[i].durata);
    
    fflush(stdin);
    getchar();
    }
    
    
    
    int prenota(Ferie*w,char *nom ,int in ,int dur)
                                                                        //FUNZIONE PRENOTA
    {int j=0,x,i,conta=0;                                             //Che riceve un nome il gg di inizio delle ferie
                                                                        //e la durata e inserisce i dati nel vettoredi
                                                                        //struttura.
                                                                        //Se ci sono tre impiegati che hanno leferie
                                                                        //nello stesso periodo rende 0 altrimenti 1
    
       while((strcmpi(w[j].cognome,"Vuoto")))  j++;
                           w[j].cognome= nom;
                           w[j].inizio=in;
                           w[j].durata=dur;
                            x=j;
    if(x){
          for(i=1;i<x;i++){
                           if(w[i].inizio <= w[i-1].inizio+w[i].durata)
                           conta++;
                           }
    if (conta==3) return (0);
                  else return (1);
    }else return (1);
     }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23
    Questo è il testo.....se qualcuno pùò darmi qualk suggerimento ......dirmi dove sbaglio....vi ringrazio!!



    es->
    Si scriva un programma ferie.c. In esso si simuli la gestione delle ferie di
    agosto del personale di un azienda, mediante un vettore impiegati di strutture dati ferie
    contenenti una stringa cognome e due numeri interi inizio e durata.
    Si inizializzi il vettore di 10 elementi con stringhe costanti scelte a piacimento e valori degli
    interi uguali a 0.
    Si scriva la funzione prenota che, dato il vettore, una stringa nome, una data di inizio da 1
    a 31 e una durata da 1 a 7 inserisca nella matrice la prenotazione delle ferie e restituisca
    l'intero 1 a meno che non ci siano già tre colleghi che hanno ferie in uno dei giorni richiesti,
    nel qual caso non si prenoti nulla e si restituisca 0. Si trascurino i giorni oltre il 31.
    Si scriva una seconda funzione lavativi che, dato un intero tra 1 e 31 (giorno), stampi a
    video i nomi degli impiegati che sono in ferie tale giorno.



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