Fondamenti di Programmazione Ingegneria dell Automazione Industriale Ingegneria Elettronica e delle Comunicazioni Alessandro Saetti Marco Sechi e Andrea Bonisoli (email: {alessandro.saetti,marco.sechi,andrea.bonisoli@unibs.it) Università degli Studi di Brescia 1
Esercizi sui cicli (1º parte) 1. Acquisisca da tastiera numeri interi fintantoché i numeri immessi sono positivi. Determini (stampando a video un messaggio) se i numeri immessi sono pari oppure dispari 2. Acquisisca da tastiera date fintantoché la data immessa è diversa da 0/0/0 Stampi a video la data che viene prima nel calendario 3. Acquisisca da tastiera 2 frazioni Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) 2
Esercizio 1.1 Acquisisca da tastiera numeri interi fintantoché i numeri immessi sono positivi. Determini (stampando a video un messaggio) se i numeri immessi sono pari oppure dispari 3
Esercizi sui vettori 1 parte Esercizio 1.1 Acquisisca da tastiera numeri interi fintantoché i numeri immessi sono positivi. Determini (stampando a video un messaggio) se i numeri immessi sono pari oppure dispari Impostiamo la struttura iniziale del nostro programma C inserendo eventuali commenti Acquisisca da tastiera numeri interi fintantochéi numeri immessi sono positivi. Determini (stampando a video un messaggio) se i numeri immessi sono pari oppure dispari // Dichiarazione delle variabili... int n; #include <stdio.h> #include <stdlib.h> /* Nome: main * Scopo: Stampa numeri pari e dispari * Input: -- * Output: 0 se il programma termina correttamente */ int main() {... system("pause"); return(0); La funzione system esegue il comando passato come argomento. system()richiede <stdlib.h>. Implementiamo la prima parte della consegna printf(" DETERMINA I NUMERI PARI/DISPARI - \n"); // Titolo printf("inserisci numeri interi positivi (negativo o 0 per terminare):\n"); do { printf("==> "); scanf("%d", &n); // istruzioni per determinare se e pari o dispari... while(n > 0); Dichiariamo le variabili necessarie 4
Esercizi sui vettori 1 parte Esercizio 1.1 Verifichiamo la correttezza della parte appena scritta provando a compilarla ed eseguirla Proseguiamo con lo sviluppo, sicuri di ripartire da una situazione sintatticamente e semanticamente corretta. Acquisisca da tastiera numeri interi fintantochéi numeri immessi sono positivi. Determini (stampando a video un messaggio) se i numeri immessi sono pari oppure dispari... // se n <= 0 non valuto se pari o dispari if (n > 0) if (n % 2 == 0) printf("%d e' pari!\n", n); else printf("%d e' dispari!\n", n);... L espressione a % b fornisce il resto della divisione (quindi un intero!) tra a e b. Ad esempio 7 % 3 restituisce 1 Adesso compiliamo ed eseguiamo il nostro programma. Un esempio di output potrebbe essere il seguente: 5
Esercizi sui cicli 1 parte Esercizio 1.1 Soluzione completa: /************************************************************************** * Nome: lab1-pari_dispari.c * * Autore: Alessandro Saetti * * Data: 16/2/10 * **************************************************************************/ #include <stdio.h> #include <stdlib.h> /* Nome: main * Scopo: Stampa numeri pari e dispari * Input: -- * Output: 0 se il programma termina correttamente */ int main() { int n; printf(" DETERMINA I NUMERI PARI/DISPARI - \n"); printf("inserisci numeri interi positivi (negativoo 0 per terminare):\n"); do { printf("==> "); scanf("%d", &n); if (n > 0) if(n % 2 == 0) printf("%d e' pari!\n", n); else printf("%d e' dispari!\n", n); while(n > 0); INPUT VALUTO SE PARI OUTPUT system("pause"); return(0); 6
Esercizio 1.2 Acquisisca da tastiera date fintantoché la data immessa è diversa da 0/0/0 Stampi a video la data che viene prima nel calendario 7
Esercizi sui cicli 1 parte -Acquisisca da tastiera date fintantochéla data immessa è diversa da 0/0/0 -Stampi a video la data che viene prima nel calendario (quella più vecchia) Impostiamo la struttura di partenza del nostro programma C - Acquisisca da tastiera date fintantoché la data immessa è diversa da 0/0/0 -Stampi a video la data che viene prima nel calendario (quella piùvecchia) // Dichiarazione delle variabili... int aa,mm,gg; printf("immetti date (gg/mm/aa):\n"); do { printf("-->"); scanf("%d/%d/%d",&g,&m,&a); #include <stdio.h> #include <stdlib.h> /* Nome: main * Scopo: Calcola e stampa la data minima * Input: -- * Output: 0 se il programma termina correttamente */ int main() {... system("pause"); return(0); Dichiaro via via le variabili necessarie Spiego come immettere le date Leggo la data usando il carattere / come separatore Esercizio 1.2 // Determino se è la data minima while (gg!= 0 mm!= 0 aa!= 0); Lascio in sospeso la parte relativa alla determinazione della data minima Se non corrisponde alla data di stop 0/0/0 ripeto l operazione di lettura 8
Esercizi sui cicli 1 parte Esercizio 1.2 - Acquisisca da tastiera date fintantoché la data immessa è diversa da 0/0/0 -Stampi a video la data che viene prima nel calendario (quella piùvecchia) // Dichiarazione delle variabili... int aa,mm,gg; // Variabili per la data minima printf("immetti date (gg/mm/aa):\n"); do { printf("-->"); scanf("%d/%d/%d",&g,&m,&a); // Determino se è la minima Dichiaro ed inizializzo le variabili usate per memorizzare la data minima corrente L inizializzazione delle variabili relative alla data minima può essere fatta utilizzando i valori massimi che tali variabili possono assumere. // Dichiarazione variabili... int min_aa=100,min_mm=13, min_gg=32; while (gg!= 0 mm!= 0 aa!= 0); // OUTPUT Determinazione della data minima corrente if (aa > 0 && mm > 0 && gg > 0) { if (aa < min_aa) { min_aa = aa; min_mm = mm; min_gg = gg; else if (aa == min_aa && mm < min_mm) { min_mm = mm; min_gg = gg; else if (aa == min_aa && mm == min_mm && gg < min_gg) min_gg = gg; Mentre procediamo con la lettura valutiamo se la data appena letta gg/mm/aa (che deve essere diversa da 0/0/0!) risulta minore rispetto a quella minima attuale min_gg/min_mm/min_aa. Se così è aggiorno la data minima attuale con gg/mm/aa. printf("%d/%d/%d\n",min_gg,min_mm,min_aa); Stampo la data minima della sequenza letta 9
Esercizi sui cicli 1 parte Esercizio 1.2 Soluzione completa: /************************************************************************** * Nome: lab2-date.c * * Autore: Alessandro Saetti * * Data: 16/2/10 * **************************************************************************/ #include <stdio.h> #include <stdlib.h> /* Nome: main * Scopo: Calcola e stampa la data minima * Input: -- * Output: 0 se il programma termina correttamente */ int main() { int gg, mm, aa, min_aa = 100, min_mm = 13, min_gg= 32; printf("immetti date (gg/mm/aa):\n"); do { printf("-> "); scanf("%d/%d/%d", &gg, &mm, &aa); if (aa > 0 && mm > 0 && gg > 0) { if (aa < min_aa) { min_aa = aa; min_mm = mm; min_gg = gg; else if (aa == min_aa && mm < min_mm) { min_mm = mm; min_gg = gg; else if (aa == min_aa && mm == min_mm && gg < min_gg) min_gg = gg; while(gg!= 0 mm!= 0 aa!= 0); INPUT VALUTO LA DATA MINIMA printf("la data minima e': %d/%d/%d\n", min_gg, min_mm, min_aa); OUTPUT system("pause"); return(0); 10
Esercizio 1.3 Acquisisca da tastiera 2 frazioni Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) 11
Esercizi sui cicli 1 parte Esercizio 1.3 - Acquisisca da tastiera 2 frazioni -Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) Impostiamo la solita struttura di partenza di un programma C #include <stdio.h> #include <stdlib.h> /* * Nome : main * Scopo : Stampa la frazione somma * ridotta ai minimi termini * Input : -- * Output: 0 se il programma termina * correttamente */ int main() {... system("pause"); return(0); Implementiamo la prima parte della consegna (INPUT) - Acquisisca da tastiera 2 frazioni -Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) Imposto le istruzioni di input... printf("digita la 1^ frazione (A/B): "); scanf("%d/%d", &num1, &den1); printf("digita la 2^ frazione (C/D): "); scanf("%d/%d", &num2, &den2); e dichiaro le variabili necessarie. // Dichiarazione delle variabili... int num1, num2, den1, den2; 12
Esercizi sui cicli 1 parte - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) num 1 + den 1 num 2 den 2 num 1* den 2 + num 2 * den1 = = den1* den 2 num den - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) Per determinare il MCD tra num e den posso seguire questa procedura: Memorizzo nella variabile min il valore più basso tra il numeratore e denominatore della frazione somma. Partendo da 1 fino a minestraggo tutti i divisori sia di numche di den. L ultimo divisoretrovatoèil MCD. ALGORITMO ALTERNATIVO PER DETERMINARE IL MCD: a) imposto mcd=minimo(num,den) b) Se mcd==1 allora termino saltando allo step d) c) Se num e den sono divisibili per mcd allora mcd è il MCD e termino saltando a d) altrimenti decremento mcd e ripeto lo step corrente c) d) Fine. Calcolo la frazione somma... num = num1 * den2 + num2 * den1; den = den1 * den2; e aggiungo le nuove variabili utilizzate. // Dichiarazione delle variabili... int num, den; Per ridurre ai minimi termini basta dividere il numeratore e il denominatore per il massimo comune divisore tra num e den. if (num > den) min = den; else min = num; for (i = 1; i <= min ; i++) if ( num % i == 0 && den %i == 0) mcd = i; Esercizio 1.3 Quindi aggiungo le variabili appena utilizzate. // Dichiarazione delle variabili... int min, mcd, i; printf ("Frazione somma ridotta: %d/%d\n\n", num/mcd, den/mcd); Stampo la frazione somma ridotta 13
Esercizi sui cicli 1 parte Soluzione completa: /************************************************************************** * Nome: lab4-frazioni.c * * Autore: Alessandro Saetti * * Data: 16/2/10 * **************************************************************************/ #include <stdio.h> #include <stdlib.h> /* * Nome: main * Scopo: Stampa la frazione somma ridotta ai minimi termini * Input: -- * Output: 0 se il programma termina correttamente */ int main() { int num1, num2, den1, den2, num, den, min, mcd, i; printf("digita la 1^ frazione (A/B): "); scanf("%d/%d", &num1, &den1); printf("digita la 2^ frazione (C/D): "); scanf("%d/%d", &num2, &den2); num = num1 * den2 + num2 * den1; den = den1 * den2; if (num > den) min = den; else min = num; for (i = 1; i <= min ; i++) if ( num % i == 0 && den %i == 0) mcd = i; INPUT CALCOLO LA FRAZIONE SOMMA E LA RIDUCO AI MINIMI TERMINI printf ("Frazione somma ridotta: %d/%d\n\n", num/mcd, den/mcd); system("pause"); return(0); OUTPUT Esercizio 1.3 14
Esercizi sui vettori (2º parte) 4. Inizializzi un vettore di 1000 elementi con numeri casuali compresi tra 1 e 100 (estremi inclusi). Calcoli la media dei numeri presenti nel vettore. 5. Acquisisca da tastiera un numero intero positivo n, ripetendo l acquisizione qualora il numero fosse negativo o superiore a 1023. Stampi a video la conversione di n in base 2. (Suggerimento: Utilizzare un vettore per memorizzare i resti delle divisioni.) 6. Inizializzi e stampi a video una matrice M di 10 righe e 20 colonne con numeri casuali interi compresi tra 0 ed 1; Inizializzi e stampi un vettore di 10 elementi con i numeri interi corrispondenti alla rappresentazione decimale dei numeri binari che compaiono (con notazione posizionale) sulle righe della matrice M. 15
Esercizio 1.4 Inizializzi un vettore di 1000 elementi con numeri casuali compresi tra 1 e 100 (estremi inclusi). Calcoli la media dei numeri presenti nel vettore. 16
Esercizi sui vettori 2 parte -Inizializzi un vettore di 1000 elementi con numeri casuali compresi tra 1 e 100 (estremi inclusi). -Calcoli la media dei numeri presenti nel vettore. Impostiamo la solita struttura di partenza di un programma C - Inizializzi un vettore di 1000 elementi con numeri casuali compresi tra 1 e 100 (estremi inclusi). - Calcoli la media dei numeri presenti nel vettore. Ricordiamoci di dichiarare le variabili utilizzate // Dichiarazione delle variabili... #define DIM 1000; int i, vet[dim]; Aggiungiamo a S in successione i valori che vengono via generati Esercizio 1.4 #include <stdio.h> #include <stdlib.h> /* * Nome: main * Scopo: Stampa la media dei numeri in un vettore * Input: -- * Output: 0 se il programma termina correttamente */ int main() {... system("pause"); return(0); Per generare i numeri casuali sfruttiamo la funzione rand() for (i=0; i < DIM; i++) vet[i] = rand() % 100+1; 17
Esercizi sui vettori 2 parte -Inizializzi un vettore di 1000 elementi con numeri casuali compresi tra 1 e 100 (estremi inclusi). - Calcoli la media dei numeri presenti nel vettore. Calcoliamo la somma totale dei valori generati casualmente. Per ottenere la media divido la somma totale per il numero DIM di valori generati. Dichiariamo le variabili #include <stdio.h>... // Dichiarazione variabili... int somma; float media;... Nel ciclo for aggiungiamo le istruzioni che ci consentono di calcolare la somma totale dei valori generati somma=0; for (i=0; i < DIM; i++) { vet[i] = rand() % 100 + 1; somma += vet[i]; Poiché la variabile somma è un int, per evitare di perdere nella divisione tra interi la parte decimale, effettuo un cast (conversione di tipo) a float della variabile somma media = (float)somma / DIM; printf("media: %.2f\n\n", media); Esercizio 1.4 Per evitare che rand() generi sempre la stessa sequenza inizializzo il generatore dei numeri casuali con la funzione srand() #include <time.h> srand(time(null)); 18
Esercizi sui vettori 2 parte Soluzione completa: /************************************************************************** * Nome: lab1-media.c * * Autore: Alessandro Saetti * * Data: 23/2/10 * **************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <time.h> #define DIM 1000 /* * Nome: main * Scopo: Stampa la media dei numeri in un vettore * Input: -- * Output: 0 se il programma termina correttamente */ int main() { int i, vet[dim], somma = 0; float media; srand(time(null)); for (i=0; i < DIM; i++) { vet[i] = rand() % 100 + 1; somma += vet[i]; media = (float)somma / DIM; printf("media: %.2f\n\n", media); Esercizio 1.4 system("pause"); return 0; 19
Esercizio 1.5 Acquisisca da tastiera un numero intero positivo n, ripetendo l acquisizione qualora il numero fosse negativo o superiore a 1023. Stampi a video la conversione di n in base 2. (Suggerimento: Utilizzare un vettore per memorizzare i resti delle divisioni.) 20
Esercizi sui vettori 2 parte -Acquisisca da tastiera un numero intero positivo n, ripetendo l acquisizione qualora il numero fosse negativo o superiore a 1023. -Stampi a video la conversione di n in base 2. (Suggerimento: Utilizzare un vettore per memorizzare i resti delle divisioni.). Impostiamo la struttura di partenza di un programma C Esercizio 1.5 #include <stdio.h> #include <stdlib.h> /* * Nome: main * Scopo: Stampa conversione base 2 * Input: -- * Output: 0 se il programma termina correttamente */ int main() {... system("pause"); return(0); - Acquisisca da tastiera un numero intero positivo n, ripetendo l acquisizione qualora il numero fosse negativo o superiore a 1023. - Stampi a video la conversione di n in base 2. (Suggerimento: Utilizzare un vettore per memorizzare i resti delle divisioni.). Ripeto finché i valori digitati sono fuori dall intervallo [0,1023] // Dichiarazione variabili... int dec; printf("immetti un intero (<1024 e >=0)):\n"); do { printf("-> "); scanf("%d", &dec); while (dec<0 dec>1023); Dichiarazione variabili Spiego cosa voglio Leggo il numero Se non appartiene a [0,1023] ripeto la lettura 21
Esercizi sui vettori 2 parte Esercizio 1.5 - Acquisisca da tastiera un numero intero positivo n, ripetendo l acquisizione qualora il numero fosse negativo o superiore a 1023. - Stampi a video la conversione di n in base 2. (Suggerimento: Utilizzare un vettore per memorizzare i resti delle divisioni.). Per ottenere la rappresentazione in base 2 estraggo la sequenza dei resti della divisione per 2 e li memorizzo in un array. Stampo poi in ordine inverso tale sequenza. Dichiarazione e inizializzazione variabili -Calcolo il resto della divisione per 2 e lo aggiungo nell array bin - Determino il nuovo quoziente dec Se il nuovo quoziente decnon èzero calcolo il resto successivo Stampo in ordine inverso la sequenza dei resti int n=0, bin[10], i; printf("conversione in base 2 di %d: ", dec); do { bin[n] = dec % 2; dec = dec /2; n++; while (dec!= 0); for (i = n-1; i >=0; i--) printf("%d", bin[i]); printf("\n\n"); 22
Esercizi sui vettori 2 parte Soluzione completa: /************************************************************************** * Nome: lab2-dectobin.c * * Autore: Alessandro Saetti * * Data: 23/2/10 * **************************************************************************/ #include <stdio.h> #include <stdlib.h> /* * Nome: main * Scopo: Stampa conversione base 2 * Input: -- * Output: 0 se il programma termina correttamente */ int main() { int dec, bin[10], i, n = 0; printf("immetti un intero (positivo minore di 1024):\n"); do { printf("-> "); scanf("%d", &dec); while(dec < 0 dec > 1023); printf("conversione in base 2 di %d: ", dec); do { bin[n] = dec % 2; dec = dec /2; n++; while (dec!= 0); for (i = n-1; i >=0; i--) printf("%d", bin[i]); printf("\n\n"); Esercizio 1.5 system("pause"); return 0; 23
Esercizio 1.6 Inizializzi e stampi a video una matrice M di 10 righe e 20 colonne con numeri casuali interi compresi tra 0 ed 1; Inizializzi e stampi un vettore di 10 elementi con i numeri interi corrispondenti alla rappresentazione decimale dei numeri binari che compaiono (con notazione posizionale) sulle righe della matrice M. 24
Esercizi sui vettori 2 parte -Inizializzi e stampi a video una matrice M di 10 righe e 20 colonne con numeri casuali interi compresi tra 0 ed 1; -Inizializzi e stampi un vettore di 10 elementi con i numeri interi corrispondenti alla rappresentazione decimale dei numeri binari che compaiono (con notazione posizionale) sulle righe della matrice M Impostiamo la struttura di partenza del nostro programma -Inizializzi e stampi a video una matrice M di 10 righe e 20 colonne con numeri casuali interi compresi tra 0 ed 1; -Inizializzi e stampi un vettore di 10 elementi con i numeri interi corrispondenti alla rappresentazione decimale dei numeri binari che compaiono (con notazione posizionale) sulle righe della matrice M Genero dei numeri casuali 0 o 1, li stampo per controllo e li memorizzo nella matrice M. Se inizializzo la sequenza casuale con srand(time(null)) posso ottenere, per ogni esecuzione, delle sequenze di bit sempre differenti. Esercizio 1.6 #include <stdio.h> #include <stdlib.h> /* Nome : main * Scopo : Stampa conversioni in base 10 di numeri * binari su righe di matrice * Input : -- * Output: 0 se il programma termina correttamente */ int main() {... system("pause"); return(0); #define DIM1 10 #define DIM2 20 Ricordiamoci di dichiarare le variabili utilizzate int M[DIM1][DIM2], i, j; Memorizziamo i valori generati in una matrice DIM1xDIM2 for (i=0; i < DIM1; i++) { for (j=0; j < DIM2; j++) { M[i][j]=rand()%2; printf("%2d",m[i][j]); printf("\n"); 25
Esercizi sui vettori 2 parte Esercizio 1.6 -Inizializzi e stampi a video una matrice M di 10 righe e 20 colonne con numeri casuali interi compresi tra 0 ed 1; -Inizializzi e stampi un vettore di 10 elementi con i numeri interi corrispondenti alla rappresentazione decimale dei numeri binari che compaiono (con notazione posizionale) sulle righe della matrice M float powf(float b, float x) => richiede #include <math.h> #include <math.h>... for (i=0; i < DIM1; i++) { for (j=0; j < DIM2; j++) V[i]+=M[i][j]*powf(2,DIM2-j-1); printf("conversione decimale per riga #%d: %d\n", i+1, V[i]); Per evitare che durante la compilazione appaia l avvertimento: [Warning] converting to `int' from `float mettiamo un cast a int prima della funzione powf() Per ogni riga i-esima della matrice M calcolo la somma di potenze (decrescente!) di 2 dove i coefficienti sono costituiti dagli elementi sulla riga i-esima della matrice. Tale valore viene poi memorizzato in V[i]. 26
Esercizi sui vettori 2 parte Soluzione completa: /************************************************************************** * Nome: lab4-bintodec.c * * Autore: Alessandro Saetti * * Data: 23/2/10 * **************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <math.h> #define DIM1 10 #define DIM2 20 /* Nome: main * Scopo: Stampa conversioni in base 10 di numeri binari su righe di matrice * Input: -- * Output: 0 se il programma termina correttamente */ int main() { int M[DIM1][DIM2], i, j, V[DIM1]={0; for (i=0; i < DIM1; i++) { for (j=0; j < DIM2; j++) { M[i][j]=rand()%2; printf("%2d",m[i][j]); printf("\n"); for (i=0; i < DIM1; i++) { for (j=0; j < DIM2; j++) { V[i]+=M[i][j]*powf(2,DIM2-j-1); printf("conversione decimale per riga #%d: %d\n", i+1, V[i]); system("pause"); return(0); Esercizio 1.6 27
Esercizi sui cicli (per casa) 1. : Acquisisca da tastiera numeri interi fintantoché il numero immesso è negativo. Stampi a video i primi 5 anni bisestili superiori al numero acquisito. (Suggerimento: Un anno è bisestile se è divisibile per 4 ma non per 100 eccetto per quegli anni divisibili per 400). 2. : Acquisire da tastiera la lunghezza dei tre lati di un triangolo fintantoché le lunghezze acquisite non sono positive e non soddisfano la disuguaglianza triangolare (la somma del lato maggiore è inferiore alla somma degli altri lati) Stampi il perimetro del triangolo. (Suggerimento: Ad ogni iterazione calcolare il massimo lato acquisito e la somma degli altri due dati) 28
Esercizi sui cicli (per casa) 3. Acquisire da tastiera un numero intero n (ripetendo l acquisizione finché vengono immessi numeri negativi) Acquisire successivamente da tastiera n numeri interi Stampare a video la media degli n numeri acquisiti 4. Acquisisca da tastiera due numeri interi corrispondenti al numero di giorni in un mese ed al giorno della settimana in cui il mese inizia. Stampi a video il calendario del mese. Ad esempio: Inserire il numero di giorni del mese: 31 Inserire il giorno della settimana in cui il mese inizia (1=Domenica, 7=Sabato): 3 D L M M G V S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 29
Esercizi sui vettori (per casa) 5. : Inizializzi un vettore di 100 elementi con numeri casuali compresi tra -50 e 50 Stampi a video il minimo numero n nel vettore per il quale esista un solo numero nel vettore più piccolo di n 6. Acquisisca da tastiera un numero intero n maggiore di 10 e minore di 100, ripetendo l acquisizione qualora il numero non rispettasse i requisiti richiesti. Inizializzi un vettore di 20 elementi con numeri casuali compresi tra 10 ed n. Stampi a video il numero contenuto nel vettore con il maggior numero di divisori. 30
Esercizi sui vettori (per casa) 7. Inizializzi e stampi a video una matrice M di 4 righe e 3 colonne con numeri casuali interi compresi tra 1 e 9; Stampi a video la somma delle righe e la somma delle colonne di M 8. Inizializzi e stampi a video una matrice M di 4 righe e 5 colonne con numeri casuali interi compresi tra 1 e 9; Inizializzi un vettore V con 5 numeri interi acquisiti da tastiera; Stampi a video il prodotto (righe per colonne) tra la matrice M e il vettore V. 31