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