mercoledì 22 gennaio 2014

Esercitazione in Laboratorio 21/01/2014

1) Caricamento e visualizzazione vettore, somma degli elementi del vettore e media degli elementi del vettore:

# define dimensione 10
# include <stdio.h>

int vett[dimensione];
int i;
int somma=0;
float media=0;

int main()
{
printf("Esercitazione 21/01/2014 senza funzioni\n\n");
for(i=0;i<dimensione;i++)   //Caricamento vettore
vett[i]=i+10;
for(i=0;i<dimensione;i++)   //Visualizzazione vettore
printf("%d\t",vett[i]);
for(i=0;i<dimensione;i++) 
somma+=vett[i];
printf("\nLa somma degli elementi del vettore e': %d\n",somma);
for(i=0;i<dimensione;i++) 
media+=vett[i];
media/=dimensione;
printf("\nLa media degli elementi del vettore e': %.2f\n",media);

}
_________________________________________________________________________________
2) Caricamento e visualizzazione vettore, somma degli elementi del vettore e media degli elementi del vettore con funzioni e procedure:

# define dimensione 10
# include <stdio.h>

int vett[dimensione];
int sum;
float med;
void caricamento(int v[],int dim);
void visualizza(int v[],int dim);
int somma(int v[],int dim);
float media(int v[],int dim);

int main()
{
printf("Esercizio 21/01/2014\n");
caricamento(vett,dimensione);
visualizza(vett,dimensione);
sum=somma(vett,dimensione);
printf("\n\nLa somma degli elementi del vettore e': %d",sum);
med=media(vett,dimensione);
printf("\n\nLa media degli elementi del vettore e': %.2f",med);
}

void caricamento(int v[],int dim)
{
int i;
for(i=0;i<dim;i++)
v[i]=i+10;
}

void visualizza(int v[],int dim)
{
int i;
printf("\n");
for(i=0;i<dim;i++)
printf("%d\t",v[i]);
}

int somma(int v[], int dim)
{
int i;
int sum=0;
for(i=0;i<dim;i++)
sum+=v[i];
return sum;
}

float media(int v[], int dim)
{
int i;
float media=0;
for(i=0;i<dim;i++)
media+=v[i];
media/=dim;
return media;

}
_________________________________________________________________________________
3) Caricamento e visualizzazione vettore, somma degli elementi del vettore, media degli elementi del vettore e visualizzazione inversa del vettore, con funzioni e procedure:

# define dimensione 10
# include <stdio.h>

int vett[dimensione];
int sum;
float med;
void caricamento(int v[],int dim);
void visualizza(int v[],int dim);
int somma(int v[],int dim);
float media(int v[],int dim);
void inverso(int v[],int dim);

int main()
{
printf("Esercizio 21/01/2014\n");
caricamento(vett,dimensione);
printf("Visualizzazione dell'array: \n");
visualizza(vett,dimensione);
sum=somma(vett,dimensione);
printf("\n\nLa somma degli elementi del vettore e': %d",sum);
med=media(vett,dimensione);
printf("\n\nLa media degli elementi del vettore e': %.2f\n\n",med);
printf("Visualizzazione dell'array in maniera inversa: \n");
inverso(vett,dimensione);
}

void caricamento(int v[],int dim)
{
int i;
for(i=0;i<dim;i++)
v[i]=i+10;
}

void visualizza(int v[],int dim)
{
int i;
printf("\n");
for(i=0;i<dim;i++)
printf("%d\t",v[i]);
}

int somma(int v[], int dim)
{
int i;
int sum=0;
for(i=0;i<dim;i++)
sum+=v[i];
return sum;
}

float media(int v[], int dim)
{
int i;
float media=0;
for(i=0;i<dim;i++)
media+=v[i];
media/=dim;
return media;
}

void inverso(int v[],int dim)
{
int i;
printf("\n");
for(i=dim-1;i>=0;i--)
printf("%d\t",v[i]);

}
_________________________________________________________________________________
4) Caricare una matrice e effettuare la somma di ogni colonna, i risultati dovranno essere memorizzati in un vettore:

# define dim 5
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int mat[dim][dim];
int i,j;
int vett[dim];

int main()
{
srand(time(0));
for(i=0;i<dim;i++)
for(j=0;j<dim;j++)
mat[i][j]=rand()%100;

for(i=0;i<dim;i++)
{
printf("\n\n\n");
for(j=0;j<dim;j++)
printf("%d\t",mat[i][j]);
}

for(j=0;j<dim;j++)
for(i=0;i<dim;i++)
vett[j]+=mat[i][j];
printf("\n\nSomma delle colonne della matrice:\n\n");
for(i=0;i<dim;i++)
printf("%d\t",vett[i]);

}

Compiti per il 21/01/2014

Esercitazioni sulle matrici:
-> Caricamento
-> Visualizzazione
-> Conteggio pari dispari nulli
-> Implementazione con le tre strutture iterative
For
While
Do While
-> Media dei valori presenti nelle singole righe
Media dei valori presenti nelle singole colonne
Memorizzazione dei risultati in due array

Esercizio con l'utilizzo del costrutto FOR:

#define dim 5 //direttiva MACRO

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int mat[dim][dim];
int i,j;
int pari=0;
int dispari=0;
int nullo=0;

int main()
{
srand(time(0));
for(i=0;i<dim;i++)
for(j=0;j<dim;j++)
mat[i][j]=rand()%100;

for(i=0;i<dim;i++)
for(j=0;j<dim;j++)
if(mat[i][j]==0)
nullo++;
else
if((mat[i][j]%2)==0)
pari++;
else
dispari++;
for(i=0;i<dim;i++)
{
printf("\n\n\n");
for(j=0;j<dim;j++)
printf("  %d\t",mat[i][j]);
}
printf("\n\nI numeri pari inseriti in matrice sono: %d",pari);
printf("\n\nI numeri dispari inseriti in matrice sono: %d",dispari);
printf("\n\nI numeri zero inseriti in matrice sono: %d",nullo);
}
_________________________________________________________________________________

Esercizio con l'utilizzo del costrutto WHILE

#define dim 5 //direttiva MACRO

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int mat[dim][dim];
int i,j;
int pari=0;
int dispari=0;
int nullo=0;

int main()
{
srand(time(0));
i=0;
while(i<dim)
{
j=0;
while(j<dim)
{
mat[i][j]=rand()%100;
j++;
}
i++;
}

i=0;
while(i<dim)
{
j=0;
while(j<dim)
{
if(mat[i][j]==0)
nullo++;
else
if((mat[i][j]%2)==0)
pari++;
else
dispari++;
j++;
}
i++;
}


i=0;
while(i<dim)
{
printf("\n\n\n");
j=0;
while(j<dim)
 printf("%d\t",mat[i][j]);
 j++;
        }
    i++;
}

printf("\n\nI numeri pari inseriti in matrice sono: %d",pari);
printf("\n\nI numeri dispari inseriti in matrice sono: %d",dispari);
printf("\n\nI numeri zero inseriti in matrice sono: %d",nullo);
}
_________________________________________________________________________________

Esercizio con l'utilizzo del costrutto DO-WHILE:

#define dim 5 //direttiva MACRO

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int mat[dim][dim];
int i,j;
int pari=0;
int dispari=0;
int nullo=0;

int main()
{
srand(time(0));
i=0;
do
{
j=0;
do
{
mat[i][j]=rand()%100;
j++;
}while(j<dim);
i++;
}while(i<dim);

i=0;
do
{
j=0;
do
{
if(mat[i][j]==0)
nullo++;
else
if((mat[i][j]%2)==0)
pari++;
else
dispari++;
j++;
}while(j<dim);
i++;
}while(i<dim);


i=0;
do
{
printf("\n\n\n");
j=0;
do
 printf("%d\t",mat[i][j]);
 j++;
        }while(j<dim);
         i++;
}while(i<dim);

printf("\n\nI numeri pari inseriti in matrice sono: %d",pari);
printf("\n\nI numeri dispari inseriti in matrice sono: %d",dispari);
printf("\n\nI numeri zero inseriti in matrice sono: %d",nullo);
}
_________________________________________________________________________________
Media dei valori presenti nelle singole righe
Media dei valori presenti nelle singole colonne
Memorizzazione dei risultati in due array

#define dim 5 //direttiva MACRO

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int mat[dim][dim];   //dichiaro una matrice di interi sfruttando la direttiva MACRO per le dimensioni
int i,j;   //dichiaro gli indici per la matrice, che sfrutterò poi anche per il vettore
int pari=0;   //dichiaro variabile contatore numeri pari e la inizzializzo a 0
int dispari=0;   //dichiaro variabile contatore numeri dispari e la inizzializzo a 0
int nullo=0;   //dichiaro variabile contatore numeri nulli e la inizzializzo a 0
float media=0;   //dichiaro variabile di lavoro media di tipo float
float mediar[dim];   //dichiaro un vettore di tipo float che conterrà la media di ogni riga sfruttando la direttiva MACRO per le dimensioni
float mediac[dim];   //dichiaro un vettore di tipo float che conterrà la media di ogni colonna sfruttando la direttiva MACRO per le dimensioni

int main()
{
srand(time(0));  //genero il seme per la creazione di numeri casuale con funzione Random
for(i=0;i<dim;i++)   //cicli FOR (i e j) per caricare la matrice
for(j=0;j<dim;j++)
mat[i][j]=rand()%100;   //inserisco nella matrice un numero casuale da 0 a 100

for(i=0;i<dim;i++)   //cicli FOR (i e j) per verificare se gli elementi della matrice siano pari/dispari/nulli
for(j=0;j<dim;j++)
if(mat[i][j]==0)   //se l'elemento preso in esame è nullo incremento contatore nullo
nullo++;
else   //altrimenti
if((mat[i][j]%2)==0)      //se l'elemento preso in esame è pari incremento contatore pari
pari++;
else   //altrimenti incremento contatore dispari
dispari++;


for(i=0;i<dim;i++)   //cicli FOR (i e j) per effettuare la media di ogni riga della matrice
{                    //l'indice i indica gli elementi di ogni riga
for(j=0;j<dim;j++)   //l'indice j indica gli elementi di ogni colonna
media+=mat[i][j];   //somma alla variabile media il valore dell'elemento preso in esame
mediar[i]=media/dim;   //alla fine del ciclo FOR j divido il contenuto della variabile media per la direttiva MACRO, utilizzo l'indice i per spostarmi all'interno del vettore
media=0;   //alla fine di ogni riga inizzializzo la variabile media a 0
}


for(i=0;i<dim;i++)   //cicli FOR (i e j) per effettuare la visualizzazione della matrice
{
printf("\n\n\n");   //alla fine di ogni riga (ogni incremento di i) inserisco tre spazi a capo
for(j=0;j<dim;j++)
printf("  %d\t",mat[i][j]);   //visualizzo l'elemento i,j della matrice e inserisco un TAB
printf("%.2f",mediar[i]);   //alla fine di ogni visualizzazione dell'intera riga visualizzo il valore della media precedentemente calcolata e contenuta nel vettore mediar[] sfruttando l'indice i
}

printf("\n\n");   //inserisco due spazi a capo
for(j=0;j<dim;j++)   //cicli FOR (j e i) per effettuare la media di ogni colonna della matrice
{                    //l'indice j indica gli elementi di ogni colonna
for(i=0;i<dim;i++)   //l'indice i indica gli elementi di ogni riga
media+=mat[i][j];   //somma alla variabile media il valore dell'elemento preso in esame
mediac[j]=media/dim;   //alla fine del ciclo FOR i divido il contenuto della variabile media per la direttiva MACRO, utilizzo l'indice i per spostarmi all'interno del vettore
media=0;   //alla fine di ogni colonna inizzializzo la variabile media a 0
}

for(i=0;i<dim;i++)   //ciclo FOR per la stampa del vettore contenente i valori della media di ogni colonna
printf("%.2f\t",mediac[i]);   //visualizzo il valore della media precedentemente calcolata e contenuta nel vettore mediaC[] sfruttando l'indice i

printf("\n\nI numeri pari inseriti in matrice sono: %d",pari);   //visualizzo quanti numeri pari sono stati trovati all'interno della matrice
printf("\n\nI numeri dispari inseriti in matrice sono: %d",dispari);   //visualizzo quanti numeri dispari sono stati trovati all'interno della matrice
printf("\n\nI numeri zero inseriti in matrice sono: %d",nullo);   //visualizzo quanti numeri nulli sono stati trovati all'interno della matrice
}

Esercitazione Laboratorio 14/01/2014

Esercitazione in laboratorio su calcolo sommatorie, programma svolto con e senza funzioni:



#define dim 11 //direttiva MACRO
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>

int primo[dim];
int secondo[dim];
int i;

void caricamento(int d);
void stampa(int d);
int sommatoria1(int d);
int sommatoria2(int d);
int sommatoria3(int d);
int somma=0;
int k=3;


int main()

{
srand(time(0));
printf("Esercitazione 14/01/2014\n\n");

caricamento(dim);
stampa(dim);

somma=sommatoria1(dim);

printf("\n\tSommatoria (Ai*Bi): %d",somma);

somma=sommatoria2(dim);

printf("\n\tSommatoria (Ai*K)^i-1: %d",somma);

somma=sommatoria3(dim);

printf("\n\tSommatoria (Ai*K^i): %d",somma);
}

void caricamento(int d)
{
for(i=0;i<d;i++)
{
primo[i]=rand()%10;
secondo[i]=rand()%10;
}
}

void stampa(int d)
{
for(i=0;i<d;i++)
{
printf("PRIMO %d pos. %d\n\n",primo[i],i);
printf("SECONDO %d pos. %d\n\n",secondo[i],i);
}
}
int sommatoria1 (int d)
{
int somma=0;
for(i=1;i<d;i++)
somma+=(primo[i]*secondo[i]);
return somma;
}

int sommatoria2 (int d)
{
int somma=0;
for(i=1;i<d;i++)
somma+=pow((primo[i]*k),(i-1));
return somma;
}

int sommatoria3 (int d)
{
int somma=0;
int esp=0;
for(i=1;i<d;i++)
{
esp=pow(k,i);
somma+=(primo[i]*esp);
}
return somma;
}
_________________________________________________________________________________

#define dim 3 //direttiva MACRO
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>

int primo[dim];
int secondo[dim];
int i;
int somma=0;
int k=3;
int esp;

int main()

{
srand(time(0));
printf("Esercitazione 14/01/2014\n\n");
for(i=0;i<dim;i++)
{
primo[i]=rand()%10;
secondo[i]=rand()%10;
}
for(i=0;i<dim;i++)
{
printf("PRIMO %d pos. %d\n\n",primo[i],i);
printf("SECONDO %d pos. %d\n\n",secondo[i],i);
}
for(i=1;i<dim;i++)
somma+=(primo[i]*secondo[i]);

printf("\n\tSommatoria (Ai*Bi): %d",somma);

somma=0;

for(i=1;i<dim;i++)
somma+=pow((primo[i]*k),(i-1));

printf("\n\tSommatoria (Ai*K)^i-1: %d",somma);

somma=0;

for(i=1;i<dim;i++)
somma+=pow((primo[i]*k),(i-1));

printf("\n\tSommatoria (Ai*K)^i-1: %d",somma);

somma=0;

for(i=1;i<dim;i++){
esp=0;
esp=pow(k,i);
somma+=(primo[i]*esp);
}
printf("\n\tSommatoria (Ai*K^i): %d",somma);
}

Correzione Verifica del 10/01/2014

A) Caricare un Vettore di 10 elementi interi, utilizzando la funzione rand. I valori devono essere
compresi tra 20 e 50. ( 3 - punti)
B) Visualizzare i valori presenti nelle posizioni pari. ( 1- punto)
C) Modificare i valori presenti nelle posizioni dispari incrementando li di 1 e di 3 in maniera alternata

# include<stdio.h>
# include <stdlib.h>
# include<time.h>

int vettore[10];
int i;
int valore;
int alternato=0;

int main()
{
srand(time(0));   //genero il seme
    printf("\tVerifica Informatica 13/01/2014\n");
    for(i=0;i<10;i++)   //ciclo per il caricamento del vettore
    {
valore=rand()%51;   //genera numeri casuali tra 0 e 50
if(valore>20)   //controllo sul valore generato casualmente, se maggiore di 20 lo inserisco nel vettore
vettore[i]=valore;
else   //altrimenti decremento l'indice i così da ripetere l'inserimento dello stesso elemento nel vettore
i--;
}
printf("\nI valori caricati nel vettore sono: \n");
for(i=0;i<10;i++)   //ciclo for per visualizzare valori contenuti nel vettore
    printf("%d nella posizione %d\n",vettore[i],i);



printf("\nI valori presenti nele posizioni pari del vettore sono: \n");
for(i=0;i<10;i++)   //ciclo for per visualizzare valori contenuti nel vettore
    {
if((i%2)==0)   //se l'indice e' pari allora visualizzo l'elemento 
printf("%d nella posizione %d\n",vettore[i],i);
}

for(i=0;i<10;i++)   //ciclo for per l'incremento alternato degli elementi dispari di +1 e +3
    {
if((i%2)!=0)   //se l'indice e' dispari 
if(alternato==0)   //e la variabile di lavoro alternato è pari a 0
   {
    vettore[i]+=1;   //incremento il valore dell'elemento del vettore di +1
    alternato++;   //e la variabile di lavoro alternato di +1
}
else   //altrimenti se la variabile di lavoro alternato non è a 0
{
    vettore[i]+=3;   //incremento il valore dell'elemento del vettore di +3
    alternato--;   //e decremento la variabile lavoro di -1
}
}
printf("\nI valori nel vettore dopo l'incremento degli elementi dispari sono: \n");
for(i=0;i<10;i++)   //ciclo for per visualizzare valori contenuti nel vettore
    printf("%d nella posizione %d\n",vettore[i],i);
}

_________________________________________________________________________________

A) Modificare il punto1 dell'esercizio precedente cercando da tastiera i valori e rispettando il vincolo
che questi siano compresi tra 20 e 50 ( 2-punti)
Svolgere i punti B e C del precedente esercizio

# include<stdio.h>
# include <stdlib.h>
# include<time.h>

int vettore[10];
int i;
int valore;
int alternato=0;

int main()
{
srand(time(0));   //genero il seme
    printf("\tVerifica Informatica 13/01/2014\n");
    for(i=0;i<10;i++)   //ciclo per il caricamento del vettore
    {
    printf("%d   Inserire un valore tra 20 e 50: ",i);
scanf("%d",&valore);   //Input da utente dell'elemento
if((valore>20)&&(valore<50))   //controllo sul valore inserito, se maggiore di 20 e minore di 50 lo inserisco nel vettore
vettore[i]=valore;
else   //altrimenti decremento l'indice i così da ripetere l'inserimento dello stesso elemento nel vettore
i--;
}
printf("\nI valori caricati nel vettore sono: \n");
for(i=0;i<10;i++)   //ciclo for per visualizzare valori contenuti nel vettore
    printf("%d nella posizione %d\n",vettore[i],i);
printf("\nI valori presenti nele posizioni pari del vettore sono: \n");
for(i=0;i<10;i++)   //ciclo for per visualizzare valori contenuti nel vettore
    {
if((i%2)==0)   //se l'indice e' pari allora visualizzo l'elemento 
printf("%d nella posizione %d\n",vettore[i],i);
}
for(i=0;i<10;i++)   //ciclo for per l'incremento alternato degli elementi dispari di +1 e +3
    {
if((i%2)!=0)   //se l'indice e' dispari 
if(alternato==0)   //e la variabile di lavoro alternato è pari a 0
   {
    vettore[i]+=1;   //incremento il valore dell'elemento del vettore di +1
    alternato++;   //e la variabile di lavoro alternato di +1
}
else   //altrimenti se la variabile di lavoro alternato non è a 0
{
    vettore[i]+=3;   //incremento il valore dell'elemento del vettore di +3
    alternato--;   //e decremento la variabile lavoro di -1
}
}
printf("\nI valori nel vettore dopo l'incremento degli elementi dispari sono: \n");
for(i=0;i<10;i++)   //ciclo for per visualizzare valori contenuti nel vettore
    printf("%d nella posizione %d\n",vettore[i],i);
}