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");	
}