Struct in c

di il
25 risposte

Struct in c

Salve, come posso passare una determinata variabile della struct come parametro in una funzione?
Cioè, io ho questo:

typedef struct{
	char marca[N];
	int cilindrata;
	int immatricol;
	char nome[N];
	char cognome[N];
} automobili;

int main(){
	automobili salone[max];

	int dim=0, i;
	
	printf("Quante auto vuoi inserire?\n");
	scanf("%d", &dim);
	
	for(i=0;i<dim;i++){
		printf("\n\n");
		printf("Auto %d", i+1);
		
		printf("\nMarca: ");
		scanf("%s", salone[i].marca);
		
		printf("\nCilindrata: ");
		scanf("%d", &salone[i].cilindrata);
		
		printf("\nAnno di immatricolazione: ");
		scanf("%d", &salone[i].immatricol);
		
		printf("\nNome proprietario: ");
		scanf("%s", salone[i].nome);
		
		printf("\nCognome proprietario: ");
		scanf("%s", salone[i].cognome);
	}
per la funzione mi serve solo salone(i).cilindrata, come posso passare come parametro solo quello? (scrivo con le parentesi tonde perché con le quadre mi cancella la i e mi cambia il foto, ma ovviamente li intendo le parentesi quadre)

25 Risposte

  • Re: Struct in c

    È un int quindi come un normale int

    Ma di quale funzione parli?
  • Re: Struct in c

    oregon ha scritto:


    È un int quindi come un normale int

    Ma di quale funzione parli?
    Nel codice non l'ho scritta. Quindi mi basta scrivere così?
    
    void controllo_cilindrata(int salone[].cilindrata, int dim);
    
  • Re: Struct in c

    No... è un intero quindi

    int cil

    Passerai un solo valore per volta non tutti. Se li vuoi passare tutti allora devi passare l'array salone per puntatore ovviamente. Ricorda in questo caso come si passano gli array, devi averlo studiato.
  • Re: Struct in c

    oregon ha scritto:


    No... è un intero quindi

    int cil

    Passerai un solo valore per volta non tutti. Se li vuoi passare tutti allora devi passare l'array salone per puntatore ovviamente
    ahh okok, grazie
  • Re: Struct in c

    Che deve fare la funzione? Magari se sei più chiaro...
  • Re: Struct in c

    oregon ha scritto:


    Che deve fare la funzione? Magari se sei più chiaro...
    semplicemente questo:
    for(i=0;i<dim;i++){
    		if(salone[i].cilindrata>1800){
    			k++;
    			printf("\n\nIl cognome del proprietario ,con cilindrata >1800, numero %d e': %s", k, salone[i].cognome);
    		}
    	}
    appunto un controllo sulla cilindrata
  • Re: Struct in c

    oregon ha scritto:


    Che deve fare la funzione? Magari se sei più chiaro...
    ora ho scritto questo codice (l'esercizio è diverso), non mi da errore ma non mi fa la media
    
    
    typedef struct{
    	float italiano;
    	float matematica;
    	float informatica;
    }discipline;
    
    void media(discipline studenti[], int num_voti);
    
    int main(){
    	discipline studenti[20];
    	int num_voti=0;
    	
    	printf("Quanti voti vuoi inserire? (massimo 20)\n");
    	scanf("%d", &num_voti);
    	
    	for(i=0;i<num_voti;i++){
    		printf("\n");
    		printf("Inserisci il voto numero %d di italiano: ", i+1);
    		scanf("%f", &studenti[i].italiano);
    		
    		printf("Inserisci il voto numero %d di matematica: ", i+1);
    		scanf("%f", &studenti[i].matematica);
    		
    		printf("Inserisci il voto numero %d di informatica: ", i+1);
    		scanf("%f", &studenti[i].informatica);
    	}
    	
    	media(studenti, num_voti);
    }
    
    void media(discipline studenti[], int num_voti){
    	int k=0, i;
    	float somma=0;
    	for(i=0;i<num_voti;i++){
    		somma=somma+studenti[i].italiano;
    		k++;
    	}
    	somma=somma/k;
    	printf("\nLa media dei voti di italiano e': %.2f", somma);
    	
    	k=0;
    	somma=0;
    	for(i=0;i<num_voti;i++){
    		somma=somma+studenti[i].matematica;
    		k++;
    	}
    	somma=somma/k;
    	printf("\nLa media dei voti di matematica e': %.2f", somma);
    	
    	k=0;
    	somma=0;
    	for(i=0;i<num_voti;i++){
    		somma=somma+studenti[i].informatica;
    		k++;
    	}
    	somma=somma/k;
    	printf("\nLa media dei voti di informatica e': %.2f", somma);
    }
  • Re: Struct in c

    In che senso? Hai errori di compilazione?
  • Re: Struct in c

    oregon ha scritto:


    In che senso? Hai errori di compilazione?
    scusa se ti rispondo solo ora. Mi stampa le medie tutte uguali a 0
  • Re: Struct in c

    Ma che compilatore usi? Quando compili cosa scrivi? Cosa ottieni dal compilatore?

    Ti dovrebbe dare un errore perché nel codice c'è un errore...
  • Re: Struct in c

    oregon ha scritto:


    Ma che compilatore usi? Quando compili cosa scrivi? Cosa ottieni dal compilatore?

    Ti dovrebbe dare un errore perché nel codice c'è un errore...
    uso Dev-c++ e non mi da errori quando eseguo :(
  • Re: Struct in c

    Devc++ è un IDE, avrai installato un compilatore tipo mingw o simili. Ti consiglio di cambiarli...

    La variabile i non è dichiarata e non dovrebbe proprio compilare.

    Prova con un compilatore online
  • Re: Struct in c

    oregon ha scritto:


    Devc++ è un IDE, avrai installato un compilatore tipo mingw o simili. Ti consiglio di cambiarli...

    La variabile i non è dichiarata e non dovrebbe proprio compilare.

    Prova con un compilatore online
    ho capito quale fosse l'errore, cioè la variabile di somma per sbaglio l'avevo posta come un int, so che nel file messo qui era un float, ma avrò cambiato ieri qualcosa per sbaglio, quindi ora funziona perfettamente. Grazie per l'aiuto
  • Re: Struct in c

    Bug_Digitale ha scritto:


    
    	int k=0, i;
    	float somma=0;
    	for(i=0;i<num_voti;i++){
    		somma=somma+studenti[i].italiano;
    		k++;
    	}
    	somma=somma/k;
    
    Ok divertente ma ora basta. Il gioco è bello quando dura poco
Devi accedere o registrarti per scrivere nel forum
25 risposte