Sunteți pe pagina 1din 4

Anexa2. De elaborat algoritmul și de scris programul cu pointeri si POINTERI LA FUNCTII .

1. Scrieţi un program cu pointeri care generează o mie de seturi de cinci numere a leatoare cuprinse între 1
şi 40, în final afişând frecvenţa cu care a fost generat fiecare număr.
2. Scrieţi un program cu pointeri care sumează numerele negative şi pozitive dintr-un tablou.
3. Scrieţi un program cu pointeri care calculează cel mai mare divizor comun dintr-un şir de
numere date.
4. Scrieţi un program cu pointeri care compară valorile a două tablouri date.
5. Scrieţi un program cu pointeri care efectuează următoarele operaţii dacă în prima pătrime a unui
şir de caractere sunt mai puţin de 10 simboluri şi în ultima pătrime a setului de caractere nu sunt
simboluri din segmentul [“a”...”z”]. Totodată să se calculeze numărul de simboluri numerice
din treimea de mijloc al setului de caractere date.
6. Scrieţi un program cu pointeri care afişează numărul elementelor pare şi impare dintr-un tablou.
7. Scrieţi un program cu pointeri care calculează numărul de elemente al unui tablou bidimensional
care sunt mai mici ca valoarea medie aritmetică a tuturor elementelor acestui tablou
bidimensional.
8. Scrieţi un program cu pointeri care efectuează înmulţirea cifrelor unui număr dat.
9. Scrieţi un program cu pointeri care tipăreşte toate cuvintele diferite de ultimul cuvânt dintr-un
şir. Cuvintele din şir sunt separate prin virgulă, iar.după ultimul cuvânt se pune punct..
10. Scrieţi un program cu pointeri care înlocuiesc numerele din baza 10 din consecutivitatea dată cu
cele din baza 2.
11. Scrieţi un program cu pointeri care determină un număr obişnuit din inversul cifrelor numărului
dat.
12. Scrieţi un program cu pointeri care tipăreşte toate cuvintele de lungime minimală dintr-un şir.
Cuvintele din şir sunt separate prin virgulă, iar.după ultimul cuvânt se pune punct..
13. Să se scrie programul cu pointeri care ar efectua următoarele operaţii: Se creează o listă dintr-un
şir de numere întregi, care se termină cu zero.Din listă se şterg mai întâi elementele nenule, apoi
numerele pare.
14. Scrieţi un program cu pointeri care din două tablouri bidimensionale se selectează în unul nou
mai întâi numerele divizibile la 5 şi 7, apoi numerele pozitive pare.
15. Scrieţi un program cu pointeri care determină numărul de ordine a numărului maximal dintr-o
consecutivitate de numere aleatoare. Cantitatea de numere aleatoare ale consecutivităţii este
aleatoare (N = 1,…,50). Valorile numerelor aleatoare ale consecutivităţii sunt din intervalul 0 …
1000.
16. Scrieţi un program cu pointeri care din două tablouri bidimensionale se selectează în unul nou
mai întâi numerele negative, zerourile, apoi numerele pozitive.
17. Scrieţi un program cu pointeri care atribuie unui tablou bidimensional elementele altui tablou
bidimensional în ordine inversă.
18. Scrieţi un program cu pointeri care determină dacă consecutivitatea din 50 de numere aleatoare
formează o consecutivitate crescătoare sau descrescătoare. În caz contrar se indică mesajul
«Consecutivitatea dată nu este nici crescătoare nici descrescătoare».
19. Scrieţi un program cu pointeri care din două tablou bidimensionale ordonate descrescător se
unesc în unul în care se păstrează ordinea descrescătoare de sortare.
20. . Scrieţi un program cu pointeri care sortează lexicografic cuvintele dintr-un text. Pentru fiecare
element sortat se indică numărul de repetări ale cuvântului în textul dat.
21. Scrieţi un program cu pointeri cu pointeri care calculează suma cifrelor pentru fiecare număr
din consecutivitatea de 50 de numere aleatoare.
22. Scrieţi un program cu pointeri care calculează suma înmulţirii numerelor vecine dintr-un tablou
bidimensional dat.
23. Scrieţi un program cu pointeri care va tipări în ordine inversă subconsecutivitatea de numere
dintre valoarea minimă şi maximă ale unei consecutivităţi de numere citită dintr-un tablou
bidimensional.
24. Scrieţi un program cu pointeri care formează un tablou bidimensional nou din cel dat după
următoarea legitate: elementele tabloului bidimensionalului nou se obţine din inversul cifrelor
numărului din tablou bidimensionalul dat.
25. Scrieţi un program cu pointeri care dintr-un text evidenţiază cuvintele de lungime maximală.
Cuvintele din text se separă prin blanc. După ultimul cuvânt se pune punct.
26. Scrieţi un program cu pointeri care să se tipărească toate tripletele (i,j,k) de numere naturale care
verifică condiţiile
i2 + j2 = k2 ș

1<i<j<kn
27. Scrieţi un program cu pointeri care să verifice dacă numărul n este perfect. (Un număr n
este perfect dacă este egal cu suma divizorilor lui diferiţi de n; exemplu: 6=1+2+3).
28. Scrieţi un program cu pointeri care calculează, avînd două numere întregi x şi y sunt "prietene"
dacă suma divizorilor numărului x este egală cu suma divizorilor numărului y. Să se găsească
numerele "prietene" din intervalul [a,b].
29. Scrieţi un program cu pointeri care să se calculeze şi să se tipărească primii n termeni din şirul
Fibonacci, şir definit de relaţia de recurenţă
t i + 1 = t i + t i - 1 1, i=1,2,...; având t 0 = t 1 = 1 2.
30. Scrieţi un program cu pointeri care calculează avînd funcţia lui Euler  : N  N, unde  (n)
este numărul numerelor relativ prime cu n şi mai mici ca n. Să se tipărească valorile (k),
k=1,2,...,m, pentru mN dat.
31. Scrieţi un program cu pointeri care calculează anumite numere prime şi păstrează proprietatea
de a rămâne prime pentru toate permutările cifrelor lor. Ex. 13 şi 31; 131,113 şi 311, etc.). Să se
scrie un algoritm care determină numerele prime "permutabile", mai mici decât un număr m dat.
32. Scrieţi un program cu pointeri care să stabilească cea mai mare dintre fracţiile a/b şi c/d. Fiind
date numerele a,b,c,d  Z,
33. Scrieţi un program cu pointeri care calculează, fiind date n și k .
n k 1 1

k=1
C
n
( 1 + + ...+ )
2 k
34. Scrieţi un program cu pointeri pentru determinarea numerelor impare succesive a căror sumă
este egală cu n3, pentru n=1,...,20. (Ex. 1 3 = 1 , 2 3 = 3 + 5 , 3 3 = 7 + 9 + 1 1 3, etc).
35. Scrieţi un program cu pointeri pentru: Un mobil efectuează o mişcare oscilatorie armonică. Ştiind că pentru
elongaţiile x1=2 cm şi x2=3 cm, mobilul are vitezele v1=5m/s şi respectiv v2=4m/s, să se calculeze amplitudinea şi
perioada mişcării oscilatorii a mobilului.
36. Indicaţie. Se ştie că PI=3.14 şi se ţine seama că amplitudinea, respectiv perioada mişcării oscilatorie a
mobilului sunt date de
x 12 v 22 - x 22 v 12 x 12 - x 22
A = ; T = 2 P I
v 22 - v 12 v 22 - v 12
37. Scrieţi un program cu pointeri pentru:Să se genereze toate numerele prime mai mici decât
numărul natural n dat.
38. Scrieţi un program cu pointeri care calculează: Se dă numărul natural n > 1. Să se tipărească
triunghiul lui Pascal, având în linia m toate combinările C(m,k) de m obiecte luate câte k, k=0,m,
pentru m=1,2,...,n. Se va folosi relaţia de recurenţă:
C(m,k) = C(m-1,k)+C(m-1,k-1)
39. deci elementele liniei m se calculează din elementele liniei m-1 (precedente).
40. 38 Scrieţi un program cu pointeri care calculează:Se dau n şi numerele reale x i , y i =, i=1,2,...,n.
Să se calculeze tabloul

 ( x 1 + x 2 + . . . + x i ) / i , d a c a x i < y i ,
 
z i =  0 , d a c a x i = y i ,
 m a x { | y | , . . . , | y | } , d a c

a > y ,
 i n x i i

pentru i=1,2,...,n.
41. Scrieţi un program cu pointeri care calculează s1,s2,s3 pentru numerele reale x i , y i =,
i=1,2,...,n.:
s1 = ( y 1 + y 2 + ... + y n ),
s 2 = ( y 1 * x 1 + y 2 * x 2 + . . .+ y n * x n ) / s 1 ,
s 3 = ( y 1 * x 1 * x 1 + y 2 * x 2 * x 2 + . . .+ y n * x n * x n ) / s 1 ,
42. şi m = cardinalul mulţimii { x i | 3 ( s 3 - s 2 * s 2 ) > | x i - s 2 | }

43. Scrieţi un program cu pointeri care calculează numarul maxim de divizori ai unui numar natural
de n cifre ( n<=5 sau n<=10). Se va completa programul cu afisarea celui mai mare (celui mai
mic) numar cu numar maxim de divizori.
44. .Scrieţi un program cu pointeri cu pointeri care tipăreşte în ordine crescătoare toate numerele de trei
cifre, cifrele cărora nu se repetă.
45. .Scrieţi un program cu pointeri cu pointeri care generează un tablou bidimensional a căror valori ale
elementelor sunt cuprinse între 1 şi 100. Să se determine frecvenţa cu care a fost generat fiecare element
al tablou bidimensionalului creat.
46. Scrieţi un program cu pointeri cu pointeri care determină numărul maximal şi cel minimal din
numerele unui tablou bidimensional dat. Să se determine suma numărul maximal şi cel minimal
determinate.
47. Scrieţi un program cu pointeri care prezintă numerele din consecutivitatea dată ca sumă a două numere
prime
48. Scrieţi un program cu pointeri care determină câte numere din consecutivitatea de 50 de numere
aleatoare sunt mai mari ca «vecinii» săi.
49. Scrieţi un program cu pointeri care efectuează reformatarea unui şir textual în felul următor: Lungimea
rândului de caractere în şirul nou are lungimea de 60 de caractere. Dacă în rândul dat se depistează
punctul,. restul rândului din şierul dat se scrie din rând nou.
50. Scrieţi un program cu pointeri care efectuează următoarele operaţii, dacă elementul maximal al unei
consecutivităţi de numere este 10 şi se află în prima jumătate a consecutivităţii, atunci elementele
«vecine» ale elementului maximal se înlocuiesc cu pătratul lor.
51. Scrieţi un program cu pointeri care calculează suma cifrelor pentru fiecare număr din consecutivitatea
de 50 de numere aleatoare.
52. Scrieţi un program cu pointeri care tipăreşte în ordine crescătoare toate numerele de trei cifre, care nu se
repetă.
53. Scrieţi un program cu pointeri care calculează valoarea max(c, a) –min(b,.c), unde consecutivitatea a
conţine elementul maximal din cele minimale; c, b – alte două consecutivităţi de numere reale, (c, a) şi
(b,c) sunt produse scalare ale acestor consecutivităţi
54. Scrieţi un program cu pointeri care efectuează sortarea pe coloane, schimbând cu locul liniile matrice:
după creşterea valorilor primelor elemente ale liniilor matricii;
55. Scrieţi un program cu pointeri care efectuează sortarea pe coloane, schimbând cu locul liniile matrice:
după descreşterea sumelor elementelor liniilor matricei;
56. Scrieţi un program cu pointeri care efectuează sortarea pe coloane, schimbând cu locul liniile matrice:
după descreşterea valorilor minimale ale elementelor liniilor matricei;
57. Scrieţi un program cu pointeri care efectuează sortarea pe coloane, schimbând cu locul liniile matrice:
după descreşterea valorilor maximale ale elementelor liniilor matricei.
58. Scrieţi un program cu pointeri care efectuează sortarea pe coloane, schimbând cu locul liniile matrice:
Tabela de câştiguri a loteriei este reprezentată prin tabela de obiecte câştigătoare a1, …, an şi tabela de
câştiguri în lei p1, …, pn (pi este câştigul pentru obiectul ai (i = 1, ..., n)). Să se determine suma câştigurilor
pentru biletele cu obiectele b1, …, bm.
59. Cunoscand numarul de linii si coloane, "umplem" matricea, plasand caracterele din sir pe linii de la
stanga la dreapta sau de la dreapta la stanga (functie de paritate).
60. Scrieţi un program cu pointeri care prezintă funcţia care determină x0 + x0x1 + x0x1x2 + …+
x0x1x2 … xm, unde xi - elemente tabloului real.
61. Se citesc mai multe şiruri de numere naturale pozitive, fiecare şir terminându-se cu valoarea 0, iar citirea la
întâlnirea unui şir vid (cu zero componente). Pentru fiecare şir tipăriţi cea mai lungă secvenţă de numere consecutive
înrudite. Spunem că două numere naturale sunt inrudite dacă scrierile celor două numere (în baza 10) au cel putin
două cifre distincte comune (Ex.: 13678 şi 8759 sunt înrudite, iar 123 si 65482 nu). Să se tipărească apoi toate
numerele întâlnite în secvenţele tipărite, fără a repeta un număr a doua oară (determinarea dacǎ 2 numere sunt
înrudite sau nu, determinarea celei mai lungi secvenţe dintr-un şir şi adǎugarea unui numǎr la un şir dat dacǎ nu este
deja acolo).

62. Dându-se m,nN, construiti matricea A cu m lini şi n coloane, unde A[i,j] este:
R(i,j), dacǎ i+j < min(m,n)
S(i+j), dacǎ min(m,n) <=i+j <= max(m,n)
T(i+j), dacǎ max(m,n) < i+j,
unde R(i,j) este cel mai mic multiplu comun al numerelor i şi j, S(k) este suma proimelor k numere prime, iar T(k) este
numǎrul pǎtratelor perfecte mai mici decât k. (Funcţiile R şi PRIME(p), şi construirea matricei A)
63. Se citesc mai multe matrice pătrate de ordinul n. Pentru fiecare matrice se cere să se tipărească matricea şi
valoarea determinantului asociat ei, iar la sfarsit suma tuturor matricelor şi matricea care a avut determinantul
maxim. Citirea matricelor se termină când s-a întâlnit o matrice ce are determinantul nul
64. Fie un sir de piese Domino. Fiecare piesa poate fi rotita in jurul centrului ei cu 180 grade. Sa se determine o
secventa de piese, avand lungime maxima, cu propietatea ca pentru orice piesa (mai putin ultima) din aceasta
secventa, al doilea numar inscris pe ea este egal cu primul numar inscris pe urmatoarea.
65. Se dau doua numere naturale A si B, si un vector V[1..N] de numere naturale. Sa se verifice daca se poate
"trece" din A in B, prin operatiile urmatoare: Adunarea la A a oricate numere din vectorul V. Fiecare numar poate
fi adunat de mai multe ori. Scaderea din A a oricate numere din vectorul V. Fiecare numar poate fi scazut de
mai multe ori. In caz afirmativ se cere numarul minim de operatii prin care se poate trece din A in B (A, B
<= 100; N < 100).
66. m Fie un labirint reprezentat printr-o matrice m*n, avand elemente in mul]imea {0,1} (0=camera, 1=perete).
In acest labirint un robot se poate deplasa doar pe orizontala sau vericala, la fiecare mutare putand trece intr-o
casuta vecina pe orizontala, sau verticala cu cea actuala, si in plus robotul poate sparge si pereti. Timpul
necesar deplasarii intr-o pozitie libera este 1, iar timpul necesar deplasarii intr-o pozitie ocupata de perete este 2
(robotul fiind nevoit sa sparga si peretele). Se cere sa se determine timpul minim necesar robotului pentru a se
deplasa dintr-o pozitie initiala, intr-una finala, ambele date.
67. Din propoziţia data să se elimine cuvintele situate pe poziţii pare şi să se inverseze aceste cuvinte. Să se
afişeze şirurile obtinute.

68. Să se sorteze matricea a[n][n] cu pointeri după următoarea


schemă
69. Definiţi tipurile de variabile necesare implementării a
cinci nivele de referire şi referiţi variabila pointer a ultimului nivel afisind
fiecare caz.

70. exemplificaţi definirea şi iniţializarea variabilelor spre


pointer şi respectiv pointer spre pointer spre pointer spre întreg,
afisind fiecare caz.
71. să se calculeze sumele a trei matrice de aceeaşi dimensiune, accesând elementele matricelor prin
intermediul unui vector de pointeri spre pointeri spre matrice.
72. Evaluaţi într-un program expresia **(*(*x)[i]).y[j]), afisind fiecare caz cu explicatii de vigoare.
.

S-ar putea să vă placă și