Probleme de Programare cu Explicatii
1. Numere prime și palindroame
Scrieți funcții:
- int estePrim(int n): verifică dacă un număr este prim.
- int estePalindrom(int n): verifică dacă un număr este palindrom.
- void afisarePrimePalindroame(int a, int b): afișează toate numerele din intervalul [a, b]
care sunt simultan prime și palindroame.
2. Numere perfecte și divizori
Scrieți funcții:
- int sumaDivizori(int n): calculează suma divizorilor unui număr.
- int estePerfect(int n): returnează 1 dacă numărul este perfect, folosind sumaDivizori.
- void afisarePerfecte(int a, int b): afișează toate numerele perfecte din intervalul [a, b].
3. Factoriali și cifra maximă
Scrieți funcții:
- int factorial(int n): calculează factorialul unui număr.
- int cifraMaxima(int n): determină cifra maximă a unui număr.
- void afisareFactorialiCuCifraMaxima(int n): afișează factorialii numerelor [1, n] și cifra
maximă a fiecăruia.
Explicații: Utilizarea funcțiilor cu void și int
Diferența principală între funcțiile cu tipul de întoarcere `int` și cele de tip `void` este
următoarea:
- Funcțiile cu tipul de întoarcere `int` returnează o valoare, de obicei folosită ulterior în
altă parte a programului. Aceste funcții pot fi utilizate pentru a efectua calcule sau a verifica
condiții și returnează o valoare de tip întreg.
- Funcțiile de tip `void` nu returnează nicio valoare. Acestea sunt folosite de obicei pentru
a efectua acțiuni (cum ar fi afișarea unui mesaj, modificarea unei variabile globale, sau
efectuarea unei operații fără a întoarce un rezultat).
Exemple:
- **Funcția `int`**:
- Afișează rezultatul calculului unui număr prim:
```
int estePrim(int n) {
if (n <= 1) return 0;
for (int d = 2; d * d <= n; d++) {
if (n % d == 0) return 0;
}
return 1;
}
```
- Aici funcția `estePrim` returnează 1 dacă numărul este prim și 0 altfel.
- **Funcția `void`**:
- Afișează un mesaj, fără a returna o valoare:
```
void afisareMesaj() {
printf("Acesta este un mesaj.
");
}
```
- Aici funcția `afisareMesaj` doar afișează un mesaj, fără a returna niciun rezultat.
Probleme care includ vectori
1. **Numere prime și numărătoare**
Scrieți funcții:
- int estePrim(int n) – verifică dacă un număr este prim.
- int numaraPrime(int n, int v[]) – returnează numărul de elemente prime dintr-un vector.
- void afisarePrime(int n, int v[]) – afișează toate elementele prime din vector.
2. **Numere palindroame într-un vector**
Scrieți funcții:
- int estePalindrom(int n) – verifică dacă un număr este palindrom.
- void afisarePalindroame(int n, int v[]) – afișează toate numerele palindroame dintr-un
vector.
- int numaraPalindroame(int n, int v[]) – returnează numărul de elemente palindroame
dintr-un vector.
3. **Vector cu numere pare și impare**
Scrieți funcții:
- int estePar(int n) – verifică dacă un număr este par.
- void separaPareImpare(int n, int v[], int pare[], int *np, int impare[], int *ni) – separă
vectorul inițial în doi vectori: unul cu elemente pare și altul cu elemente impare.
- void afisareVector(int n, int v[]) – afișează un vector dat.
4. **Produsul și divizorii elementelor dintr-un vector**
Scrieți funcții:
- int produsElemente(int n, int v[]) – returnează produsul elementelor din vector.
- int sumaDivizori(int n) – returnează suma divizorilor unui număr.
- void afisareDivizori(int n, int v[]) – afișează suma divizorilor fiecărui element din vector.
5. **Cifre maxime și minime în vector**
Scrieți funcții:
- int cifraMaxima(int n) – determină cifra maximă a unui număr.
- int cifraMinima(int n) – determină cifra minimă a unui număr.
- void afisareCifreExtreme(int n, int v[]) – afișează cifrele maxime și minime pentru
fiecare element din vector.
6. **Vector cu oglindirea elementelor**
Scrieți funcții:
- int oglindit(int n) – returnează oglinditul unui număr.
- void oglindireVector(int n, int v[], int rezultat[]) – construiește un vector cu elementele
oglindite.
- void afisareVector(int n, int v[]) – afișează vectorul rezultat.
7. **Frecvența elementelor într-un vector**
Scrieți funcții:
- int frecventa(int n, int v[], int x) – returnează frecvența unui element x în vector.
- void afisareFrecventa(int n, int v[]) – afișează frecvența fiecărui element distinct din
vector.
- int numaraDistincte(int n, int v[]) – returnează numărul elementelor distincte.
8. **Numere prime și palindroame într-un vector**
Scrieți funcții:
- int estePrim(int n) – verifică dacă un număr este prim.
- int estePalindrom(int n) – verifică dacă un număr este palindrom.
- void afisarePrimePalindroame(int n, int v[]) – afișează toate numerele din vector care
sunt și prime, și palindroame.
9. **Maximul, minimul și suma elementelor dintr-un vector**
Scrieți funcții:
- int maxim(int n, int v[]) – returnează elementul maxim din vector.
- int minim(int n, int v[]) – returnează elementul minim din vector.
- int sumaElemente(int n, int v[]) – returnează suma elementelor vectorului.
10. **Vector sortat și filtrat**
Scrieți funcții:
- void sortareCrescatoare(int n, int v[]) – sortează vectorul în ordine crescătoare.
- void filtrarePrim(int n, int v[], int rezultat[], int *nr) – construiește un vector doar cu
elementele prime.
- void afisareVector(int n, int v[]) – afișează vectorul sortat și filtrat.