Salve, stavo provando a fare un algoritmo per l'università che era stato dato come tema d'esame, il testo è questo:
Scrivere un programma per il calcolo di statistiche sui caratteri presenti in un file di testo il cui nome è specificato come primo
parametro sulla riga di comando. Il file contiene un testo, suddiviso in una o più linee di lunghezza pari al più a 100 caratteri
cadauna. Ogni linea e' terminata da un carattere 'a capo'.
Nel calcolo delle statistiche, il programma considera i caratteri letti dal file AD ECCEZIONE DEGLI SPAZI E DEGLI 'A CAPO'.
Esso fornisce in uscita:
- il numero di linee presenti nel file;
- il numero totale di caratteri;
- il numero massimo e il numero medio di caratteri per linea;
- il testo completo della linea più lunga presente nel file.
Ad esempio, dato il file contenente il seguente testo:
Prova di contenuto di file
per avere un esempio.
Non e' importante quello che c'e' scritto
presente.
il programma visualizza:
Linee: 4
Car: 84
Max, Med: 35, 21
Linea max: Non e' importante quello che c'e' scritto
Per creare l'algoritmo ho creato una matrice di i caratteri (caratteri di ogni riga) e j righe (numero di righe lette a schermo):
#include <stdio.h>
#define MAX 100
int main()
{
int med, max, nrighe, ncaratteri[MAX], media, i, j, k, cartotali, rigamax;
typedef char Parole[MAX];
typedef Parole Righe[MAX];
i = 0;
j = 0;
k = 0;
nrighe = 0;
cartotali = 0;
max = 0;
med = 0;
rigamax = 0;
while ((i < 100) && (Parole[j][i] != '\0'))
{
i = 0;
while ((i < 100) && (Parole[j][i] != '\n'))
{
scanf("%c", &Parole[j][i]);
if ((Parole[j][i] != ' ') || (Parole[j][i] != '\n'))
{
ncaratteri[k]++;
}
i++;
cartotali = cartotali + ncaratteri[k];
if (ncaratteri[k] > max)
{
max = ncaratteri[k];
}
rigamax = k;
}
j++;
k++;
nrighe = j - 1;
}
med = cartotali / nrighe;
printf("Linee=%d", nrighe);
printf("Caratteri totali=%d", cartotali);
printf("Caratteri massimi per riga=%d", max);
printf("Caratteri medi per riga=%d", med);
printf("Linea massima=%s", Righe[rigamax]);
return 0;
}
in università ci hanno detto che per indicare un certo elemento della matrice bisogna dire NomeMatrice[j]
. Solo che quando compilo il programma ogni volta che scrivo cosi mi dice "expected primary-expression before '[' token". Sapete cosa ho sbagliato? Come lo avreste scritto voi l'algoritmo? Il mio funziona?
Grazie mille a chi risponderà.