Codice sorgente dei programmi
Primo programma
/*
Primo esempio di programma.
Scrive in output "Il mio primo programma"
*/
#include <stdio.h>
int main() {
printf("Il mio primo programma\n");
}
Numero pari o dispari
/*
Il seguente programma riceve un numero intero dall'utente e
scrive se il numero è pari o dispari.
*/
#include <stdio.h>
int main() {
int num;
printf("Inserisci un numero intero: ");
scanf("%d", &num);
if ( (num%2) == 0) {
printf("\nInserito numero pari\n");
}
else {
printf("\nInserito numero dispari\n");
}
}
Numero maggiore
/*
Il seguente programma riceve due numeri interi dall'utente e
scrive quale numero è maggiore.
Nel caso in cui i due numeri siano uguali scrive semplicemente
che sono uguali.
*/
#include <stdio.h>
int main() {
int m, n;
printf("Inserisci il primo numero: ");
scanf("%d", &m);
printf("\nInserisci il secondo numero: ");
scanf("%d", &n);
printf("\n");
if ( m>n ) {
printf("%d maggiore di %d\n", m, n);
}
else if ( m<n ) {
printf("%d maggiore di %d\n", n, m);
}
else {
printf("I due numeri sono uguali\n");
}
}
Retta passante per due punti
/*
Il seguente programma calcola l'equazione della retta
passante per due punti nello spazio a due dimensioni (piano cartesiano).
Riceve le coordinate dei due punti dall'utente.
L'unico caso in cui non è possibile calcolare l'equazione della retta
consiste nell'inserimento di due punti coincidenti:
infatti per un punto passano infinite rette identificate col nome di
'fascio proprio di rette'.
*/
#include <stdio.h>
#include <stdlib.h>
int main () {
/*
Dichiariamo le variabili.
4 interi per le coordinate dei punti.
2 interi per il coefficiente angolare (numeratore e denominatore).
1 virgola mobile per il termine noto.
*/
int x1, x2, y1, y2;
int dx, dy;
float q;
printf(" RETTA PASSANTE PER DUE PUNTI \n\n");
printf("Inserisci la x del primo punto: ");
scanf("%d", &x1);
printf("\n");
printf("Inserisci la y del primo punto: ");
scanf("%d", &y1);
printf("\n");
printf("Inserisci la x del secondo punto: ");
scanf("%d", &x2);
printf("\n");
printf("Inserisci la y del secondo punto: ");
scanf("%d", &y2);
printf("\n");
/* calcoliamo delta x e delta y */
dy = y2 - y1;
dx = x2 - x1;
/*
Ora dobbiamo controllare se dx è uguale a zero.
In tal caso non possiamo scrivere la retta in forma esplicita,
ma solo nella forma x = un valore.
Inoltre dobbiamo controllare se i due punti sono uguali:
in tal caso non esiste un'unica retta.
*/
if (dx == 0) {
if (dy == 0) {
printf("I due punti sono coincidenti! Non esiste un'unica retta\n");
exit(0);
} else {
printf("Equazione della retta: x = %d\n", x1);
exit(0);
}
}
/*
Calcoliamo il termine noto,
prendiamo il primo punto e sostituiamo.
Notate che dividiamo per dx, ma poiché abbiamo controllato prima se è = 0
siamo certi che non divideremo per 0, che è un errore.
*/
q = y1 - (dy/dx) * x1;
/* Infine scriviamo l'equazione della retta in forma esplicita. */
printf("Equazione della retta: ");
if (q < 0) {
printf("y = (%d/%d) x %.1f", dy, dx, q);
} else if (q == 0) {
printf("y = (%d/%d) x", dy, dx);
} else {
printf("y = (%d/%d) x + %.1f", dy, dx, q);
}
printf("\n");
}
Massimo comune divisore
/*
Il seguente programma calcola il massimo comune divisore (MCD)
di due numeri interi che l'utente inserisce.
Viene implementato l'algoritmo di Euclide, che risulta molto
comodo e richiede poche righe di codice.
*/
#include <stdio.h>
int main() {
int x, y, temp;
printf(" MASSIMO COMUNE DIVISORE\n\n");
printf("Inserisci il primo numero: ");
scanf("%d", &x);
printf("\n");
printf("Inserisci il secondo numero: ");
scanf("%d", &y);
printf("\n");
while (x>0) {
/*
Se x è minore di y scambiamo i 2 numeri.
Abbiam bisogno di una terza variabile per fare lo scambio
*/
if (x<y) {
temp = x;
x = y;
y = temp;
}
/* Sottraiamo */
x = x - y;
}
printf("Massimo comune divisore: %d", y);
printf("\n\n");
}
Numero primo
/*
Il seguente programma esegue il test di primalità sul numero inserito
dall'utente. Scopre cioè se il numero è primo o composto.
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, x, resto;
printf("Inserisci il numero: ");
scanf("%d", &n);
printf("\n");
/*
Inizializziamo a 2 il numero per cui dividere ed
incrementiamo ogni volta.
Ci fermeremo appena prima di dividere per n stesso
(divisione che da sempre 1 con resto 0).
*/
x = 2;
while (x < n) {
/* Calcoliamo il resto */
resto = n%x;
/*
Se il resto è zero siamo già sicuri che non è primo.
Possiamo quindi uscire
*/
if (resto == 0) {
printf("Il numero inserito non è primo.\n\n");
exit(0);
}
/* Incrementiamo */
x = x + 1;
}
/*
Se siamo arrivati fin qui significa che non abbiamo eseguito alcuna
divisione con resto uguale a 0.
Quindi il numero è primo.
*/
printf("Il numero inserito è primo.\n\n");
}