[C] aiuto su programma

pinox1
ciao a tutti ho difficoltà a svolgere questo esercizio,spero che qualcuno possa aiutarmi:
la traccia è inserimento dati paseggeri e ricerca con stampa dei passeggeri diretti a roma dalle 15 alle 19.
grazie tante per l'aiuto.. :wink:
io ho provato a svolgerlo così:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "voli.h"
FILE * fp;

typedef struct
{
 
  char nome_cognome[20];
  int volo;
  char citta_arrivo[15];
  int orario;
  
}prenotazione;


prenotazione mia_prenotazione; 





int main()
{
  char operazione;
 
do {
	 printf("\n *****************************");
    printf("\n MENU\n ");
	printf("\n 1:INSERIMENTO PRENOTAZIONE\n");
	printf("\n 2:STAMPA NUM. TOTALE VOLI PER ROMA\n");
	printf("\n 3:ESC\n");
     printf("\n *****************************\n");
    scanf("%c",&operazione);
 
 
    switch(operazione) 
    {
      case '1':inserisci();
				break;

      case '2':stampa();
        break;
    }


  } 
while (operazione!='3');

}

void inserisci()
{
 printf("\n inserimento nome paseggero\n");
 scanf("%s",mia_prenotazione.nome_cognome);
printf("\n inserimento volo\n");
scanf("%d",&mia_prenotazione.volo);
 printf("\n inserimento destinazione\n");
 scanf("%s",mia_prenotazione.citta_arrivo);
printf("\n inserimento orario arrivo\n");
 scanf("%d",&mia_prenotazione.orario);

if ((fp=fopen("File.txt","a"))== NULL)
  {
    printf("Impossibile aprire il file\n");
    exit(1);
  }
fwrite(&mia_prenotazione,sizeof(prenotazione),1,fp);
fclose(fp);
}



void stampa()
{
	
	
	if ((fp=fopen("File.txt","a"))== NULL)

  {
    printf("Impossibile aprire il file\n");
    exit(1);
  }
int voli=0;

	
	 while(fread(&mia_prenotazione,sizeof(prenotazione),1,fp));
   
	 if(strcmp(mia_prenotazione.citta_arrivo,"Roma")==0 && mia_prenotazione.orario>15 && mia_prenotazione.orario<19);





{
voli=voli+1;
}
printf("\nil numero totale dei voli per Roma:\n");
printf("%d",voli);
fclose(fp);
system("pause");
}

Risposte
pinox1
grazie
appena possibile ti dò notizie sul funzionamento del programma.
;-)

pinox1
ciao
ho sistemato il programma ed è funzionante apparte il float che non funziona,ma ho rimediato con int.Nella parte della ricerca dell'offerta ho effettuato un ordinamento in base al prezzo e funziona, ma vorrei successivamente stampare solo quello con il prezzo piu basso è possibile ?


void Ordina()
{
FILE *fp;
fp=fopen("File.txt","r");


offerta temp;
offerta vettoffert[N];
int i,j;
int k,conta;
rewind(fp);
//ciclo per la lettura dei dati dal file,legge i dati e li assegna al vettore di srutture

conta=0;

while(!feof(fp)){
fread(&vettoffert[conta],sizeof(offerta),1,fp);
conta++;
}
//cilco per l'ordinamento rispetto al prezzo

for (i=0;i {
for(j=i+1;j {
if(vettoffert.prezzo>vettoffert[j].prezzo)
{
temp=vettoffert;
vettoffert=vettoffert[j];
vettoffert[j]=temp;
}
}
}
//stampa del vettore ordinato
printf("la sequenza ordinata di prodotti è:\n");

for(k=0;k printf("PREZZO:%d\n MARCA:%s\n QUANTITA:%d\n",vettoffert[k].prezzo,vettoffert[k].marca,vettoffert[k].numpezzi);

}

NerdInside
Certo che è possibile, e non è neanche difficile, se ci pensi.
In fondo, il vettore con la lista di tutte le offerte lo controlli già per ordinarlo.
Ti basta fare un controllo semplice, ed è fatta! :wink:

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.