martedì 7 gennaio 2014

Vettore - Esercitazione su caricamento, visualizzazione e verifica pari-dispari-zero

Esercizio su Vettore con funzioni di caricamento casuale, utilizzo di direttiva MACRO, media dei numeri inseriti e conteggio di zero - pari e dispari nel vettore.

Codice:


#define dimensione 100 //direttiva MACRO
#include<stdio.h>
#include<stdlib.h>
#include<time.h>   //libreria per funzione random

float media(int v[], int dim);   //prototipo funzione per calcolare la media dei numeri inseriti nel vettore
int vettore[dimensione];   //dichiarazione vettore di interi di dimensioni pari alla direttiva "dimensione"
void Carica (int v[], int dim);   //prototipo funzione per caricare input interi utente nel vettore
float risMedia;   //dichiaraqzione variabile float
int zero(int v[], int dim);   //prototipo funzione per contare quanti sono i valori ZERO inseriti nel vettore
int risZero;   //variabile che intercetta risultato funzione zero
int pari(int v[], int dim);   //prototipo funzione per contare quanti sono i valori PARI inseriti nel vettore
int risPari;   //variabile che intercetta risultato funzione pari
int dispari(int v[], int dim);   //prototipo funzione per contare quanti sono i valori DISPARI inseriti nel vettore
int risDispari;   //variabile che intercetta risultato funzione dispari

int main()
{
srand(time(0));   //generazione del seme tramite orologio computer
printf("Esercitazione vettore\n");
Carica(vettore,dimensione);   //chiamata a procedura per caricare vettore in modo casuale - con passaggio parametri vettore e dimensione 
for(int i=0; i<dimensione; ++i)   //ciclo FOR per stampa vettore
printf("%d\t",vettore[i]);
risMedia=media(vettore,dimensione);   //chiamata funzione media con assegnazione risultato a variabile risMedia - con passaggio parametri vettore e dimensione
printf("\nLa media dei numeri caricati e': %.2f",risMedia);   //visualizzazione media
risZero=zero(vettore,dimensione);   //chiamata funzione zero con assegnazione risultato a variabile risZero - con passaggio parametri vettore e dimensione
risPari=pari(vettore,dimensione);   //chiamata funzione pari con assegnazione risultato a variabile risPari - con passaggio parametri vettore e dimensione
risDispari=dispari(vettore,dimensione);   //chiamata funzione dispari con assegnazione risultato a variabile risDispari - con passaggio parametri vettore e dimensione
printf("\nIl vettore contiene %d volte ZERO, %d numeri PARI e %d numeri DISPARI",risZero,risPari,risDispari);   //visualizzazione contatore Zero,Pari,Dispari
}

void Carica(int v[], int dim)   //procedura per caricare vettore - con passaggio parametri vettore e dimensione 
{
int i;   //indice per ciclo FOR
for(i=0;i<dim;++i)   //ciclo FOR per inserimento valori in vettore
{
v[i]=rand()%100;
}
}

float media(int v[],int dim)   //funzione per calcolare media dei numeri inseriti in vettore - con passaggio parametri vettore e dimensione 
{
int i;   //indice per ciclo FOR
float m=0;   //variavile locale per effettuare media
for(i=0;i<dim;++i)
{
m=m+v[i];   //somma ad m tutti i valori contenuti nel vettore
}
m=m/dim;   //divide m per la dimensione del vettore per calcolare media
return m;   //restituisce valore m
}

int zero(int v[],int dim)   //funzione per contare numeri zero inseriti in vettore - con passaggio parametri vettore e dimensione 
{
int i;   //indice per ciclo FOR
int zero=0;      //variavile locale per contatore 0
for(i=0;i<dim;i++)
{
if(v[i]==0)   //se il valore della cella del vettore e' zero
zero++;   //incrementa il contatore zero
}
return zero;   //restituisce valore contatore zero
}

int pari(int v[],int dim)   //funzione per contare numeri pari inseriti in vettore - con passaggio parametri vettore e dimensione 
{
int i;   //indice per ciclo FOR
int pari=0;    //variabile locale per contatore pari
for(i=0;i<dim;i++)
{
if(((v[i]%2)==0)&&(v[i]!=0))   //se il valore della cella del vettore e' divisibile per 2 ed anche diverso da 0
pari++;   //incrementa contatore pari
}
return pari;   //restituisce valore contatore pari
}

int dispari(int v[],int dim)   //funzione per contare dispari inseriti in vettore - con passaggio parametri vettore e dimensione 
{
int i;   //indice per ciclo FOR
int dispari=0;    //variabile locale per contatore dispari
for(i=0;i<dim;i++)
{
if((v[i]%2)!=0)   //se il valore della cella del vettore NON e' divisibile per 2  
dispari++;   //incrementa contatore dispari
}
return dispari;   //restituisce valore contatore dispari
}

Calcolatrice per Frazioni - Correzio Verifica

Scrivere un programma che, inseriti dall'utente due frazioni ne esegua somma,sottrazione, moltiplicazione e divisione. L'utente dovrà avere la possibilità di scegliere che tipo di operazione effettuare sui dati inseriti tramite un menù.
Si richiede di utilizzare procedure e funzioni per risolvere l'esercizio.

Formula per Somma tra Frazioni: ((a*d)+(b*c))/(b*d)
Formula per Sottrazione tra Frazioni: ((a*d)-(b*c))/(b*d)
Formula per Moltiplicazione tra Frazioni: (a*c)/(b*d)

Formula per Divisione tra Frazioni: (a*d)/(b*c)

Diagramma di flusso in Algobuild:


Codice in C++ :

# include <stdio.h>

int numeratoreA;
int denominatoreA;
int numeratoreB;
int denominatoreB;
int menu;
int numeratore;
int denominatore;
int SommaNum (int a, int b, int c, int d);
int SommaDen (int a, int b, int c, int d);
int SottrazioneNum (int a, int b, int c, int d);
int SottrazioneDen (int a, int b, int c, int d);
int MoltiplicazioneNum (int a, int b, int c, int d);
int MoltiplicazioneDen (int a, int b, int c, int d);
int DivisioneNum (int a, int b, int c, int d);
int DivisioneDen (int a, int b, int c, int d);

int main()
{
    printf("\tCalcolatrice tra Frazioni");
    do{
       printf("\n\nMENU: quale operazione vuoi effettuare?");
       printf("\n1) Somma\n2) Sottrazione\n3) Moltiplicazione\n4) Divisione\n5) Esci\n");
       scanf("%d",&menu);
       if((menu>0)&&(menu<5))
       {
            printf("Inserisci il NUMERATORE della PRIMA frazione");
            scanf("%d",&numeratoreA);
            do
            {
printf("Inserisci il DENOMINATORE della PRIMA frazione");
            scanf("%d",&denominatoreA);
            if(denominatoreA==0)
            printf("\n\n\tIl valore denominatore non puo' essere uguale a 0\n\n");
            }while(denominatoreA==0);
            printf("Inserisci il NUMERATORE della SECONDA frazione");
            scanf("%d",&numeratoreB);
            do
            {
            printf("Inserisci il DENOMINATORE della SECONDA frazione");
            scanf("%d",&denominatoreB);
            if(denominatoreB==0)
            printf("\n\n\tIl valore denominatore non puo' essere uguale a 0\n\n");
            }while(denominatoreB==0);
       }
       switch(menu)
       {
           case 1: numeratore=SommaNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=SommaDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato dell'addizione e': %d / %d ",numeratore,denominatore);
                   break;
           case 2: numeratore=SottrazioneNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=SottrazioneDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato della sottrazione e': %d / %d ",numeratore,denominatore);
                   break;
           case 3: numeratore=MoltiplicazioneNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=MoltiplicazioneDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato della moltiplicazione e': %d / %d ",numeratore,denominatore);
                   break;
           case 4: numeratore=DivisioneNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=DivisioneDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato della moltiplicazione e': %d / %d ",numeratore,denominatore);
                   break;
           case 5: printf("Fine");
                   break;
           default: printf("\tInserire un numero tra 1 e 5\n");    
       }
    }while(menu!=5);
}

int SommaNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=((a*d)+(b*c));
    return numeratore;
}

int SommaDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*d);
    return denominatore;
}

int SottrazioneNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=((a*d)-(b*c));
    return numeratore;
}

int SottrazioneDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*d);
    return denominatore;
}

int MoltiplicazioneNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=(a*c);
    return numeratore;
}

int MoltiplicazioneDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*d);
    return denominatore;
}

int DivisioneNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=(a*d);
    return numeratore;
}

int DivisioneDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*c);
    return denominatore;
}

Descrizione e scopo delle variabili utilizzate:


numeratoreA - INPUT: viene salvato il valore inserito dall’utente come numeratore della prima frazione.
denominatoreA – INPUT: viene salvato il valore inserito dall’utente come denominatore della prima frazione.
numeratoreB - INPUT: viene salvato il valore inserito dall’utente come numeratore della seconda frazione.
denominatoreB – INPUT: viene salvato il valore inserito dall’utente come denominatore della seconda frazione.
Menu – INPUT: viene salvato il valore inserito dall’utente per la scelta dell’operazione da eseguire sulle frazioni.

numeratore – OUTPUT: variabile che intercetta il risultato della funzione SommaNum e viene utilizzato per visualizzare il numeratore risultato della somma tra due frazioni.
denominatore – OUTPUT: variabile che intercetta il risultato della funzione SommaDen e viene utilizzato per visualizzare il denominatore risultato della somma tra due frazioni.

A – LAVORO: variabile che con passaggio di parametro assume il valore numeratoreA all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
B – LAVORO: variabile che con passaggio di parametro assume il valore denominatoreA all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
C – LAVORO: variabile che con passaggio di parametro assume il valore numeratoreB all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
D – LAVORO: variabile che con passaggio di parametro assume il valore denominatoreB all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
Numeratore (locale) – LAVORO: variabile locale all’interno delle funzioni di SommaNum, SottrazioneNum, MoltiplicazioneNum, DivisioneNum.

Denominatore (locale) – LAVORO: variabile locale all’interno delle funzioni di SommaDen, SottrazioneDen, MoltiplicazioneDen, DivisioneDen.