logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

Testo dell'esercizio

In una matrice sono memorizzati i giorni d'assenza per ciascun alunno della classe e per ogni giorno del mese. In un array sono invece caricati i nomi degli alunni della classe. Scrivere un programma che carichi la matrice e calcoli:
1) il totale delle assenze per ciascun alunno;
2) il totale delle assenze per l'alunno il cui nominativo e' fornito da input, segnalare in modo opportuno se il nominativo e' errato;
3) il nome dell'alunno che ha il maggior numero di assenze nel mese;
4) il nome dell'alunno che ha il minor numero di assenze nel mese.

mostra soluzione

/*
CLAUDIO CARDINALE III AI
In una matrice sono memorizzati i giorni d'assenza per ciascun alunno della classe e per ogni giorno del mese. In un array sono invece caricati i nomi degli alunni della classe. Scrivere un programma che carichi la matrice e calcoli:
1) il totale delle assenze per ciascun alunno;
2) il totale delle assenze per l'alunno il cui nominativo e' fornito da input, segnalare in modo opportuno se il nominativo e' errato;
3) il nome dell'alunno che ha il maggior numero di assenze nel mese;
4) il nome dell'alunno che ha il minor numero di assenze nel mese.
*/
#include<stdio.h>
#define MAX 1000
int main(){
	
	//dichiarazioni
	
	int r,c,j,i,mat[MAX][MAX],assenze[MAX],scelta,pos_nome=-1,assenzea=0,pos_max=0,pos_min=0;
	char alunni[MAX],nome;
	
	
	//acquisizione dati
	
	//lunghezza matrice
	do{
		printf("inserire il numero degli alunni : ");
		scanf("%d",&r);
		printf("inserire il numeor dei giorni : ");
		scanf("%d",&c);
	}while(r<1 || r>=MAX || c<1 || c>=MAX);
	
		
	//acquisizione dati
	
	for(i=0;i<r;i++)
		for(j=0;j<c;j++){
			printf("inserire il valore dell'alunno numero %d ed del giorno %d (valore diverso da 0 per le assenze) : ",i+1,j+1);
			scanf("%d",&mat[i][j]);
		}
	
	for(i=0;i<r;i++){
			printf("inserire il nome dell'alunno %d : ",i+1);
			getchar();
			scanf("%c",&alunni[i]);
		
	}
	
	printf("1) il totale delle assenze per ciascun alunno\n2) il totale delle assenze per l'alunno dato il nominativo\n3) il nome dell'alunno che ha il maggior numero di assenze nel mese\n4) il nome dell'alunno che ha il minor numero di assenze nel mese\nscelta : ");
	scanf("%d",&scelta);
	
	
	//calcoli e visuallizzazione risultati
	
	switch(scelta){
		case 1:
			for(i=0;i<r;i++){
				assenze[i] = 0;
				for(j=0;j<c;j++)
					if(mat[i][j])
						assenze[i]++;
			}
			
			printf("totale assenze :\n");
			for(i=0;i<r;i++)
				printf("assenze per %c : %d\n",alunni[i],assenze[i]);
			break;
		case 2:
			printf("inserire un nome : ");
			getchar();
			scanf("%c",&nome);
			
			for(i=0;nome != alunni[i] && i<r;i++)
				;
			if(nome==alunni[i])
				pos_nome = i;
			
			if(pos_nome>=0){
				for(j=0;j<c;j++)
					if(mat[pos_nome][j])
						assenzea++;
				printf("%c ha fatto %d assenze\n",nome,assenzea);
			}else
				printf("nome non valido\n");
			break;
		case 3:
			for(i=0;i<r;i++){
				assenze[i] = 0;
				for(j=0;j<c;j++)
					if(mat[i][j])
						assenze[i]++;
			}
			
			for(i=0;i<r;i++)
				if(assenze[i]>assenze[pos_max])
					pos_max=i;
			
			printf("l'alunno che ha eseguito più assenze e` %c\n",alunni[pos_max]);
			break;
		case 4:
			for(i=0;i<r;i++){
				assenze[i] = 0;
				for(j=0;j<c;j++)
					if(mat[i][j])
						assenze[i]++;
			}
			
			for(i=0;i<r;i++)
				if(assenze[i]<assenze[pos_min])
					pos_min=i;
			
			printf("l'alunno che ha eseguito meno assenze e` %c\n",alunni[pos_min]);
			break;
				
	}
}

Testi Consigliati:

Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C

torna



Copyright © 2004-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci