problemi o col dos o cn il compilatore

Messaggioda inginfoaria » 11/01/2005, 11:27

salve, quando campilo e poi eseguo il programma mi esce una scritta che mi dice che c'è un errore nel file.exe, inviare errori?cm mai se prima andava perfettamente!
inginfoaria
Junior Member
Junior Member
 
Messaggio: 80 di 175
Iscritto il: 14/10/2004, 14:39

Messaggioda inginfoaria » 11/01/2005, 11:59

inolte qlc mi sa dire cm smistare le persone tra le varie categorie senza usare il random in qst prog

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<strings.h>
#include<time.h>

/*dichiarazione delle struct tipo_t, client_t, cat_t e cmp_t che mi servirà per la
funzione cmp (=compare) che riordinerà i risultati ottenuti, stilando una classifica*/

typedef struct {

char *tipoveicolo;
char *categoria;

}tipo_t;

typedef struct prezzotype{

float costoveicolo;
float prezzocategoria;

}prezzo_t;


typedef struct clientype {

tipo_t type;
int maxpersone;
int totalepersone;
int npersone;
prezzo_t preis;
int nposti;
int totaleposti;
int prob;

} client_t;

typedef struct cmptype{

float incasso;
int perstot, ni, pni;
int maxcategoria;

}cmp_t;


/*le funzioni cmppers e cmpinc servono per fare una classifica in base al giorno che ha
trasportato più persone e ha incassato di più*/

void printclient(client_t *t, int n){

int i;

for(i=0; i<n; i++){

printf("%s -%s\n", t[i].type.tipoveicolo, t[i].type.categoria);
printf("%d\n", t[i].totalepersone);
printf("%d\n", t[i].npersone);
printf("%f - %f\n", t[i].preis.costoveicolo, t[i].preis.prezzocategoria);
printf("%d\n", t[i].totaleposti);
printf("%d\n", t[i].prob);
}
}



int cmppers(const void *a,const void *b){

cmp_t*pa=(cmp_t*)a;
cmp_t*pb=(cmp_t*)b;
if(pa->ni> pb->ni)return 1;
if(pa->ni< pb->ni)return -1;
return 0;
}

int cmpinc(const void *a, const void *b){

cmp_t*pa=(cmp_t*)a;
cmp_t*pb=(cmp_t*)b;
if(pa->incasso> pb->incasso)return 1;
if(pa->incasso< pb->incasso)return -1;
return 0;
}

int cmptipoveicolo(const void *a, const void *b){

client_t*pa=(client_t*)a;
client_t*pb=(client_t*)b;
if(pa->type.tipoveicolo>pb ->type.tipoveicolo )return 1;
if(pa->type.tipoveicolo< pb->type.tipoveicolo)return -1;
return 0;
}

int main(int argc, char *argv[]){

// Dichiarazione delle variabili

FILE *fpi;/*fpi è un puntatore a FILE e p è un puntatore a una variabile di
tipo char che mi servirà per far leggere dal programma il file di
testo .txt*/
char *p, b[BUFSIZ];
client_t *traghetto;
cmp_t *classifica;
int n, i, g; /*i e g sono indici, contatori*/
int ni, pni; /*ni è il numero delle persone imbarcate e pni è il numero delle
persone non imbarcate*/
int ngiorni, totpostimezzi, veicolo, posticat;
int nnsaliti,pers, people;
ngiorni=atoi(argv[2]);

fpi=fopen(argv[1], "r"); /*apro il file in sola lettura*/


/*Questo if contolla che il programma sia lanciato nel modo corretto*/

if(argc!=3){
printf("\nIl programma deve essere lanciato in questo modo:\n");
printf("\t>traghetto traghetto.txt <Giorni della simulazione>\n\n");
exit(1);
}

/*contollo inoltre che il puntatore a file non sia nullo*/

if(fpi==NULL){

perror(argv[1]);
exit(1);
}

/*Questo if controlla che il numero di giorni della simulazione sia 10*/

if(ngiorni<10){

printf("i giorni della simulazione devono essere almeno 10\n");
exit(1);

}

p=(fgets(b,sizeof(b),fpi));
n=atoi(b);
traghetto=(client_t*)malloc(n*sizeof(client_t));

/*Allocazione dinamica dello spazio per le struct e ciclo di apertura dell file
e memorizzazione, per l'inserimento die dati nella struct*/

if(traghetto==NULL){

perror(argv[1]);
exit(1);
}

i=0;

while(n>i){

p=strtok(b,"|");
traghetto[i].type.tipoveicolo=(char*)malloc(strlen(p)+1);
strcpy(traghetto[i].type.tipoveicolo,p);
p=strtok(b,"|");
traghetto[i].type.categoria=(char*)malloc(strlen(p)+1);
strcpy(traghetto[i].type.categoria,p);
p=strtok(NULL,"|");
traghetto[i].totalepersone=atoi(p);
p=strtok(NULL,"|");
traghetto[i].npersone=atoi(p);
p=strtok(NULL,"|");
traghetto[i].preis.costoveicolo=atof(p);
p=strtok(NULL,"|");
traghetto[i].preis.prezzocategoria=atof(p);
p=strtok(NULL,"|");
traghetto[i].totaleposti=atoi(p);
p=strtok(NULL,"|");
traghetto[i].prob=atoi(p);
i++;
}

for(i=0; i<n; i++){

float a;
classifica[i].incasso=traghetto[i].preis.costoveicolo+traghetto[i].preis.prezzocategoria;
a=a+classifica[i].incasso;
}
fclose(fpi);


classifica=(cmp_t*)malloc(n*sizeof(cmp_t));
if(classifica==NULL){
perror(argv[1]);
exit(1);
}

/*iniziallizzo random per evitare che i valori vengano ripetuti*/

srand(time(NULL));

/*ciclo dei giorni*/

for(g=0; g<ngiorni; g++){

/*per ogni giornata il numero delle persone in colonna, dei mezzi e il tipo di qst ultimi è casuale*/


posticat=(rand()%1000)+500;
pers=(rand()%2000)+1000;

/*stabilisco quanti sono i posti disponibili per le persone e per i mezzi*/

for(i=0; i<n; i++){

veicolo= rand()%7;

switch(veicolo){

case 0:
traghetto[veicolo].nposti=100;
break;

case 1:

traghetto[veicolo].nposti=150;
break;

case 2:

traghetto[veicolo].nposti=15;
break;

case 3:

traghetto[veicolo].nposti=25;
break;


case 4:

traghetto[veicolo].nposti=200;
break;

case 5:

traghetto[veicolo].nposti=100;
break;

case 6:

traghetto[veicolo].nposti=10;
break;
}


for(veicolo=0; veicolo<7; veicolo++){

traghetto[veicolo].nposti=traghetto[veicolo].nposti+traghetto[veicolo++].nposti;

}

}

for (i=0; i<n; i++){

people=rand()%3;

switch(people){

case 0:
traghetto[people].maxpersone=150;
break;

case 1:
traghetto[people].maxpersone=250;
break;

case 2:
traghetto[people].maxpersone=600;
break;
}

for(people=0; people<3; people++){

traghetto[people].maxpersone=traghetto[people].maxpersone + traghetto[people++].maxpersone;
classifica[people].maxcategoria=pers-traghetto[people].maxpersone;
classifica[people].perstot=classifica[people].perstot+classifica[people].maxcategoria;
classifica[people].pni=pers-classifica[people].perstot;
classifica[people].ni= pers-classifica[people].pni;


}

}
printf("Le persone salite oggi sono %d, mentre quelle non salite %d\n", classifica[people].ni,classifica[people].pni);
printf("L'incasso quotidiano e di %f euro\n", classifica[i].incasso*classifica[people].ni);


}

qsort(traghetto, n, sizeof(client_t), cmptipoveicolo);
printclient(traghetto, n);
printf("CLASSIFICA DEL TIPO DI MEZZI PER GIORNATA\n");

for(i=0; i<n; i++){

printf("%s\n", traghetto[i].type.tipoveicolo);
}

qsort(classifica, n, sizeof(cmp_t), cmppers);
printf("\nCLASSIFICA DEL NUMERO DELLE PERSONE IMBARCATE\n");

for(i=0; i<n; i++){

printf("%d\n",classifica[i].ni);

}

qsort(classifica, n, sizeof(cmp_t), cmpinc);
printf("\nCLASSIFICA DEGLI INCASSI\n");

for(i=0; i<n; i++){

printf("%f\n", classifica[i].incasso);

}
}
inginfoaria
Junior Member
Junior Member
 
Messaggio: 81 di 175
Iscritto il: 14/10/2004, 14:39


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite