diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/1 Scomposizione in fattori primi di un numero intero/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/1 Scomposizione in fattori primi di un numero intero/main.c new file mode 100644 index 0000000..a3b7d90 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/1 Scomposizione in fattori primi di un numero intero/main.c @@ -0,0 +1,18 @@ +#include + +/* Scomposizione in fattori primi di un numero intero */ + +int main(){ + int n, i; + printf("Inserisci un numero intero: "); + scanf("%d", &n); + printf("Fattori primi di %d: ", n); + for(i = 2; i <= n; i++){ // i = 2 perchè 1 non è primo + while(n % i == 0){ // finchè n è divisibile per i + printf("%d ", i); + n /= i; // n = n / i; + } + } + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/10 Tabellina pitagorica/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/10 Tabellina pitagorica/main.c new file mode 100644 index 0000000..6cd3720 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/10 Tabellina pitagorica/main.c @@ -0,0 +1,35 @@ +#include + +/* Tabellina pitagorica */ +int main() { + int dimensione; + + // Richiesta della dimensione della tabellina all'utente + printf("Inserisci la dimensione della tabellina pitagorica: "); + scanf("%d", &dimensione); + + // Stampa dell'intestazione della tabella + printf(" |"); + for (int i = 1; i <= dimensione; i++) { + printf("%4d", i); + } + printf("\n"); + + // Stampa della linea di separazione + printf("---+"); + for (int i = 1; i <= dimensione; i++) { + printf("----"); + } + printf("\n"); + + // Stampa della tabellina pitagorica + for (int i = 1; i <= dimensione; i++) { + printf("%2d |", i); // Stampa il numero di riga + for (int j = 1; j <= dimensione; j++) { + printf("%4d", i * j); // Stampa il prodotto + } + printf("\n"); + } + + return 0; +} diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/12 Scambio del contenuto di due variabili/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/12 Scambio del contenuto di due variabili/main.c new file mode 100644 index 0000000..cce5c9c --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/12 Scambio del contenuto di due variabili/main.c @@ -0,0 +1,13 @@ +#include + +/* scambio di 2 varibili */ + +int main(){ + int a; + int b; + int c; + + c = a; + a = b; + b = c; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/2 Fattoriale di un numero/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/2 Fattoriale di un numero/main.c new file mode 100644 index 0000000..9e642bf --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/2 Fattoriale di un numero/main.c @@ -0,0 +1,18 @@ +#include + +/* Fattoriale di un numero */ + +int main(){ + int n; + int fattoriale = 1; + + printf("Inserisci un numero: "); + scanf("%d", &n); + + for(int i = 1; i <= n; i++) { // + fattoriale *= i; // fattoriale = fattoriale * i; + } + + printf("Il fattoriale di %d e': %d\n", n, fattoriale); + return 0; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/3 Elevamento a potenza intera di un numero reale/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/3 Elevamento a potenza intera di un numero reale/main.c new file mode 100644 index 0000000..1701e17 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/3 Elevamento a potenza intera di un numero reale/main.c @@ -0,0 +1,21 @@ +#include + +/* Elevamento a potenza intera di un numero reale */ + +int main(){ + float base; + int esponente; + float risultato = 1; + + printf("Inserisci la base: "); + scanf("%f", &base); + printf("Inserisci l'esponente: "); + scanf("%d", &esponente); + + for(int i = 0; i < esponente; i++){ + risultato *= base; + } + + printf("Il risultato e': %f\n", risultato); + return 0; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/4 MCD tra due numeri/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/4 MCD tra due numeri/main.c new file mode 100644 index 0000000..1b510ff --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/4 MCD tra due numeri/main.c @@ -0,0 +1,18 @@ +#include + +/* calcolo del MCD (minimo comune divisore) tra due numeri */ + +int main(){ + int a, b; + printf("Inserisci due numeri interi: "); + scanf("%d %d", &a, &b); + while(a != b){ // finchè i due numeri sono diversi + if(a > b){ // se a è maggiore di b + a -= b; // sottrai b ad a + }else{ + b -= a; // sottrai a a b + } + } + printf("Il MCD tra i due numeri e': %d\n", a); + return 0; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/5 Calcolo del mcm tra due numeri/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/5 Calcolo del mcm tra due numeri/main.c new file mode 100644 index 0000000..3cd0e5b --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/5 Calcolo del mcm tra due numeri/main.c @@ -0,0 +1,33 @@ +#include + +/* Calcolo del mcm (minimo comune multiplo) tra due numeri interi */ + +// Qui ho preferito usare il metodo di Euclide per il calcolo del MCD + +int calcolaMCD(int a, int b) { // Algoritmo di Euclide + while (b != 0) { + int temp = b; + b = a % b; + a = temp; + } + return a; +} + +int calcolaMCM(int a, int b) { + return (a / calcolaMCD(a, b)) * b; +} + +int main() { + int num1, num2; + + printf("Inserisci il primo numero: "); + scanf("%d", &num1); + printf("Inserisci il secondo numero: "); + scanf("%d", &num2); + + int mcm = calcolaMCM(num1, num2); + + printf("Il minimo comune multiplo di %d e %d e': %d\n", num1, num2, mcm); + + return 0; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/6 Primalità di un numero intero/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/6 Primalità di un numero intero/main.c new file mode 100644 index 0000000..570d550 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/6 Primalità di un numero intero/main.c @@ -0,0 +1,31 @@ +#include + +/* Primalità di un numero intero */ + +int main() { + int numero; + int isPrimo = 1; // Assume che il numero sia primo + + printf("Inserisci un numero intero: "); + scanf("%d", &numero); + + if (numero <= 1) { + isPrimo = 0; // 0 e 1 non sono numeri primi + } else { + // Verifica della primalità + for (int i = 2; i <= numero / 2; i++) { + if (numero % i == 0) { + isPrimo = 0; // Trovato un divisore, non è primo + break; + } + } + } + + if (isPrimo) { + printf("%d è un numero primo.\n", numero); + } else { + printf("%d non è un numero primo.\n", numero); + } + + return 0; +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/7 Stampa dei primi N numeri primi/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/7 Stampa dei primi N numeri primi/main.c new file mode 100644 index 0000000..2d6b9a1 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/7 Stampa dei primi N numeri primi/main.c @@ -0,0 +1,7 @@ +#include + +/* Stamapa dei primi N numeri primi */ + +int main(){ + +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/8 Calcolo dell'n-esimo numero primo/main.c b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/8 Calcolo dell'n-esimo numero primo/main.c new file mode 100644 index 0000000..1dc8fc1 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/Algoritmi numerici/8 Calcolo dell'n-esimo numero primo/main.c @@ -0,0 +1,7 @@ +#include + +/* Calcolo dell'n-esimo numero primo */ + +int main(){ + +} \ No newline at end of file diff --git a/7 Algoritmi da sapere senza incertezze/README.md b/7 Algoritmi da sapere senza incertezze/README.md new file mode 100644 index 0000000..6e59852 --- /dev/null +++ b/7 Algoritmi da sapere senza incertezze/README.md @@ -0,0 +1,35 @@ +# Algoritmi da sapere senza incertezze +I seguenti algoritmi sono ritenuti “saperi minimi” per chi vuole studiare informatica e devono +essere conosciuti e realizzati senza incertezze. + +## Algoritmi numerici +- Scomposizione in fattori primi di un numero intero +- Fattoriale di un numero (eventualmente anche con versione ricorsiva) +- Elevamento a potenza intera di un numero reale +- MCD tra due numeri (esistono diverse soluzioni) +- Calcolo del mcm tra due numeri (esistono diverse soluzioni) +- Primalità di un numero intero (N.B. 1 non è considerato numero primo, si parte da due) +- Stampa dei primi N numeri primi +- Calcolo dell'n-esimo numero primo +- Calcolo dei primi N termini della serie di Fibonacci (versione iterativa e/o ricorsiva) +- Tabellina pitagorica +- Calcolo della radice quadrata con il metodo dicotomico +- Scambio del contenuto di due variabili + +## Vettori parzialmente riempiti delle diverse tipologie (sentinella, contatore, valore nullo) +- Copia di un vettore su un altro +- Ricerca del max/min tra gli elementi +- Somma degli elementi di un vettore (accumulazione); calcolo della media +- Aggiunta di un elemento +- Ricerca di un elemento (sia per vettore ordinato che non ordinato) +- Calcolo del numero di occorrenze di un elemento +- Ricerca del valore o dei valori più frequenti (moda) +- Ordinamento di un vettore (diversi algoritmi) +- Inserimento di un elemento in un vettore ordinato +- Ricerca di un sottovettore in un vettore (esempio: ricerca sottostringa in una stringa) +- Unione di due vettori ordinati +- Unione di due vettori non ordinati (aggiunta in fondo) +- Eliminazione di un elemento +- Eliminazione dei duplicati +- Intersezione tra due vettori di elementi distinti (insiemi) +- Unione tra due vettori di elementi distinti (insiemi) \ No newline at end of file