Ciao sono incappato in questo esercizio di cui non riesco a capire come svolgere una piccola parte... il mio codice sembra corretto però non funziona:
/*a) Scrivere un sottoprogramma analizzanumero che riceve come parametri due numeri interi n e
val. Una volta assicuratosi che val sia un valore compreso tra 0 e 9 (estremi inclusi) e che n sia
maggiore di 10, il sottoprogramma estrae da n il valore delle decine e verifica che sia uguale a val. Il
sottoprogramma restituisce 1 nel caso la condizione sia vera, 0 se la condizione è falsa o nel caso i dati
in ingresso non siano validi.
b) Scrivere un programma che apre un file di testo testo.txt contenente una serie di lunghezza
indefinita (zero o più) di numeri interi. Mediante l’utilizzo del sottoprogramma analizzanumero il
programma calcola la lunghezza di ciascuna sequenza di numeri consecutivi aventi il valore 5 nella
posizione delle decine e stampa a video la lunghezza massima. Ad esempio, se il file contiene il
seguente testo:
51 55 12 151 3 3 555 656 454 1256 4
Il programma stamperà a video: 4.*/
#include <stdio.h>
int analizzanumero(int n, int val){
int temp=0;
int temp2=0;
if(n<10){
return 0;
}
temp=n/10;
temp2=temp%10;
if(temp2==val){
return 1;
}else{
return 0;
}
}
int main(){
int a;
FILE* fp;
int conto=0;
int n[1];
fp=fopen("numeretti.txt","r");
int temp=0;
if(!fp){
printf("errore nell'apertura del file");
}else{
while(fscanf(fp, "%d", &a)!=EOF){
if(analizzanumero(a,5)==1){
conto++;
if(temp<conto){
n[0]=conto;
}
}else{
temp=conto;
conto=0;
}
}
}
printf("%d", n[0]);
fclose(fp);
return 0;
}
il codice che ho scritto per il sototprogramma sono sicuro sia corretto perché l'ho testato più volte, ma il mio problema è nel main,
in questo punto:
while(fscanf(fp, "%d", &a)!=EOF){
if(analizzanumero(a,5)==1){
conto++;
if(temp<conto){
n[0]=conto;
}
}else{
temp=conto;
conto=0;
}
}
printf("%d", n[0]);
Non capisco il punto in cui sbaglio, ho usato una variabile temporanea che salva la variabile conto, ma non sembra funzionare e continua a damri il risultato sbagliato... non riesco a capire il perché.