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); }

Rispondi quotando