Clasa a V-a lecția 9 - 8 oct 2013
From Algopedia
Jump to navigationJump to search
Tema - verificare
Rezolvări aici [1]
Lecție
Exerciții
Am făcut schema logică și programul C pentru următoarele exerciții:
- Se citește un număr n. Să se spună dacă n este palindrom. Un număr este palindrom dacă prima lui cifră este egală cu ultima, a doua cu penultima și așa mai departe. Exemple de palindroame: 15351, 7337 sau 12233221.
#include <stdio.h> int main() { int n, nc, r; scanf( "%d", &n ); nc = n; r = 0; while ( n > 0 ) { r = r * 10 + n % 10; n = n / 10; } if ( nc == r ) printf( "%d este palindrom\n", nc ); else printf( "%d nu este palindrom\n", nc ); return 0; } |
- Se citește un număr n, Să se afișeze toți divizorii lui n. Spunem că d este divizor al lui n dacă n se împarte la d.
#include <stdio.h> int main() { int n, d; scanf( "%d", &n ); printf( "Divizorii lui %d sint:", n ); d = 1; while ( d <= n ) { if ( n % d == 0 ) printf( " %d", d ); d = d + 1; } printf( "\n" ); return 0; } |
- Modificare ușoară: Se citește un număr n. Să se afișeze toți divizorii impari ai lui n. Singura diferență este că vom adăuga 2 la d în loc de 1: d ← d + 2.
Operatori logici
Condițiile care apar în blocurile de decizie (romburi) și în instrucțiunile if și while din C pot fi compuse folosind următorii operatori logici: și, sau și not (în scheme logice), sau &&, || și ! În limbajul C. Iată exemple de folosire în următoarele exerciții:
- Se citește un număr n. Să se spună dacă n este prim. Un număr este prim dacă nu se împarte decît la 1 și la el însuși.
#include <stdio.h> int main() { int n, d; scanf( "%d", &n ); d = 2; while ( d < n && n % d > 0 ) d = d + 1; if ( d == n ) printf( "%d este prim\n", n ); else printf( "%d nu este prim\n", n ); return 0; } |
- Se citește un număr n. Să se afișeze toate numerele prime mai mici sau egale cu n.
#include <stdio.h> int main() { int n, p, d; scanf( "%d", &n ); printf( "Nr. Prime pina la %d:", n ); p = 2; while ( p <= n ) { d = 2; while ( d < p && p % d > 0 ) d = d + 1; if ( d == p ) printf( " %d", p ); p = p + 1; } printf( "\n" ); return 0; } |
Tema
- Să se rezolve următoarele probleme (schemă logică + program C în CodeBlocks):
- Se citesc două numere, n și k. Să se afișeze toate numerele mai mici sau egale cu n care se divid cu k. Exemple: pentru n = 7 k = 2 se va afișa 2 4 6; pentru n = 25 k = 5 se va afișa 5 10 15 20 25.
- Se citește un număr n. Să se afișeze toate numerele perfecte mai mici sau egale cu n. Un număr este perfect dacă este egal cu suma divizorilor lui strict mai mici ca el. Primul număr perfect este 6, deoarece 6 = 1 + 2 + 3. Următorul număr este 28 deoarece 28 = 1 + 2 + 4 + 7 + 14. Exemple: dacă n = 8 se va afișa 6. Dacă n = 30 se va afișa 6 28. Dacă n = 500 se va afișa 6 28 496.
- Problemă de logică: ce linie urmează în secvență:
1 1 1 2 1 1 2 1 1 1 1 1 2 2 1 3 1 2 2 1 1 1 3 1 1 2 2 2 1
Rezolvări aici [2]