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()
Scarica

Eser 1.6