|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2001
Città: DAJE ROMA DAJE
Messaggi: 1508
|
Aiuto!!!dove Sta L'errore??
#include <stdio.h>
#include <stdlib.h> #include <string.h> #define NUMVIAGGI 15 #define LUNGTARGA 7 /*typedef int Tipocodice[NUMVIAGGI];*/ typedef char Tipotarga[LUNGTARGA+1]; struct posti{ int codice; int postioccupati; int postitotali; }; typedef struct posti Tipoposti; struct veicolo{ char a; char b; }; typedef struct veicolo Tipoveicolo; struct file{ Tipotarga targa; char veicolo; int codice; }; typedef struct file Tipofile; struct lista{ Tipotarga targa; int codice; struct lista *next; }; typedef struct lista Nodolista; typedef Nodolista *Tipolista; typedef int bool; #define TRUE 1 #define FALSE 0 /**********PUNTO 2**************/ int trasformacodice(char veicolo) { int occ; if(veicolo== 'a') occ=1; else occ=2; return occ; } int trovanave(Tipoposti viaggio,int occupazione,int codice) { int nuovocodice=-1; bool trovato = FALSE; while(!trovato && (codice <=14)){ if((viaggio.postioccupati)+(occupazione)<(viaggio.postitotali)){ nuovocodice=codice+1; viaggio.postioccupati=viaggio.postioccupati+(occupazione); /* indietro!!!!*/ trovato=TRUE; } else { printf("Inserire il numero di posti totali del traghetto numero %d :\n",codice+1); scanf("%d", &viaggio.postitotali); printf("Inserire il numero di posti occupati del traghetto numero %d :\n",codice+1); scanf("%d", &viaggio.postioccupati); trovanave(viaggio,occupazione,(codice+1)); } } return nuovocodice; } /*********PUNTO 3*************/ Tipolista crealista(char *nomefile, Tipoposti viaggio) { FILE *fp; Tipofile file; Tipolista aux, lista=NULL; int occupaz=0; if((fp=fopen(nomefile,"r"))==NULL){ printf("ERRORE!!!!!\n"); exit(1); } fscanf(fp,"%7s%2c%d", file.targa,&file.veicolo,&file.codice); while(!feof(fp)){ occupaz=trasformacodice(file.veicolo); aux= malloc(sizeof(Nodolista)); strcpy(aux->targa,file.targa); aux->codice=trovanave(viaggio,occupaz,(file.codice)-1); aux->next=lista; lista = aux; fscanf(fp,"%7s%2c%d", file.targa,&file.veicolo,&file.codice); } fclose(fp); return lista; } /* FUNZIONI AUSILIARIE USATE NEL DRIVER */ void stampalista(Tipolista lis) { while(lis!=NULL){ printf("%-7s%d\n", lis->targa,lis->codice); lis=lis->next; } } int main() { char nomefile[256]; char veicolo; int occupazione=0; Tipoposti viaggio; int codice=0; int nuovocodice; Tipolista lis; bool giusto=FALSE; printf("Inserire il tipo di veicolo(a= 1posto/ b=2 posti):\n"); scanf("%c", &veicolo); printf("Inserire il codice del traghetto da prendere(compreso tra 0 e 14): \n"); scanf("%d", &codice); while(giusto!=TRUE){ if(codice>14){ printf("Errore!!\nRiprovare!!\n"); printf("Inserire il codice del traghetto da prendere(compreso tra 0 e 14): \n"); scanf("%d", &codice); }else giusto=TRUE; } occupazione= trasformacodice(veicolo); printf("Inserire il numero di posti totali del traghetto numero %d :\n",codice); scanf("%d", &viaggio.postitotali); printf("Inserire il numero di posti occupati del traghetto numero %d :\n",codice); scanf("%d", &viaggio.postioccupati); /*printf("occupazione = %d\n", occupazione);*/ nuovocodice= trovanave(viaggio,occupazione,codice); printf("%d\n", nuovocodice); printf("Inserire il nome del file da aprire:\n"); scanf("%s", nomefile); lis= crealista(nomefile,viaggio); stampalista(lis); return 0; } -------------------------------------------------------- nella funzione trovaviaggio, dopo 3 volte che faccio il ciclo, invece di andare avanti con il codice, torna indietro!! perchè!?? grazie ciao!! p.s. se siete interessati vi posso dare il testo che il file del programma.!
__________________
Non devo avere paura.La paura uccide la mente.La paura è la piccola morte che porta con sè l'annullamento. Guarderò in faccia la mia paura e la affronterò; e quando sarà passata non ci sarà più nulla.Soltanto io ci sarò. --->www.chebios.it <--- |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2000
Messaggi: 698
|
Ti consiglio vivamente di postare anche una spiegazione di che cose deve fare il programma, e poi i commenti non fanno mai male
Poi uno dei pochi difetti del forum è che elimina l'indentazione,rendendo meno leggibile il flusso del codice. Ti consiglio di provare a disegnare un diagramma di flusso (anche su carta), puo' esserti molto utile, così facendo sono riuscito ad interpretare interamente un sorgente asm(cpu risc di un pic) non commentato di cui sapevo solo a grandi linee il funzionamento della macchina che pilotava. Senza mi stavo impantanando alla 3a pagina(A4) di codice, e fai conto che non sono nè un esperto ne un buon programmatore (mi reputo ancora dilettante
__________________
Adepto del "La polvere è vita" clan. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2001
Città: DAJE ROMA DAJE
Messaggi: 1508
|
l'ho risolto in un altro modo!
e ora gira perfettamente!! se ti interessa ti mando i dati del problema e il codice!! ciao!
__________________
Non devo avere paura.La paura uccide la mente.La paura è la piccola morte che porta con sè l'annullamento. Guarderò in faccia la mia paura e la affronterò; e quando sarà passata non ci sarà più nulla.Soltanto io ci sarò. --->www.chebios.it <--- |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2000
Messaggi: 698
|
Mi fà veramente piacere che tu l'abbia risolto da solo
Attualmente sono già al lavoro su di un progetto che mi occupa abbastanza tempo, comunque grazie lo stesso.
__________________
Adepto del "La polvere è vita" clan. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:31.



















