Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:laboratoare:lab04 [2019/10/21 11:45]
george.pirtoaca [Exerciţii de Laborator]
programare:laboratoare:lab04 [2021/10/24 14:12] (current)
andrei.traistaru99 [Referinţe]
Line 1: Line 1:
 ===== Programare modulară. Funcţii în limbajul C. Dezvoltarea algoritmilor folosind funcţii ===== ===== Programare modulară. Funcţii în limbajul C. Dezvoltarea algoritmilor folosind funcţii =====
  
-**Responsabil:** [[andrei.parvu@cti.pub.ro|Andrei Pârvu]] ​+**Responsabili:*
 +  * [[neatudarius@gmail.com|Darius Neațu (CA 2019-2020)]] 
 +  * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip (CA 2019-2020)]] 
 +  ​* [[andrei.parvu@cti.pub.ro|Andrei Pârvu]] ​
  
 ==== Obiective ==== ==== Obiective ====
Line 261: Line 264:
 **Următoarele două probleme vă vor fi date de asistent în cadrul laboratorului.** **Următoarele două probleme vă vor fi date de asistent în cadrul laboratorului.**
  
-[[https://​drive.google.com/​drive/folders/0BworQDqcRK0yd205cE1qamZ5bEU|Checker si teste laborator 4]]+[[https://​drive.google.com/​file/d/1BH7Z__2eg5g5sIAMm5AETW4ityNexqk6/​view?​usp=sharing|Checker si teste laborator 4]]
  
 <spoiler Cum se foloseste checkerul>​ <spoiler Cum se foloseste checkerul>​
Line 275: Line 278:
  
 <​hidden>​ <​hidden>​
-Link direct către lista completă de probleme: [[https://docs.google.com/document/​d/​1-YyoLNKF2GHm1WRRV5s1Qks-DuN6jNrufV_Ci0KIvH8/edit|aici]]+Link direct către lista completă de probleme: [[https://github.com/cs-pub-ro/​ComputerProgramming-internal/​tree/​master/​Laboratories/Lab4|aici]]
 </​hidden>​ </​hidden>​
  
Line 281: Line 284:
 ===== Exerciţii de Laborator ===== ===== Exerciţii de Laborator =====
  
-  - [1pAnalizaţprogramul de mai jos. Modificaţi sursa astfel încât programul să funcţioneze corect, fara a utiliza transmitere prin adresă de memorie. <code c> +  - [2 pct]: Implementațfuncție **int factorial_iterativ(int n)** care returnează n! 1 * 2 * 3 * … * (n – 1* n calculat iterativ. Implementați funcția **int factorial_recursiv(int n)** care are același scopdar implementarea ​este recursivă. 
-#​include<​stdio.h>​ +  - [2 pct]Scrieți o funcție recursivă și una iterativă care returnează suma cifrelor unui număr ​natural **int suma_cifre_recursiv(int n);** respectiv **int suma_cifre_iterativ(int n);**. 
- +  - [1 pct]Scrieți o funcție care determină dacă un număr este prim sau nu (întoarce 1 dacă numărul este prim sau 0 în caz contrar): **int este_prim(int n);**. 
-void sum(int a, int b, int s+  - [1.5 pct]: Scrieți o funcție ​care determină dacă un număr natural este palindrom sau nu (returnează 1 în cazul în care este palindrom sau 0 în caz contrar): **int este_palindrom(int n);** 
-  s a + b; +  - [1.5 pct]: Scrieți o funcție care citește de la tastatură ​un număr ​natural șcalculează câți divizori sunt numere ​palindrom. ​Se va afișa la consolă divizorii care sunt palindrom, precum și numărul acestora. Alegeți un nume funcției implementate ​și apelați această funcție din main pentru a o testa
-+  - [2 pct]: Scrieți o funcție recursivă care citește de la tastatură câte un număr natural (citirea unui număr negativ duce la ignorarea sa) și incrementează un contor ​de fiecare data când este tastat un număprim. Citirea ​se încheie ​când se întâlnește ​numărul 0. Afișați contorul după finalizarea citirii de numere de la tastatură.
- +
-int main() +
-  ​int s; +
-  sum(23, s); +
-  printf("​Suma ​este %d\n", s); +
-   +
-  return 0; +
-+
-</​code>​ +
-  - [1.5p] Scrieți o funcție recursivă care să ridice un număr ​''​x''​ la o putere dată ''​y''​ pozitivă. <code c> +
-power(2, 3); // rezultat 8 +
-power(7, 3); // rezultat 343 +
-</​code>​ +
-  - [1.5p] Scrieți o funcție ​recursivă ​care să returneze ​numărul de cifre al unui numar întreg. <code c> +
-number_of_digits(34); // rezultat 2 +
-number_of_digits(2533); // rezultat 4 +
-</​code>​ +
-  - [2p ​Folosindu-vă de funcțiile scrise anterior scrieți o funcție ​recursivă ce inversează ordinea cifrelor unui numar întreg pozitiv.<​code c> +
-reverse_number(23); // rezultat 32 +
-reverse_number(3523); // rezultat 3253 +
-</​code>​ +
-  - [2pPentru ​un număr ​dat, determinațcel mai mic număpalindrom ​mai mare sau egal decât acel numarUn palindrom ​este un număr care citit de la stânga la dreapta sau de la dreapta la stânga rezultă același numâr.<code c> +
-next_palindrome(120);​ // rezultat 121 +
-</​code>​ +
-  - [2pDe la tastatură se citeşte o listă de numere pozitive. Pentru fiecare element citit se va afişa ​numărul prim cel mai apropiat de acesta. Dacă există două numere prime la fel de apropiate de elementul listei, se vor afişa amândouă. Dacă numărul este prim, nu se mai afişează nimicProgramul ​se încheie ​în momentul în care este citit un număr negativDe exemplu: <code c> +
-27 +
-* 29 +
-13 +
-*  +
-68 +
-* 67 +
-69 +
-* 67 71 +
--1 +
-</​code>​+
  
 ===Bonus=== ===Bonus===
-  - [2p] Folosind declarații si definiri de variabile și funcții, creați două fișiere ​''​f1.c'' ​și ''​f2.c''​, și apleați din funcția ​''​main'' ​din fișierul ​''​f1.c'' ​o funcție ​''​f'' ​definită în ''​f2.c'',​ iar în funcția ''​f'' ​o variabilă ​''​g''​ definită in fișierul ''​f1.c''​. Compilați fișierele împreună și executați programul rezultat. <code bash> +  - [2 pct]Folosind declarații si definiri de variabile și funcții, creați două fișiere ​main.c și autentificare.c, și apleați din funcția main din fișierul ​main.c o funcție ​void login(int username, int password) ​definită în autentificare.c. Funcția login va afișa mesajul “Autentificare cu success!”,​ respectiv “Autentificare esuata!” în urma verificării celor două argumente primite care trebuie să fie numere prime între ele, pentru ca autentificarea să aibă loc cu succes. De asemenea, sursa autentificare.c va cuprinde ​o variabilă ​numită status care va fi setată de funcția login cu 1 în cazul autentificării cu success, respective 0 în caz contrar. Afișați în main, valoarea acestei variabile. Compilați fișierele împreună și executați programul rezultat. ​Scriți fișierul autentificare.h cu antetul funcției implementată în autentificare.c și NU uitați să îl includeți în main.c. 
-gcc f1.c f2.c; ./a.out+ <code bash> 
 +gcc main.c autentificare.c; ./a.out
 </​code>​ </​code>​
- 
-[[https://​drive.google.com/​file/​d/​10O8he377znoQlojR2p6UWKQCIIHv8FSz/​view?​usp=sharing|Probleme laborator 14:​00-16:​00]] 
 ===== Referinţe ===== ===== Referinţe =====
  
   * [[http://​www.tutorialspoint.com/​ansi_c/​c_using_functions.htm | C - Using Functions]]   * [[http://​www.tutorialspoint.com/​ansi_c/​c_using_functions.htm | C - Using Functions]]
-  * [[https://drive.google.com/open?​id=1AccrdxMJxwTg1aO1QPOjB81d-lLUQ_Pm ​| Cheatsheat Functii]]+  * [[https://github.com/cs-pub-ro/​ComputerProgramming/​blob/​master/​Laboratories/​Lab4/​Lab4.pdf ​| Cheatsheat Functii]]
  
 <​hidden>​ <​hidden>​
 ===== Soluții ===== ===== Soluții =====
  
-{{:​programare:​laboratoare:​4-solutions.zip|}}+
 </​hidden>​ </​hidden>​
programare/laboratoare/lab04.1571647558.txt.gz · Last modified: 2019/10/21 11:45 by george.pirtoaca
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0