Informatica! Appunti dal laboratorio 3! Esercizio 1! • Scrivere un programma che chieda all’utente un numero e dica se è primo o meno.! L’idea di base! • L’idea di base per risolvere il problema è, dato x, controllare tutti i numeri da 1 a x incluso e contare quanti tra loro sono divisori di x! • Se il conteggio è 2, x è primo (perché ci sono solo 1 e x stesso che lo dividono)! • Altrimenti, x non è primo! 3 Diagramma di flusso! 4 Codice! …! int x;! cin >> x;! int c = 0;! int y = 1;! while (y <= x) {! !if (x%y == 0)! ! !c++;! !y++;! }! if (c == 2)! !cout << “x e’ primo\n”;! else! !cout << “x non e’ primo\n”;! …! 5 Esercizio 2! • Modificare il codice in modo che il programma funzioni a ciclo continuo finché l’utente inserisce uno zero, al che termina! • Attenzione: non vogliamo che il programma faccia il controllo se zero è primo o meno, ma deve terminare subito! 6 Soluzione! …! int x,c,y;! cin >> x;! while (x!=0) {! !c = 0;! !y = 1;! !while (y <= x) {! ! !if (x%y == 0)! ! ! !c++;! ! !y++;! !}! !if (c == 2)! ! !cout << “x e’ primo\n”;! !else! ! !cout << “x non e’ primo\n”;! !cin >> x;! }! …! 7 Commenti sulla soluzione! • Non si può usare il do…while perché se l’utente immette subito uno zero il programma esegue comunque il controllo sulla x: bisogna fare un cin fuori dal ciclo while e poi farne un altro alla fine del ciclo while, per poi ripetere il controllo (x!=0)! • Ogni volta y e c devono essere riportati al loro valore iniziale (altrimenti il conteggio dei divisori risulta sbagliato per le x successive alla prima)! 8 Esercizi con il ciclo for! 1. scrivere un programma che stampi su schermo i primi 100 numeri a partire da 1! 2. scrivere un programma che stampi su schermo i primi 100 numeri pari a partire da 2! 3. scrivere un programma che stampi i primi 100 numeri a partire da 1, andando a capo dopo ogni decina! 9 Possibili soluzioni! 1. for (int i = 1; i <= 100; i++)! ! !cout << i << “ ”;! 2. for (int i = 1; i <= 100; i++)! ! !cout << i*2 << “ ”;! 3. for (int i = 1; i <= 100; i++){ !cout << i << “ ”; !if (i%10 == 0) ! !cout << “\n”; }! ! 10
© Copyright 2024 Paperzz