C Cicli e selezione: In questa lezione analizzeremo dei classici programmi in C
- Contare i numeri primi in una sequenza di numeri
- Numero perfetto
- Contare il numero di cifre di un numero inserito
- Sommatoria
- Link utili
Contare i numeri primi in una sequenza di numeri
Ti ricordo la definizione di numero primo: si dice primo un numero che è divisibile solo per 1 e se stesso.
#include<stdio.h>
int main(){
int n, i, conta_primi=0, numero, primo, j;
// inserimento n (1 - 50)
do{
printf("Quanti numeri vuoi inserire ?\n");
scanf("%d",&n);
}while(n<1 || n >50);
for(i=0;i<n;i++){
printf("Inserisci un numero \n");
scanf("%d",&numero);
primo=1;
for(j=2;j<numero;j++){
if(numero % j ==0){
primo=0;
}
}
if(primo==1){
conta_primi++;
}
}
printf("Tra i numeri inseriti ci sono %d numeri primi \n",conta_primi);
return 0;
}
Il primo ciclo che utilizziamo è il do{}while(); un’iterazione post-condizionale e quindi il codice al suo interno viene eseguito almeno una volta. Lo utilizziamo per avere in input un numero n compreso tra 1 e 50
Il secondo ciclo è il for per leggere gli n numeri che inserirà l’utente.
Nel terzo ciclo (sempre for) a riga 13 controlliamo i numeri tra 2 e n-1, se troviamo un divisore del numero inserito dall’utente assegneremo 0 alla nostra variabile flag primo. Utilizziamo 0 per rappresentare il false e 1 il true siccome nel linguaggio C non esiste il tipo di dato boolean.
Se al termine del controllo la variabile primo conterrà ancora 1 abbiamo trovato un numero primo e incrementiamo il contatore dei numeri primi conta_primi.
Numero perfetto in C con cicli e selezione
Ti ricordo la definizione di numero perfetto: un numero naturale che è uguale alla somma dei suoi divisori positivi, escludendo il numero stesso.
#include<stdio.h>
int main(){
int num, i, somma_div;
somma_div=0;
do{
printf("Inserisci un numero positivo \n");
scanf("%d",&num);
}while(num<=0);
for(i=0;i<num;i++){
if(num%i==0){
somma_div+=i; // somma_div=somma_div+i;
}
}
if(somma_div==num){
printf("Il numero inserito e' PERFETTO");
}else{
printf("Il numero inserito NON e' PERFETTO");
}
}
Nel ciclo for riga 10 controlliamo tutti i numeri da 1 a n-1 e se sono divisori del numero inserito dall’utente num li aggiungiamo alla variabile accumulatore somma_div.
Al termine del ciclo se la somma dei divisori è uguale al numero inserito dall’utente stamperemo su standard output Il numero inserito e’ PERFETTO
Contare il numero di cifre di un numero inserito
Per contare il numero di cifre di un numero ci basta dividere il numero stesso per 10 fino a quando questo sarà maggiore di 1
#include<stdio.h>
int conta_cifre(int num){
int conta_c=0;
if(num<10){
return 1;
}
while(num>1){
num/=10;
conta_c++;
}
return conta_c;
}
int main(){
int num;
do{
printf("Inserisci un numero positivo \n");
scanf("%d",&num);
}while(num<0);
printf("Il numero inserito ha %d cifre \n",conta_cifre(num));
return 0;
}
Sommatoria
La sommatoria è un simbolo matematico che abbrevia, in una notazione sintetica, la somma di un certo insieme di addendi. La notazione prevede:
- una lettera sigma maiuscola:
- una lettera chiamata indice della sommatoria (spesso si usano le lettere , , o minuscole)
- un’espressione algebrica alla destra della sigma in cui può comparire l’indice della sommatoria
- un intervallo di valori (interi) in cui può variare l’indice da indicare sopra e sotto la sigma.
#include<stdio.h>
#include<math.h>
int main(){
int sommatoria,k;
sommatoria=0;
for(k=1;k<=5;k++){
sommatoria=sommatoria+(2*k);
}
printf("Il risultato della sommatoria %d\n",sommatoria);
}
Il ciclo for calcola la sommatoria nell’intervallo di valori, nel nostro caso da 1 a 5 aggiornando il contenuto della variabile sommatoria.