Ora che abbiamo ripassato i concetti base di C mettiamoci alla prova con tre programmi.
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.
#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.
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.
#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;
}
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.
#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
Prova a scrivere un programma che dato un testo in input lo trasforma tutto in maiuscolo.
Guarda i prossimi tutorial per scoprire la soluzione!