Monday, December 30th 2019

Esercizi linguaggio C: Seconda parte

Ora che abbiamo ripassato i concetti base di C mettiamoci alla prova con tre programmi.

Riempimento e stampa di un array

Prova a scrivere un programma che chiede all’utente di riempire un array e stampa il suo contenuto.

Verifica il suo funzionamento e poi confrontalo con il mio che trovi qua sotto.

Soluzione
#include <stdio.h>;

int main(){
    int arr[10];

    //Riempimento
    for(int i=0; i < 10; i++){
        printf("Inserisci elemento n.%d",i);
        scanf("%d",arr[i]);
    }

    //Stampa
    for(int i=0; i < 10; i++){
        printf("Elemento n.%d: %d",i,arr[i]);
    }
}

In questo programma utilizzo un for per iterare uno scanf e un altro per iterare un printf.

Calcolatrice con funzioni in C

Prova a scrivere un programma che calcoli le operazioni base tra due numeri utilizzando delle funzioni.

Verifica il suo funzionamento e poi confrontalo con il mio che trovi qua sotto.

Soluzione
#include <stdio.h>;

double addizione(double,double);
double sottrazione(double,double);
double moltiplicazione(double,double);
double divisione(double,double);

int main(){
    double numero1, numero2;
    double risultato;
    int selezione;

    printf("Inserisci il primo numero: ");
    scanf("%lf",&numero1);

    printf("Inserisci il secondo numero: ");
    scanf("%lf",&numero2);

    printf("SELEZIONA UN' OPERAZIONE: \n");
    printf(" 1) ADDIZIONE \n");
    printf(" 2) SOTTRAZIONE \n");
    printf(" 3) MOLTIPLICAZIONE \n");
    printf(" 4) DIVISIONE \n");
    scanf("%d",&selezione);

    switch( selezione ){
        case 1:
            risultato = addizione(numero1,numero2);
            printf("Risultato: %lf",risultato);
            break;

        //SOTTRAZIONE
        case 2:
            risultato = sottrazione(numero1,numero2);
            printf("Risultato: %lf",risultato);
            break;

        //MOLTIPLICAZIONE
        case 3:
            risultato = moltiplicazione(numero1,numero2);
            printf("Risultato: %lf",risultato);
            break;

        //DIVISIONE
        case 4:
            risultato = divisione(numero1,numero2);
            printf("Risultato: %lf",risultato);
            break;

        //NESSUNA DELLE PRECEDENTI
        default:
            printf("Selezione non riconosciuta");
            break;
    }
    return 0;
}

double addizione(double x, double y){
return x + y;
}

double sottrazione(double x, double y){
return x - y;
}

double moltiplicazione(double x, double y){
return x * y;
}

double divisione(double x, double y){
return x / y;
}

Traslazione di un segmento

Prova a scrivere un programma con una funzione che permette di traslare un segmento in un piano cartesiano.

Verifica il suo funzionamento e poi confrontalo con il mio che trovi qua sotto.

Soluzione
#include <stdio.h>

typedef struct{
    double x;
    double y;
} punto;

void trasla(punto* , punto* , double, double);

int main(){
    int x,y;

    punto p1;
    p1.x = 0;
    p1.y = 0;

    punto p2;
    p2.x = 10;
    p2.y = 10;

    printf("Inserisci lo spostamento lungo l'asse x: ");
    scanf("%lf",&x);

    printf("Inserisci lo spostamento lungo l'asse y: ");
    scanf("%lf",&y);

    trasla(&p1,&p2,x,y);

    printf("Nuove Coordinate: \n");
    printf(" X1: %lf \n",p1.x);
    printf(" Y1: %lf \n",p1.y);
    printf(" X2: %lf \n",p2.x);
    printf(" Y2: %lf \n",p2.y);
    return 0;
}

void trasla(punto *p1, punto *p2, double x, double y){
    p1->x = p1->x + x;
    p1->y = p1->y + y;

    p2->x = p2->x + x;
    p2->y = p2->y + y;
}

Per modificare i valori di p1 e p2 ho utilizzato due puntatori nella funzione trasla.

Inserendo in input 5 e 10 ottengo il seguente risultato:

X1: 5
Y1: 10
X2: 15
Y2: 20

Programma bonus

Prova a scrivere un programma che dato un testo in input lo trasforma tutto in maiuscolo.

Guarda i prossimi tutorial per scoprire la soluzione!