- 2
- 0
- Scheda Madre
- Daviddix
- RAM
- Daviddix
- Audio
- Daviddix
- PSU
- Daviddix
- Case
- Daviddix
salve , ho realizzato questo programma ,però quando vado ad inserire il nome del file ovvero file.txt , questo non viene aperto , infatti il programma mi stampa "errore file", come posso risolvere ? grazie.
Ho inserito il codice nei tag CODE ed inoltre ho ottimizzato l algoritmo, tuttavia persiste il problema citato precedentemente.
Scusate se prima mi sono dimenticato di usare i tag..
Ho inserito il codice nei tag CODE ed inoltre ho ottimizzato l algoritmo, tuttavia persiste il problema citato precedentemente.
Scusate se prima mi sono dimenticato di usare i tag..
Codice:
/*leggere nome file di testo, acquisire nome cognome e media da file di testo,
*
*e stampare gli studenti in ordine crescente in base alla loro media*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define DIM 50
#define LUN 15
#define SALT 1
void AcquisireFileDiTesto(FILE **fp,char nome[DIM],char Vett1[DIM][LUN],float Vett2[DIM]);
void CompattaVett1(char Vett1[DIM][LUN]);
void StampaInOrdineCrescenteDegliStudenti(char Vett1[DIM][LUN],float Vett2[DIM]);
int TrovaPosizioneMinimo(float Vett2[DIM]);
int main(){
FILE *fp;
char nome[DIM];
char Vett1[DIM][LUN];
float Vett2[DIM];
printf("Inserisci il nome del file di testo (compreso di estensione) che vuoi aprire\n");
scanf("%s",nome);
AcquisireFileDiTesto(&fp,nome,Vett1,Vett2);
CompattaVett1(Vett1);
StampaInOrdineCrescenteDegliStudenti(Vett1,Vett2);
system("pause");
return 0;
}
void AcquisireFileDiTesto(FILE **fp,char nome[DIM],char Vett1[DIM][LUN],float Vett2[DIM]){
char fine;
int i = 0;
int j = 0;
*fp = fopen(nome,"r");
if (*fp == NULL){
printf("errore file");
}
while (fscanf(*fp,"%c",&fine) != '0' ) {
fscanf(*fp,"%s %s %f\n",Vett1[i],Vett1[i+1],&Vett2[j]); //nome cognome media
i = i + 1;
j = j + 2;
}
fclose(*fp);
Vett1[i][0] = '0'; //come posso inserire la stringa nel vettore manualmente? così ho inserito un carattere
Vett2[i] = 0;
}
void CompattaVett1(char Vett1[DIM][LUN]){
int i = 0;
while(strcmp(Vett1[i],"0") != 0 ){
strcat(Vett1[i],Vett1[i+1]);
i = i + 2;
}
Vett1[i][0] = '0'; //come posso inserire la stringa nel vettore manualmente? così ho inserito un carattere
}
void StampaInOrdineCrescenteDegliStudenti(char Vett1[DIM][LUN],float Vett2[DIM]){
int i = 0;
int pos;
while(strcmp(Vett1[i],"0") != 0 ){
pos = TrovaPosizioneMinimo(Vett2);
printf("%s %f\n",Vett1[pos],Vett2[pos]);
Vett2[pos] = SALT;
i = i + 2;
}
}
int TrovaPosizioneMinimo(float Vett2[DIM]){
int i;
int j = 0;
int min = Vett2[j];
while(Vett2[j] != 0){
if (Vett2[j] < min && Vett2[j] != SALT){
min = Vett2[j];
i = j;
}
j = j + 2;
}
return i;
}
Ultima modifica: