FILE sequenza numeri

di il
28 risposte

FILE sequenza numeri

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é.

28 Risposte

  • Re: FILE sequenza numeri

    Ma sono tutti la stessa minestra....
    Non è possibile che sei in difficoltà dopo tutti questi...
  • Re: FILE sequenza numeri

    Vero, ma faccio comunque un po' di fatica...
    sapresti dirmi in che punto sbaglio?
  • Re: FILE sequenza numeri

    Sbagli che stai facendo troppi esercizi senza finirli, e penso anche senza capirli.
    Sono tutti esercizi facili una volta che:
    1) comprendi il testo, il che significa che sei in grado di tradurlo in tue parole. Se non sei in grado di fare questo non potrai mai programmare.
    2) conosci le basi del linguaggio in cui stai scrivendo. Più che fare centomila esercizi a questo ritmo prenditi un libro di teoria e studia.
  • Re: FILE sequenza numeri

    Le basi del linguaggio le conosco (o almeno conosco quelle che ci hanno insegnato a lezione) il mio non è un corso avanzato non faccio nemmeno l'informatico...
  • Re: FILE sequenza numeri

    La cosa non mi riguarda

    Cosa devi fare secondo me te lo ho già detto
  • Re: FILE sequenza numeri

    Inoltre Come puoi pensare che noi siamo in grado di dirti dove sbagli senza conoscere:
    1) il resto del programma da te utilizzato ( Senza il quale, come tu stesso già sai, il programma nemmeno compila. Quindi Almeno impara ad utilizzare le informazioni che hai)
    2) il file di input che utilizzi
    3) l'output che ottieni

    Inoltre rispondi a questa mia domanda:
    Perché stai portando avanti contemporaneamente due diversi esercizi? La cosa facilità soltanto che nessuno dei due ti esca.
  • Re: FILE sequenza numeri

    silente ha scritto:



    Inoltre rispondi a questa mia domanda:
    Perché stai portando avanti contemporaneamente due diversi esercizi? La cosa facilità soltanto che nessuno dei due ti esca.
    di quale esercizio parli? li ho risolti tutti quelli che ho scritto qui sul forum...

    comunque dentro il file è presente:
    52 55 58 3 4 52 155 56 57 8 55 55 55 55 55 55 72 55 55 55 555 555 555 555 555 75 75 57 76 74
    l'output che ottengo è: 1

    il codice l'ho mandato tutto nel primo post con relativo testo, e compila normalmente.
  • Re: FILE sequenza numeri

    Quando posti il codice deve essere COMPLETO. Di main, di dichiarazioni, di funzioni ... di tutto...

    Deve essere COPIABILE e COMPILABILE, altrimenti NESSUNO impiegherà un minuto per correggere roba di cui non si conosce la maggior parte del codice.

    Te l'ho già detto che stai usando il forum in maniera sbagliata ... qui NON CI SONO TUTOR personali.
  • Re: FILE sequenza numeri

    
    int n[1];
    
    Vabbè dai, ci stai prendendo per i fondelli
  • Re: FILE sequenza numeri

    È sbagliato? volevo salvare nel primo spazio di quell'array il risultato...
  • Re: FILE sequenza numeri

    Ma tu capisci quello che ti si scrive? Comincio ad avere dubbi
  • Re: FILE sequenza numeri

    Lo stai facendo apposta dai. Anche l'indentazione di quei due if con le graffe invertite apposta per confondere. Piantala su
  • Re: FILE sequenza numeri

    Weiestrass no... ti ho già detto che non ho motivo di venire in un forum di programmazione per confondervi(?), sto studiando per un esame che motivo avrei?

    se sbaglio significa che non sono abbastanza bravo, per l'indentazione non ci ho fatto caso... scrivo sempre così e a me sembra ordinato...
  • Re: FILE sequenza numeri

    Continui ad ignorare quello che ti si scrive ... addirittura non rispondi neanche ai post ... che dire ...
Devi accedere o registrarti per scrivere nel forum
28 risposte