Showing posts with label Fibonacci. Show all posts
Showing posts with label Fibonacci. Show all posts

Sunday, December 20, 2015

Limbajul C++. Functii. Transfer prin valoare, referinta, adresa


Stim ca la transmiterea prin valoare a argumentelor unei functii, prelucrarea nu se face asupra variabilelor-argument, ci asupra unor copii. Copiile sunt variabile interne blocului functiei, de aceea durata lor de viata este limitata la blocul functiei. Reguli:

1) nu folosim transmisia prin valoare in cazul unor variabile de mari dimensiuni, pentru ca dimensiunea trebuie replicata pentru copiile folosite in corpul functiei;

2) nu folosim transferul prin valoare cand vrem ca variabilele transmise ca argument sa fie modificate.

Pentru cazurile mentionate anterior putem folosi transferul prin referinta (alias al variabilei-argument, permis doar in C++) sau transferul prin adresa (cu pointeri, permis in C/C++). 

Transferul prin adresa este, de fapt, tot un transfer prin valoare.

Wednesday, November 18, 2015

Limbajul C. Numere prime, numere prietene, Fibonacci, listarea valorilor unei functii pe un interval

Toate problemele de mai jos sunt enunturi adaptate sau luate ca atare din cartea scrisa de V.Iorga & colaboratorii, "Programare in C/C++. Culegere de probleme", ISBN 973-568-800-X aparuta in 2003.

Toate enunturile reprezinta probleme de programare procedurala.

1. Descompunerile unui numar par ca suma de numere prime. Problema P2_3. 

Teorie: daca n este un numar par, adica n = 2*k iar k e un intreg oarecare,
atunci o cale ar fi determinarea tuturor numerelor prime pana la n, fie m numarul
acestor numere prime. Scazand din n fiecare dintre cele m numere si verificand daca
rezultatul scaderii este tot numar prim, aflam descompunerile cerute de problema.

Codul si printscreen-ul executiei: