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

Scrivere un programma che definisca una tabella di N*M interi e che, utilizzando le funzioni sotto indicate, svolga le seguenti operazioni:
1 - inizializzi la tabella inserendo M valori in ogni riga
2 - per ogni riga della tabella calcoli il valore minimo, memorizzando il risultato in modo da ricordare tutti i minimi calcolati
3 - calcoli il minimo dei minimi
4 - calcoli quante volte il valore minimo, calcolato al punto 3, è contenuto tra i minimi, calcolato al punto 2.

Funzioni:
- funzione che inizializzi un insieme di numeri
- funzioni che calcoli il valore minimo di un insieme di numeri
- funzione che calcoli quante volte un dato valore x è ripetuto in un insieme di numeri.

mostra soluzione

/*
CLAUDIO CARIDNALE 3AI
Scrivere un programma che definisca una tabella di N*M interi e che, utilizzando le funzioni sotto indicate, svolga le seguenti operazioni:
    1 - inizializzi la tabella inserendo M valori in ogni riga
    2 - per ogni riga della tabella calcoli il valore minimo, memorizzando il risultato in modo da ricordare tutti i minimi calcolati
    3 - calcoli il minimo dei minimi
    4 - calcoli quante volte il valore minimo, calcolato al punto 3, è contenuto tra i minimi, calcolato al punto 2.
    
Funzioni:
    - funzione che inizializzi un insieme di numeri
    - funzioni che calcoli il valore minimo di un insieme di numeri
    - funzione che calcoli quante volte un dato valore x è ripetuto in un insieme di numeri.
*/
#include<stdio.h>
#define MAX 1000
void inizializza(int vet[MAX], int n);
int min(int vet[MAX], int n);
int n_volte(int vet[MAX], int n, int x);

int main(){
	
	//dichiarazioni
	int mat[MAX][MAX],minimi[MAX],minimo,volte,n,m,x,i;
	
	//acquisizione lunghezze
	do{
		printf("inserire il numero di righe : ");
		scanf("%d",&n);
		printf("inserire il numero di colonne : ");
		scanf("%d",&m);
	}while(n<1 || n>= MAX || m<1 || m>= MAX);
	
	//inizializzaizone
	for(i=0;i<n;i++){
		printf("riga %d:\n",i+1);
		inizializza(mat[i],m);
	}
	
	//calcolo minimo di ogni righe
	for(i=0;i<n;i++)
		minimi[i] = min(mat[i],m);
	
	//calcolo minimo dei minimi
	minimo = min(minimi,n);
	
	//calcolo volte in cui il minimo è contenuto nell'elenco dei minimi
	volte = n_volte(minimi,n,minimo);
	
	//visualizzaizone risultati
	printf("numero minimo : %d, comparso : %d volte\n",minimo,volte);
}

void inizializza(int vet[MAX], int n){
	
	//dichiarazioni
	int i;
	
	//calcoli
	for(i=0;i<n;i++){
		printf("inserire il valore numero %d : ",i+1);
		scanf("%d",&vet[i]);
	}
}

int min(int vet[MAX], int n){
	
	//dichiarazioni
	int i,pos=0;
	
	//calcoli
	for(i=1;i<n;i++)
		if(vet[i]<vet[pos])
			pos = i;
	
	//risultati
	return vet[pos];
}

int n_volte(int vet[MAX], int n, int x){
	//dichiarazioni
	int i,volte=0;
	
	//int calcoli
	for(i=0;i<n;i++)
		if(vet[i]==x)
			volte++;
	
	
	//risultati
	return volte;
}

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