Non capisco il problema mi dice che non ho inizializzato il void?

di il
32 risposte

32 Risposte - Pagina 2

  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    jfet ha scritto:


    Sir.Croccodile ha scritto:


    oregon ha scritto:


    Di che tipo è Cognome? È quello che stai passando. É quello che accettava la funzione?
    Cognome dovrebbe essere una stringa di char professore.Cognome contenuta dentro all'array di struct giusto? Ma io invece gli sto passando una variabile di tipo Docenti che è un typedef di struct, quindi dovrei passargli una variabile di tipo Stringa? Ma quindi poi come potrò eliminare il nodo all'interno della pila?


    Confusione. Questo succede quando inizi a scrivere C e salti i primi 5 capitoli del libro perché "tanto ho capito e lo so fare".


    No ma il mio libro è molto poco dettagliato in queste cose i programmi spesso non funzionano proprio!
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    jfet ha scritto:


    Sir.Croccodile ha scritto:


    Io con le liste e l'utilizzo dei nodi sto un pò litigato mi consigliate qualche testo web per capirci un pò in più che dal mio libro non ci capisco niente?
    Cosa intendi per testo web? Tutorials online? Cmq una buona lista di libri C puoi trovarla qua https://web.archive.org/web/20180103230717/http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
    Intendevo le liste adt stack pointer ecc...
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Sir.Croccodile ha scritto:


    jfet ha scritto:


    Sir.Croccodile ha scritto:


    Cognome dovrebbe essere una stringa di char professore.Cognome contenuta dentro all'array di struct giusto? Ma io invece gli sto passando una variabile di tipo Docenti che è un typedef di struct, quindi dovrei passargli una variabile di tipo Stringa? Ma quindi poi come potrò eliminare il nodo all'interno della pila?


    Confusione. Questo succede quando inizi a scrivere C e salti i primi 5 capitoli del libro perché "tanto ho capito e lo so fare".


    No ma il mio libro è molto poco dettagliato in queste cose i programmi spesso non funzionano proprio!


    E allora cambialo! Ti ho fornito una lista... C primer plus è un buon inizio, molto completo.
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    jfet ha scritto:


    Sir.Croccodile ha scritto:


    jfet ha scritto:



    Confusione. Questo succede quando inizi a scrivere C e salti i primi 5 capitoli del libro perché "tanto ho capito e lo so fare".
    No ma il mio libro è molto poco dettagliato in queste cose i programmi spesso non funzionano proprio!
    E allora cambialo! Ti ho fornito una lista... C primer plus è un buon inizio, molto completo.
    Stavo usando il dietel e dietel però mi sono fermato ad usarlo e ho iniziato ad usare questo per vedere come vuole che io programmi il prof poi a programmazione I lo riprendo, ma devo riprenderlo assolutamente in questi giorni. Per il momento mi dite cosa sbagliavo che me lo vado poi a rivedere?
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Cosa sbagliavi te l'ho già detto qualche post fa ma non sei stato in grado di capirlo...e probabilmente non è l'unico errore. Non prenderla sul personale, ma è meglio che prima rivedi, ripassi, ristudi e poi riaffronti da solo il tuo codice. Sicuramente riuscirai a comprendere meglio i nostri suggerimenti, magari trovando da solo l'errore/gli errori.
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    jfet ha scritto:


    Cosa sbagliavi te l'ho già detto qualche post fa ma non sei stato in grado di capirlo...e probabilmente non è l'unico errore. Non prenderla sul personale, ma è meglio che prima rivedi, ripassi, ristudi e poi riaffronti da solo il tuo codice. Sicuramente riuscirai a comprendere meglio i nostri suggerimenti, magari trovando da solo l'errore/gli errori.
    No perchè anzi fate bene si viene qui per chiedere consigli non per avere ripetizioni, però non puoi darmi per questa volta la soluzione? Così domani me la vado a rivedere almeno capisco che cosa devo approfondire, almeno se qualche altro ragazzo viene sul sito e ha un problema simile al mio può capire cosa deve studiare meglio come me.
    Ma quei libri sono tutti in inglese eh?
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Sir.Croccodile ha scritto:


    jfet ha scritto:


    Cosa sbagliavi te l'ho già detto qualche post fa ma non sei stato in grado di capirlo...e probabilmente non è l'unico errore. Non prenderla sul personale, ma è meglio che prima rivedi, ripassi, ristudi e poi riaffronti da solo il tuo codice. Sicuramente riuscirai a comprendere meglio i nostri suggerimenti, magari trovando da solo l'errore/gli errori.
    No perchè anzi fate bene si vieni qui per chiedere consigli non per avere ripetizioni, però non puoi darmi per questa volta la soluzione? Così domani me la vado a rivedere almeno capisco che cosa devo approfondire, almeno se qualche altro ragazzo viene sul sito e ha un problema simile al mio può capire cosa deve studiare meglio come me.
    Ma quei libri sono tutti in inglese eh?
    LIbri in inglese si, sono i migliori. Per quanto riguarda l'errore ripeto ti ho già detto cosa non andava, chiami una funzione che accetta un puntatore di un tipo passandole un puntatore di un altro. Se non riesci a comprendere allora è bene che riparti dalle stringhe, magari la differenza tra array di char e puntatori a stringa e una bella ripassata ai puntatori in generale. Così dovresti riuscire a capire l'errore. Fatto questo puoi riniziare completamente da 0 per quanto riguarda le strutture.
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    jfet ha scritto:


    Sir.Croccodile ha scritto:


    jfet ha scritto:


    Cosa sbagliavi te l'ho già detto qualche post fa ma non sei stato in grado di capirlo...e probabilmente non è l'unico errore. Non prenderla sul personale, ma è meglio che prima rivedi, ripassi, ristudi e poi riaffronti da solo il tuo codice. Sicuramente riuscirai a comprendere meglio i nostri suggerimenti, magari trovando da solo l'errore/gli errori.
    No perchè anzi fate bene si vieni qui per chiedere consigli non per avere ripetizioni, però non puoi darmi per questa volta la soluzione? Così domani me la vado a rivedere almeno capisco che cosa devo approfondire, almeno se qualche altro ragazzo viene sul sito e ha un problema simile al mio può capire cosa deve studiare meglio come me.
    Ma quei libri sono tutti in inglese eh?
    LIbri in inglese si, sono i migliori. Per quanto riguarda l'errore ripeto ti ho già detto cosa non andava, chiami una funzione che accetta un puntatore di un tipo passandole un puntatore di un altro. Se non riesci a comprendere allora è bene che riparti dalle stringhe, magari la differenza tra array di char e puntatori a stringa e una bella ripassata ai puntatori in generale. Così dovresti riuscire a capire l'errore. Fatto questo puoi riniziare completamente da 0 per quanto riguarda le strutture.
    Io ho risolto così, ma ora mi da un problema che fino ad ora non si era mai presentato come mai?

    Funzioni
    #include "alfabetico.h"
    
    void carica_file(Stringa nome, fstream &f, Docenti professore, int *d){
    	
    	int i=0;
    	
    	cout<<"\n Inserisci nome del file che vuoi caricare :";
    	cin.getline(nome,STR_MAX-1, '\n');
    	f.open(nome, ios::in);
    	if(!f){
    		
    		cout<<"\n Errore durante l'inserimento del nome del file...";
    		exit(1);
    		
    	}else{
    		
    		while(!f.eof()){
    			
    			f>>professore[i].Cognome;
    			f>>professore[i].Numero;
    			i++;
    		}
    		i--;
    	}
    
    	*d=i;	
    	f.close();
    }
    
    void stampa_file( Docenti insegnanti, int dimensione){
    	
    	cout<<"\n Stampo il file :\n";
    	for(int i=0; i<dimensione; i++){
    		
    		cout<<insegnanti[i].Cognome<<endl;
    		cout<<insegnanti[i].Numero<<endl;
    		
    	}
    	
    }
    
    void controllo_ordine( Docenti professori, int size){
    	
    	Professore scambio;
    	int risult, cont;
    
    	
    	for(int i=0; i<size; i++){
    		
    		for(int j=i+1; j<size; j++){
    
    			risult=strcmp(professori[i].Cognome, professori[j].Cognome);
    			
    				if(risult>0){
    				
    				scambio=professori[i];
    				professori[i]=professori[j];
    				professori[j]=scambio;
    				
    					}else{
    		
    				cont++;
    				risult=cont;
    		
    			}
    		}
    			
    	}
    	
    	if(risult==size){
    		
    		cout<<"\n L'elenco è già ordinato alfabeticamente \n";
    		
    	}
    	
    	stampa_file(professori, size);
    	cout<<"\n Controllo se ci sono elementi uguali: \n";
    	elimina_uguali(professori, size);
    	stampa_file(professori, size);
    	
    }
    
    void elimina_uguali(Docenti prof, int s){
    	
    Pnodo L1;
    int ris;
    	
    for(int i=0; i<s; i++){
    		
    	for(int j=i+1; i<s; j++){
    	
    		ris=strcmp(prof[i].Cognome, prof[j].Cognome);
    		
    			if(ris==0){
    			
    				cancella_nodo(prof[j].Cognome,j, L1);
    							
    			}
    					
    		}
    				
    	}	
    			
    }
    		
    void cancella_nodo(Stringa insegnante,int j, Pnodo &n1){
    
    
    Pnodo Temp;
    		
    	if(n1!=NULL){
    
    		if(n1->Cognome==insegnante[j].Cognome){
    								
    			Temp=n1;
    			n1=n1->next;
    			delete Temp;
    			}else {
    			
    				cancella_nodo(insegnante, j, n1);
    			
    			}
    		}
    }
    Librerie
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <cstring>
    
    using namespace std;
    
    #define STR_MAX 100
    #define VET_MAX 100
    
    typedef char Stringa [STR_MAX];
    
    typedef struct Lista{
    	
    	Stringa Cognome;
    	int Numero;
    	Lista *next;
    	
    }Professore;
    
    typedef Lista* Pnodo;
    typedef Professore Docenti [VET_MAX];
    
    void carica_file(Stringa, fstream &f, Docenti , int *);
    void stampa_file( Docenti, int);
    void controllo_ordine(Docenti, int);
    void confronto(Stringa , Stringa , int *);
    void scambio(Docenti, int);
    void elimina_uguali(Docenti, int);
    void cancella_nodo(Stringa ,int , Pnodo &);
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Ma invece libri in italiano che mi consigli?
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Ti consiglio di sforzarti di usare l'inglese. Purtroppo per te non è affatto un mio parere soggettivo. La differenza è palpabile.
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Per il problema nuovo...se non ho capito male hai aggiunto un const nella chiamata ma non nella definizione.
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Void stampa_file( Docenti, int);
    questo è il prototipo nella libreria
    void stampa_file( Docenti insegnanti, int dimensione)
    questo è nella funzione
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Ora ho aaggiunto const in entrambe le dichiarazione sia nella libreria che nelle funzioni e funziona perchè?
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    jfet ha scritto:


    Ti consiglio di sforzarti di usare l'inglese. Purtroppo per te non è affatto un mio parere soggettivo. La differenza è palpabile.
    Lo so semmai dopo aver fatto programmazione i prenderò dei testi specializzati in inglese per corsi di programmazione più avanzati spero che mi darai qualche consiglio, per il momento voglio prima prendere dimestichezza con il linguaggio
  • Re: Non capisco il problema mi dice che non ho inizializzato il void?

    Sir.Croccodile ha scritto:


    Ora ho aaggiunto const in entrambe le dichiarazione sia nella libreria che nelle funzioni e funziona perchè?
    Ovviamente non puoi passare un parametro costante a una funzione che non considera quel parametro costante. A meno che passi per copia anziché per indirizzo come fai tu.
Devi accedere o registrarti per scrivere nel forum
32 risposte