Università degli Studi di Brescia Fondamenti di Programmazione Docente: Alessandro Saetti A.A. 2012/2013 ESERCITAZIONE STRUTTURE DI CONTROLLO E VETTORI Università degli Studi di Brescia A.A. 2012/2013 Scrivere un programma C che - 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 Scrivere un programma C che - 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 solita struttura di partenza di un programma C #include <time.h> #define NR 10 #define NC 20 . . . int M[NR][NC],r,c; srand((unsigned int)time(NULL)); for (r=0 ; r <NR ; r++) { printf("%2d)->",r+1); for (c=0 ; c <NC ; c++) { M[r][c]=rand() % 2; printf("%2d",M[r][c]); } printf("\n"); } #include <stdio.h> #include <stdlib.h> int main() { // . . . system("pause"); return(0); } Scrivere un programma C che - 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 La funzione srand() inizializza il generatore di numeri casuali. Richiede: <stdlib.h>. Usando come argomento la funzione time(NULL) facciamo dipendere il seme (seed) dal tempo e di conseguenza le sequenze generate risultano sempre diverse nelle diverse esecuzioni. Time richiede l’header file <time.h>. float powf(float b, float x) => richiede #include <math.h> Scrivere un programma C che - 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 Calcolo la somma di potenze di 2 utilizzando come pesi gli elementi sulla riga r della matrice partendo da destra verso sinistra #include <math.h> . . . int V[NR]={0}; for (r = 0 ; r < NR ; r++) { for (c=NC-1 ; c >=0; c--) V[r]+=M[r][c]*(int)powf(2,NC-1-c); printf("%2d)-> %d\n",r+1,V[r]); } Per evitare [Warning] converting to `int' from `float‘ durante la compilazione mettiamo un cast (int) prima della funzione powf()