Salve a tutti ragazzi.. Sono iscritto in Ingegneria informatica, ma sono ancora alle prime armi e questo mercoledì avrò una prova in itinere.. Il corso è solo sul linguaggio C
Me la cavo con le cose fondamentali, ma con gli array, puntatori e file ho qualche problemino.. In particolare un esercizio mi chiede di:
"Scrivere un programma che legge dal file ingresso.txt una sequenza di stringhe (stringa) e stampa nel file di uscita uscita.txt, la lunghezza massima, la lunghezza minima e la media delle lunghezze uno per riga nell'ordine richiesto"
Il file ingresso è costituito dalle seguenti stringhe:
Cane
Gatto
Pecora
Tigre
Scimmia
Quello che ho scritto io finora è questo:
► Mostra testo
#include <stdio.h>
#include <string.h>
main()
{
FILE *in, *out;
char *buf;
int max, min, media;
buf = malloc(256 * sizeof(char)); /* in modo da avere un allocazione dinamica della dimensione dell'array, così facendo se la professoressa dovesse passarsi il tempo a provare stringhe sempre più lunghe non riuscirà a fregarmi, giusto?*/
max = 0;
media = 0;
min = 0;
in = fopen("Ingresso.txt", "r");
out = fopen("Uscita.txt", "w");
if (in == NULL || out == NULL) /*soliti controlli di apertura*/
{
printf("\nApertura non riuscita\n");
return 0;
}
else
printf("\nApertura riuscita, operazioni in corso\n");
min = strlen(buf); /*qua iniziano i problemi */
max = strlen(buf);
while (fgets(buf, sizeof (buf), in) != NULL) /* con questo voglio intendere che deve ripetere il ciclo finchè il file non termina */
{
if (strlen(buf) < min)
max = strlen(buf);
fprintf(out, "%d \n", min);
if (strlen(buf) > max)
max = strlen(buf);
fprintf(out, "%d \n", max); /* so che devo aggiungere qualcosa, oltre al calcolo della media, ma non so come fare*/
}
}
Purtroppo però il programma che ho scritto non svolge il suo dovere
, spero nel vostro aiuto