Realizziamo un altro esempio sulle struct in C al fine di consolidare l'argomento.

Definire una struttura per memorizzare i dati degli studenti di una classe e dei voti nelle varie discipline: Italiano, Matematica e Informatica.
Si scriva una funzione in C che, a partire da un vettore di studenti fornito come argomento, determini la disciplina che ha la media più alta.


Procedimento dell'esempio sulle struct in C

Definiamo quindi una struttura studente con i campi nome, cognome, e i campi interi delle varie materie per permettere l'inserimento dei voti.

Realizziamo poi una funzione votiAlti che calcola in quale materia ci sono i voti più alti. Attenzione, il programma non fa il controllo se ci sono medie uguali quindi mi restituisce la prima media più alta che trova. Vi invito a fare tale modifica e di scriverla sotto nei commenti così da discuterne assieme.

C base

Fondamenti solidi di programmazione

Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.

  • 9 ore di corso registrato
  • Più di 50 algoritmi risolti passo passo
  • Livello base
  • 100% online, fruibile quando vuoi

Nel programma principale si inseriscono gli studenti, stabilendo come limite massimo 20. Provate anche a fare i controlli sull'input nell'inserimento dei dati.

Dopo l'inserimento si invoca la funzione media per poi visualizzare i risultati.

Ecco dunque il listato completo dell'esempio sulle struct in C.

#include <stdio.h>
#include <string.h>

#define MAX 20

typedef struct {
  char cognome[20];     
  char nome[20];        
  int  anno_nascita;    
  int  italiano;       
  int  matematica;         
  int  informatica;     
} studente;

int votiAlti(studente classe[], float mediaVoti[],int n){
        int i,maxM;
  
  	for (i=0; i<n; i++){
	 	mediaVoti[0]+=classe[i].italiano;
		mediaVoti[1]+=classe[i].matematica;
	 	mediaVoti[2]+=classe[i].informatica;
  	}
    
  	for (i=0; i<3; i++)
		mediaVoti[i]/=n;

  	maxM=0;
  	for (i=1; i<3; i++)
    	        if(mediaVoti[i]>mediaVoti[maxM])
			maxM=i;
			 
  	return maxM;
}

int main(){
	int i,n,materia;
 	studente classe[20];
 	char materie[3][15]={"Italiano","Matematica","Informatica"};
 	float mediaVoti[3]={0.0};

	printf("Quanti studenti?:");
	scanf("%d", &n);

 	for (i=0; i<n; i++){
		printf("\nStudente:%d", i+1);
		printf("\nCognome:");
		scanf("%s", classe[i].cognome);
		printf("Nome:");
		scanf("%s", classe[i].nome);	
		printf("Voto di Italiano:");
		scanf("%d", &classe[i].italiano);
		printf("Voto di Matematica:");
		scanf("%d", &classe[i].matematica);
		printf("Voto di Informatica:");
		scanf("%d", &classe[i].informatica);	
 	}
 	
	materia=votiAlti(classe,mediaVoti,n);
	printf("\nMateria con media piu alta:%s",  materie[materia]);
	printf("\nMedia voti:%3.2f", mediaVoti[materia]);
	
	return 0;
}

Chiaramente questa è solo una possibile risoluzione dell'esempio sulle struct in C.

Alcuni link utili

Realizzare un menù di scelta in C

Strutture complesse in C

Esercizio sulle struct in C

Typedef struct C

Media per riga e per colonna

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Copertina: 50 Algoritmi per imparare C++
📚 Consigliato per te

50 Algoritmi per imparare C++

Struttura dati, puntatori e algoritmi classici in C++, passo passo.

Vedi su Amazon

Sommare dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

🐍

Vuoi imparare Python da zero?

Scarica la guida gratuita Python in 10 giorni: 10 lezioni pratiche con esempi ed esercizi, direttamente nella tua email.

📥 Scarica gratis il PDF →