Archivi categoria: Programmazione

C++: classe con funzioni membro

Ecco un semplice programmino che fa uso di una classe con funzioni membro:

Header

class cliente
 {
     public:
     char nome[20];
     char cognome[20];
     char indirizzo[20];
     char sesso;
     int eta;
     void InserisciNome();
     void InserisciCognome();
     void InserisciIndirizzo();
     void InserisciSesso();
     void InserisciEta();
 };

Sorgente

#include <iostream.h>
#include "cliente1.h"

void cliente::InserisciNome()
{
    cout << "Inserisci il nome del cliente: " << endl;
    cin >> nome;
}

void cliente::InserisciCognome()
{
    cout << "Inserisci il cognome del cliente: " << endl;
    cin >> cognome;
}

void cliente::InserisciIndirizzo()
{
    cout << "Inserisci l'indirizzo del cliente: " << endl;
    cin >> indirizzo;
}

void cliente::InserisciSesso()
{
    while((sesso!='m')&&(sesso!='f'))
    {
        cout << "Inserisci il sesso del cliente: " << endl;
        cin >> sesso;
    }
}

void cliente::InserisciEta()
{
    cout << "Inserisci l'età del cliente: " << endl;
    cin >> eta;
}

void main()
{
    cliente cliente;
    cliente.InserisciNome();
    cliente.InserisciCognome();
    cliente.InserisciIndirizzo();
    cliente.InserisciSesso();
    cliente.InserisciEta();
    cout << "I dati riguardanti il cliente sono: " << endl;
    cout << cliente.nome << endl;
    cout << cliente.cognome << endl;
    cout << cliente.indirizzo << endl;
    cout << cliente.sesso << endl;
    cout << cliente.eta << endl;
}

A presto! 

C++: overloading

L’overloading è una peculiarità del C++ (non presente quindi in C) che permette di utilizzare lo stesso nome per due o più funzioni, purchè abbiano argomenti diversi. Ecco un esempio:

#include <iostream.h>

int prodotto (int a, int b);
float prodotto (float a, float b);

void main()
{
    int a, b, risultato;
    float c, d, ris;
    cout << "Inserisci il primo numero (intero)" << endl;
    cin >> a;
    cout << "Inserisci il secondo numero (intero)" << endl;
    cin >> b;
    risultato=prodotto(a, b);
    cout << "Il prodotto è pari a: " << risultato << endl;
    cout << "Inserisci il primo numero (reale)" << endl;
    cin >> c;
    cout << "Inserisci il secondo numero (reale)" << endl;
    cin >> d;
    ris=prodotto(c, d);
    cout << "Il prodotto è pari a: " << endl << ris;
}

int prodotto (int a, int b)
{
    int ris;
    ris=a*b;
    return(ris);
}

float prodotto (float a, float b)
{
    float ris;
    ris=a*b;
    return(ris);
}

A presto! 

C++: uso dei prototipi

Molti di voi sapranno che è assolutamente sconveniente scrivere un programma di grandi dimensioni costituito esclusivamente dalla funzione main(). Infatti, è molto più vantaggioso implementare funzioni diverse a seconda delle operazioni che si devono svolgere o, in termini più pratici, dividere un unico grande problema in più sottoproblemi di minore entità (divide et impera). A tal scopo ho pensato di pubblicare il seguente programmino:

#include <iostream.h>

int prodotto(int a, int b); //definizione del prototipo

void main ()
{
    int a, b, risultato;
    cout << "Inserisci il primo numero: " << endl;
    cin >> a;
    cout << "Inserisci il secondo numero: " << endl;
    cin >> b;
    risultato=prodotto(a, b);
    cout << "Il risultato del prodotto è: " << risultato << endl;
}

int prodotto (int a, int b)
{
    int ris;
    ris = a*b;
    return(ris);
}

Come potete notare, immediatamente prima del main() ho definito il prototipo della funzione prodotto, la quale verrà implementata successivamente al main() stesso. Tale operazione risulta obbligatoria, in quanto fa parte dello standard ANSI. Per ciò che concerne invece il posizionamento dei prototipi, è buona norma inserirli all’interno dell’header, anche se la loro definizione prima del main() è comunque consentita.

Spero di essere stato esaustivo, a presto! 

 

 

C++: piccolo esempio di classe

Qui di seguito è riportato il sorgente di un piccolo programmino scritto da me in C++ in cui viene mostrato l’uso delle classi:

Header

class cliente
{
    public:
    char nome[20];
    char cognome[20];
    char indirizzo[20];
    char sesso;
    int eta;
};

Sorgente

#include <iostream.h>
#include "cliente.h"

void main()
{
    cliente cliente;
    cout << "inserisci il nome del cliente:" << endl;
    cin >> cliente.nome;
    cout << "Inserisci il cognome del cliente:" << endl;
    cin >> cliente.cognome;
    cout << "Inserisci l'indirizzo del cliente:" << endl;
    cin >> cliente.indirizzo;
    while ((cliente.sesso!='m') && (cliente.sesso!='f'))
    {
        cout << "inserisci il sesso del cliente (M o F):" << endl;
        cin >> cliente.sesso;
    }
    cout << "Iserisci l'età del cliente" << endl;
    cin >> cliente.eta;

    cout << "Il cliente da te inserito è: " << endl;
    cout << cliente.nome << endl;
    cout << cliente.cognome << endl;
    cout << cliente.indirizzo << endl;
    cout << cliente.sesso << endl;
    cout << cliente.eta << endl;
}

Facciamo ora alcune osservazioni: è buona norma implementare la classe (in questo caso “cliente”) all’interno di un header, per rendere il sorgente più comprensibile ed ordinato. Tale header verrà successivamente richiamato mediante #include.

Per ciò che concerne il main ho ritenuto opportuno creare un sistema per verificare che il carattere inserito dall’utente sia effettivamente M oppure F. Infine, l’ultima parte del codice serve a stampare su schermo i dati da noi appena inseriti.

A presto! 

 

C++: Calcolare somma, media e diagonale principale di una matrice 3×3

Ecco un semplice programmino per calcolare somma, media e diagonale principale di una matrice 3×3 (vista come vettore bidimensionale):

#include <iostream.h>

void main()
{
 int v[3][3], somma, diagonale, i, j, n;
 float media;
 somma = 0;
 diagonale = 0;
 n = 0;
 for (i=0; i<3; i++) //inserisco gli elementi nella matrice
    for (j=0;j<3;j++)
  {
        cout << "inserisci l'elemento di posizione: " << i << j << endl;
        cin >> v[i][j];
  }
 for (i=0; i<3; i++) //calcolo somma e diagonale principale
    for (j=0;j<3;j++)
    {
        somma += v[i][j];
        if (i==j)
        diagonale += v[i][j];
    }
 for (i=0;i<3;i++)
    for(j=0;j<3;j++)
        n++;
 

cout << "La somma è: " << somma << endl;
media = ((float)somma)/n; //calcolo la media
cout << "La media è: " << media << endl;
cout << "La diagonale principale è: " << diagonale << endl;

}

Facciamo adesso alcune osservazioni. Come potete notare se non avessi utilizzato la conversione esplicita, cioè ((float)somma), nonostante la variabile media sia di tipo float, il risultato che avrei ottenuto sarebbe stato un int, poichè a monte vi è una somma di tipo intero. Avrei potuto ovviare a tale situazione semplicemente dichiarando la variabile somma non più come int ma come float:

#include <iostream.h>

void main()
{
 int v[3][3], diagonale, i, j, n;
 float media, somma;
 somma = 0;
 diagonale = 0;
 n = 0;
 for (i=0; i<3; i++) //inserisco gli elementi nella matrice
    for (j=0;j<3;j++)
  {
        cout << "inserisci l'elemento di posizione: " << i << j << endl;
        cin >> v[i][j];
  }
 for (i=0; i<3; i++) //calcolo somma e diagonale principale
    for (j=0;j<3;j++)
    {
        somma += v[i][j];
        if (i==j)
        diagonale += v[i][j];
    }
 for (i=0;i<3;i++)
    for(j=0;j<3;j++)
        n++;
 

cout << "La somma è: " << somma << endl;
media = somma/n; //calcolo la media
cout << "La media è: " << media << endl;
cout << "La diagonale principale è: " << diagonale << endl ;

}

A presto! 

C++: programma per calcolare la somma di due interi

Ecco un semplicissimo programmino scritto in C++ che calcola la somma di due interi:

#include <iostream.h>

void main()
{
    int a, b, somma;
    cout << "inserisci il primo numero";
    cin >> a;
    cout << "inserisci il secondo numero";
    cin >> b;
    somma = 0;
    somma = a+b;
    cout << "La somma è " << somma;
}