Added Cap 7

This commit is contained in:
Mr SL1D3R 2024-06-12 16:36:26 +02:00
parent 92d3a11c1e
commit c9ff7d0f26
11 changed files with 236 additions and 0 deletions

View File

@ -0,0 +1,18 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,35 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,13 @@
#include <stdio.h>
/* scambio di 2 varibili */
int main(){
int a;
int b;
int c;
c = a;
a = b;
b = c;
}

View File

@ -0,0 +1,18 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,21 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,18 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,33 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,31 @@
#include <stdio.h>
/* 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;
}

View File

@ -0,0 +1,7 @@
#include <stdio.h>
/* Stamapa dei primi N numeri primi */
int main(){
}

View File

@ -0,0 +1,7 @@
#include <stdio.h>
/* Calcolo dell'n-esimo numero primo */
int main(){
}

View File

@ -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)