Sunteți pe pagina 1din 42

Sava Cristina- Georgiana

Grupa 411c

1/42
Capitolul 2:

1. Scrieti un program care sa va afiseze numele pe ecran, ca si seria si grupa, pe doua randuri successive.

#include <stdio.h>
#include <stdlib.h>

int main(){

printf("Nume: Sava Cristina Georgiana\nSeria: C Grupa: 411");

printf("\n");
system("PAUSE");
return 0;
}

2. Se citeste un intreg. Scrieti un program care sa afiseze: “Ati introdus numarul…”.

#include <stdio.h>
#include <stdlib.h>

int main(){

int a;

printf("Introduceti un numar intreg de la tastatura: ");


scanf("%d", &a);
printf("Ati introdus numarul %d", a);

printf("\n");
system("PAUSE");
return 0;
}

3. Scrieti un program care citeste doi intregi si calculeaza suma lor.

#include <stdio.h>
#include <stdlib.h>

int main(){

int a, b;
printf("Introduceti primul numar a = ");
scanf("%d", &a);
printf("Introduceti al doilea numar b = ");
scanf("%d", &b);
printf("Produsul dintre %d si %d este %d", a, b, a*b);

2/42
printf("\n");
system("PAUSE");
return 0;
}

4. Scrieti un program care calculeaza lungimea unui cerc de raza data; valoarea razei se va citi de la tastatura si va
fi un numar intreg.

#include <stdio.h>
#include <stdlib.h>

int main(){

float pi = 3.14;
int r;

printf("Introduceti raza cercului: ");


scanf ("%d", &r);
printf("Lungimea cercului de raza %d este %f", r, 2*pi*r);

printf("\n");
system("PAUSE");
return 0;
}

5. Scrieti un program care transforma temperature exprimata in grade Celsius in grade Fahrenheit.

#include <stdio.h>
#include <stdlib.h>

int main() {

float c=0.0, f=0.0;

printf("Introduceti temperatura in grade Celsius: ");


scanf("%f", &c);
f = 9 * c / 5 + 32;
printf("Temperatura in grade Fahrenheit este: %f", f);

printf("\n");
system("PAUSE");
return 0;
}

6. Scrieti un program care transforma masura unui unghi din radieni in grade.

#include <stdio.h>
#include <stdlib.h>

int main() {

3/42
float r=0.0, g=0.0;
const float pi=3.141593;

printf("Introduceti marimea unghiului in radiani: ");


scanf("%f", &r);
g = r * 180 / pi;
printf("Marimea unghiului in grade este: %f", g);

printf("\n");
system("PAUSE");
return 0;
}

7. Scrieti programe care calculeaza arii pentru patrat, dreptunghi, triunghi.

#include <stdio.h>
#include <stdlib.h>

int main() {

float a, b, aria=0.0;
char op;

printf("Calculul ariei:\nPentru triunghi apasati t\nPentru dreptunghi apasati d\nPentru patrat apasati p\n");
op=getche();
printf("\n");
switch(op){
default:{
printf("Ati introdus un cod incorect");
break;
}
case 't':{
printf("Introduceti inaltimea triunghiului: ");
scanf("%f", &a);
printf("Introdceti baza triunghiului: ");
scanf("%f", &b);
aria = a * b / 2;
printf("Aria triunghiului este: %f", aria);
break;
}
case 'd':{
printf("Introduceti lungimea dreptunghiului: ");
scanf("%f", &a);
printf("Introdceti latimea dreptunghiului: ");
scanf("%f", &b);
aria = a * b;
printf("Aria dreptunghiului este: %f", aria);
break;
}

4/42
case 'p':{
printf("Introduceti latimea patratului: ");
scanf("%f", &a);
aria = a * a;
printf("Aria patratului este: %f", aria);
break;
}
}

printf("\n");
system("PAUSE");
return 0;
}

8. Scrieti programe care calculeaza volume pentru cub, paralelipiped, piramida.

#include <stdio.h>
#include <stdlib.h>

int main() {

float a, b, c, vol=0.0;
char op;

printf("Calculul volumelor:\nPentru cub apasati c\nPentru parelelipiped apasati p\nPentru piramida apasati P\n");
op=getche();
printf("\n");
switch(op){
default:{
printf("Ati introdus un cod incorect");
break;
}
case 'c':{
printf("Introduceti latura cubului: ");
scanf("%f", &a);
vol = a * a * a;
printf("Volumul cubului este: %f", vol);
break;
}
case 'p':{
printf("Introduceti lungimea paralelipipedului: ");
scanf("%f", &a);
printf("Introdceti latimea paralelipipedului: ");
scanf("%f", &b);
printf("Introdceti inaltimea paralelipipedului: ");
scanf("%f", &c);
vol = a * b * c;
printf("Volumul paralelipipedului este: %f", vol);
break;
}

5/42
case 'P':{
printf("Introduceti aria bazei piramidei: ");
scanf("%f", &a);
printf("Introduceti inaltimea piramidei: ");
scanf("%f", &b);
vol= a * b / 3;
printf("Volumul piramidei este: %f", vol);
break;
}
}

printf("\n");
system("PAUSE");
return 0;
}

Capitolul 3:

1. Scrieti un program care calculeaza si afiseaza pe ecran media aritmetica a doua numere intregi citite de la
tastatura. Propuneti mai multe variante pentru a rezolva problema avand tinand cont de faptul ca media trebuie sa
fie un numar real.

#include <stdio.h>
#include <stdlib.h>

int main() {

int a, b;
float m;

printf("Introduceti a = ");
scanf("%d", &a);
printf("Introduceti b = ");
scanf("%d", &b);

m = (float) (a + b) / 2;
printf("Media aritmetica a numerelor %d si %d este %f", a, b, m);

m = 1.0 * (a + b) / 2;
printf("\nMedia aritmetica a numerelor %d si %d este %f", a, b, m);

printf("\n");
system("PAUSE");
return 0;
}

1. Scrieti un program care citeste pe n intreg si afiseaza valoarea expresiei n/(n+1) cu patru zecimale.

6/42
#include <stdio.h>
#include <stdlib.h>

int main() {

int n;
printf("Introduceti n = ");
scanf ("%d", &n);

printf("Valoare expresiei n/(n+1) este %.4f", (float) n / (n + 1));

printf("\n");
system("PAUSE");
return 0;
}

3. Deduceti ce afiseaza urmatorul program:

#include <stdio.h>
#include <stdlib.h>

int main(){
int i=3, j=5, k=10, x, z, u;
float y;

x = i * k / j + k - j + 3 * i;
printf("x = %d\n", x);
y = (2 * k) / (float)(i * j) + 7;
printf("y = %f\n", y);
i = 3, j = 5, k = 10;
z = --i * j++;
printf("z = %d\n", z);
i = 3, j = 5, k = 10;
u = i < j == j > k;
printf("u = %d", u);
printf("\n");
system("PAUSE");
return 0;
}

Raspuns:

x = 20
y = 8.333333
z = 10
u=0

4. Ce este incorect la urmatorul program?

#include <stdio.h>

7/42
#include <stdlib.h>

int main() {

int x;

(float)x = 10.22;
printf("x= %f\n");
system("PAUSE");
return 0;
}

Raspuns: Este incorecta definirea lui x de tip integer (trebuia float), si la scriere, dupa %f\n” se punea “,x”.

Capitolul 4:

1. Ce este incorect la urmatorul program ? Ce va afisa programul daca dupa compilare si executie se introduce de la
tastatura numarul -10?

#include <stdio.h>
#include <stdlib.h>

int main(){
int i;

printf("Introduceti un numar intreg: ");


scanf("%d", &i);

if(i > 0);


printf("Ati introdus un numar pozitiv!");

printf("\n");
system("PAUSE");
return 0;
}

Raspuns: Programul este incorect deoarece nu ia in calcul toate cazurile posibile. Daca se introduce o valoare
negative nu se va afisa nimic.

2. Scrieti un program care calculeaza si afiseaza radacina ecuatiei de gradul 1 cu coeficienti reali ax+b=0,
coeficientii fiind cititi de la tastatura.

#include <stdio.h>
#include <stdlib.h>

int main() {

float a, b, x=0.0;

8/42
printf("Introduceti coeficientii ecuatiei de gradul I: aX + b = 0\na = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);

if (a != 0){
x = - b /a;
printf("Ecuatia are solutia X = %f", x);
}
else{
if (b == 0)
printf("Ecuatia este nedeterminata");
else
printf("Ecuatia nu are solutii");
}

printf("\n");
system("PAUSE");
return 0;
}

3. Flosind instructiuni de decizie, scrieti un program care citeste de la tastatura un numar integ x si afiseaza o
valoare y calculata astfel:
y= -x+3, pentru x<0
3 , pentru x€[0, 4]
3x-9, pentru x>4

#include <stdio.h>
#include <stdlib.h>

int main() {

float x, y=0.0;

printf("Introduceti un numar x = ");


scanf("%f", &x);
if (x < 0 ){
y = -x + 3;
printf("Y are valoarea %f", y);
}
else{
if (x <= 4){
y = 3;
printf("Y are valoarea %f", y);
}
else{
y = 3 * x - 9;
printf("Y are valoare %f", y);
}

9/42
}

printf("\n");
system("PAUSE");
return 0;
}

4. Scrieti un program care citeste doua numere intregi de la tastatura, imparte cele doua numere si afiseaza
rezultatul. Cum numitorul trebuie sa fie diferit de 0, discutati aceasta situatie in doua moduri: folosind o decizie
if… else si respective operatorul conditional.

#include <stdio.h>
#include <stdlib.h>

int main() {

float a, b;

printf("Introduceti a = ");
scanf("%f", &a);
printf("Introduceti b = ");
scanf("%f", &b);

if (b == 0)
printf("Impartirea nu are solutie reala");
else
printf("Rezultatul impartirii lui %f la %f este %f", a, b, (float)a/b);

printf("\n");

(b == 0) ? printf("Impartirea nu are solutie reala") : printf("Rezultatul impartirii lui %f la %f este %f", a, b,


(float)a/b);

printf("\n");
system("PAUSE");
return 0;
}

5. Scrieti un program care sa calculeze si sa afiseze maximul si minimul dintre doua numere intregi citite de la
tastatura, utilizand operatorul conditional.

#include <stdio.h>
#include <stdlib.h>

int main() {

int a, b, c;

printf("Introduceti a = ");
scanf("%d", &a);

10/42
printf("Introduceti b = ");
scanf("%d", &b);
printf("Introduceti c = ");
scanf("%d", &c);

(a>b) ? ((b>c) ? printf("Maximul este %d, iar minimul este %d", a, c) : printf("Maximul este %d, iar minimul este
%d", a, b)) : ((b>c) ? ((a>c) ? printf("Maximul este %d, iar minimul este %d", b, c) : printf("Maximul este %d, iar
minimul este %d", b, a)) : ((a>b) ? printf("Maximul este %d, iar minimul este %d", c, b) : printf("Maximul este %d,
minimul este %d", c, a)));
printf("\n");
system("PAUSE");
return 0;
}

6. Scrieti un program care citeste de la tastatura un numar intreg inte 1 si 7 si aafiseaza denumirea zilei din
saptamana corespunzatoare cifrei respective: 1-luni, 2-marti… . Programul va semnaliza printr-un mesaj de eroare
daca numarul introdus nu este in intervalul solicitat.
#include <stdio.h>
#include <stdlib.h>

int main() {

int n;

printf("Introduceti un numar cuprins intre 1 si 7: ");


scanf("%d", &n);

switch(n){
default:
printf("Ati introdus un numar gresit!"); break;
case 1:
printf("Luni"); break;
case 2:
printf("Marti"); break;
case 3:
printf("Miercuri"); break;
case 4:
printf("Joi"); break;
case 5:
printf("Vineri"); break;
case 6:
printf("Sambata"); break;
case 7:
printf("Duminica"); break;
}

printf("\n");
system("PAUSE");
return 0;
}

11/42
Capitolul 5:

1. Scrieti un program care citeste de la tastatura pe n natural si afiseaza valoarea expresiei: s=1/(1+1)+1/(1+2)+….
+1/(1+n).

#include <stdio.h>
#include <stdlib.h>

int main() {

int n, i;
float s=0.0;

printf("Introduceti n = ");
scanf ("%d", &n);

for (i = 0 ; i < n; i++)


s = s + 1.0 / (2 + i);
printf("Suma este %f", s);

printf("\n");
system("PAUSE");
return 0;
}

2. Scrieti un program care citeste pe n natural si afiseaza valoarea expresiei: s=0!+1!+2!+…+n!

#include <stdio.h>
#include <stdlib.h>

int main() {
int n, i, j, k=1, s=1;

printf("Introduceti n = ");
scanf ("%d", &n);

for (i = 1; i <= n; i++) {


for (j = 1; j <= i; j++)
k = k * j;
s = s + k;
k = 1;
}

printf("Suma este %d", s);

printf("\n");
system("PAUSE");
return 0;

12/42
}

3. Scrieti un program care afiseaza numerele dinstr-un interval [a, b] ce se divid cu un numeral natural k citit de la
tastatura.

#include <stdio.h>
#include <stdlib.h>

int main() {

int a, b, k, i;

printf("Introduceti a = ");
scanf ("%d", &a);
printf("Introduceti c = ");
scanf ("%d", &b);
printf("Introduceti k = ");
scanf ("%d", &k);

for (i=a; i<=b; i++)


if ( i % k == 0)
printf("%d\t", i);

printf("\n");
system("PAUSE");
return 0;
}

4. Scrieti un program care afiseaza numerele prime mai mici decat un numar natural k citit.

#include <stdio.h>
#include <stdlib.h>

int main() {

int i, j, k, ok;

printf("Introduceti k = ");
scanf ("%d", &k);

for (i = 2; i <= k; i++){


ok = 1;
for (j = 2; j <= i/2; j++){
if (i % j == 0)
ok = 0;
}
if (ok == 1)
printf("%d\t", i);
}

13/42
printf("\n");
system("PAUSE");
return 0;
}

5. Scrieti un program care sa descompuna in factori primi un numar natural n citit.

#include <stdio.h>

int main()
{
int n,i,div,nr;
div=2;
printf("Introduceti n = ");
scanf("%d",&n);
while(n!=1)
{
if(n%div==0)
{
nr=0;
printf("\n");
printf("%d^",div);
while(n%div==0)
{
n/=div;
nr++;
}
printf("%d ",nr);
}
div++;
}
printf("\n");
system("PAUSE");
return 0;
}

6. Reluati problema 5.9 cu urmatoarea modificarea: se vor afisa numerele divizibile cu 3 dintre 1 si un nr natural n
citit.

#include <stdio.h>
#include <stdlib.h>

int main() {

int n, i, k;
char ch;

k = 1;
do {
printf("Introduceti un numar natural: ");

14/42
scanf("%d", &n);
if (n<=0){
printf("Valoare ilegala!\n");
break;
}

for (i = 1; i<=n; i++){


if (i % 3 != 0)
continue;
printf("%d ", i);
}
printf("sunt numerele divizibile cu 3 intre 1 si %d", n);
printf("\nDoriti sa reluati? (D/N): ");
ch = getche();
if(ch == 'N')
k=0;
printf("\n\n");

} while(k);

printf("\n");
system("PAUSE");
return 0;
}

Capitolul 6:

1. Scrieti un program care citeste de la tastatura un vector de maximum 50 de numere intregi si determina numarul
elementelor impare ale vectorului.

#include <stdio.h>
#include <stdlib.h>

int main() {

int v[50], i, n, k=0;

printf("Introduceti n = ");
scanf("%d", &n);
printf("Introduceti elementele vectorului\n");
for (i = 0; i<n; i++){
printf("v[%d] = ", i);
scanf ("%d", &v[i]);
}

for (i = 0; i<n; i++)


if(v[i] % 2 == 1 )
k++;

15/42
printf("Vecotrul are %d numere impare", k);

printf("\n");
system("PAUSE");
return 0;
}

2. Scrieti un program care citeste de la tastatura doi vectori de maximum 100 de elemente intregi (numarul
elementelor paote fi diferit) apoi determina si afiseaza intersectia celor doi vectori (adica elementele commune ale
lor).

#include <stdio.h>
#include <stdlib.h>

int main() {

int a[50], b[50], i, j, n1, n2;

printf("Introduceti n1 = ");
scanf("%d", &n1);
printf("Introduceti elementele vectorului\n");
for (i = 0; i<n1; i++){
printf("a[%d] = ", i);
scanf ("%d", &a[i]);
}
printf("Introduceti n2 = ");
scanf("%d", &n2);
printf("Introduceti elementele vectorului\n");
for (i = 0; i<n2; i++){
printf("b[%d] = ", i);
scanf ("%d", &b[i]);
}

printf("Elementele comune celor doi vectori sunt\n");


for (i=0; i<n1; i++)
for(j=0; j<n2; j++)
if(a[i]==b[j]){
printf("%d ", a[i]);
break;
}

printf("\n");
system("PAUSE");
return 0;
}

3. Scrieti un program care citeste de la tastatura un vector de maximum 20 de elemente intregi si interschimba
elementele de pe pozitii pare cu cele de pe pozitii impare.

#include <stdio.h>

16/42
#include <stdlib.h>

int main() {
int v[50], i, n, aux;

printf("Introduceti n = ");
scanf("%d", &n);
printf("Introduceti elementele vectorului\n");
for (i = 0; i<n; i++){
printf("v[%d] = ", i);
scanf ("%d", &v[i]);
}

for (i = 0; i<n; i=i+2){


aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
}
printf("Elementele vectorului dupa interschimbare\n");
for (i = 0; i<n; i++)
printf("%d ", v[i]);

printf("\n");
system("PAUSE");
return 0;
}

4. Scrieti un program care citeste de la tastatura un vector de maximum 30 de elemente intregi si sorteaza in
ordine crescatoare doar elementele de pe pozitiile impare.

#include <stdio.h>
#include <stdlib.h>

int main() {
int v[50], i, n, aux, j;

printf("Introduceti n = ");
scanf("%d", &n);
printf("Introduceti elementele vectorului\n");
for (i = 0; i<n; i++){
printf("v[%d] = ", i);
scanf ("%d", &v[i]);
}

for (i=1; i<n; i++)


for (j = i; j<n; j++)
if (v[j] < v[i]){
aux = v[j];
v[j] = v[i];
v[i] = aux;

17/42
}

for(i=0; i<n; i++)


printf("%d ", v[i]);

printf("\n");
system("PAUSE");
return 0;
}

5. Scrieti un program care citeste de la tastatura un vector de maximum 15 elemente intregi si insereaza un
element pe o pozitie k. Precizare: se vor citi de la tastatura vectorul impreuna cu dimensiunea sa efectiva,
elemental ce se doreste inserat precum si pozitia unde se doreste inserat elementul.

#include <stdio.h>
#include <stdlib.h>

int main() {
int v[50], i, n, k, a;

printf("Introduceti n = ");
scanf("%d", &n);
printf("Introduceti elementele vectorului\n");
for (i = 0; i<n; i++){
printf("v[%d] = ", i);
scanf ("%d", &v[i]);
}
printf("Intoduceti elementul de inserat a = ");
scanf("%d", &a);
printf("Introduceti pozitia unde sa fie inserat k = ");
scanf("%d", &k);

for (i = n; i>=k; i--)


v[i+1]=v[i];
v[k]=a;

for (i=0; i<n+1; i++)


printf("%d ", v[i]);

printf("\n");
system("PAUSE");
return 0;
}

6. Scrieti un program care citeste de la tastatura o matrice patrata de dimensiuni maxime 10x10 elemente reale,
afiseaza apoi matricea transpusa si apoi calculeaza suma elementelor matricei.

#include <stdio.h>
#include <stdlib.h>

18/42
int main() {

int v[50][50], i, j, n, aux, k=0;

printf("Introduceti n = ");
scanf("%d", &n);
printf("Introduceti elementele matricei\n");
for (i = 0; i<n; i++)
for( j= 0; j<n; j++){
printf("v[%d][%d] = ", i, j);
scanf ("%d", &v[i][j]);
}

for (i = 0; i<n; i++)


for( j= i; j<n; j++){
aux = v[i][j];
v[i][j]=v[j][i];
v[j][i] = aux;
}

for (i = 0; i<n; i++){


for( j= 0; j<n; j++)
printf("%d ", v[i][j]);
printf("\n");
}

for (i = 0; i<n; i++)


for( j= 0; j<n; j++)
k += v[i][j];

printf("Suma elementelor matricei este %d", k);


printf("\n");
system("PAUSE");
return 0;
}

7. Scrieti un program care citeste de la tastatura o matrice de dimensiuni maxime 10x10 elemente intregi apoi
determina si afiseaza elementele maxime de pe fiecare linie.

#include <stdio.h>
#include <stdlib.h>

int main() {

int v[50][50], i, j, n, aux;

printf("Introduceti n = ");
scanf("%d", &n);

19/42
printf("Introduceti elementele matricei\n");
for (i = 0; i<n; i++)
for( j= 0; j<n; j++){
printf("v[%d][%d] = ", i, j);
scanf ("%d", &v[i][j]);
}

for (i = 0; i<n; i++){


aux = v[i][0];
for (j=0; j<n;j++)
if (v[i][j]> aux)
aux = v[i][j];
printf("Maximul de pe linia %d este %d\n", i, aux);
}
printf("\n");
system("PAUSE");
return 0;
}

8. Scrieti un program care citeste o matrice patrata de dimensiuni maxime 100 x 100 elemente reale apoi
calculeaza suma elementelor de sub si de deasupra diagonalei principale.

#include <stdio.h>
#include <stdlib.h>

int main() {

int v[50][50], i, j, n, sum1=0, sum2=0;

printf("Introduceti n = ");
scanf("%d", &n);
printf("Introduceti elementele matricei\n");
for (i = 0; i<n; i++)
for( j= 0; j<n; j++){
printf("v[%d][%d] = ", i, j);
scanf ("%d", &v[i][j]);
}

for (i=0; i<n; i++){


for(j=i+1; j<n;j++)
sum1 = sum1 + v[i][j];
for(j=i-1; j>=0; j--)
sum2 = sum2 + v[i][j];
}

printf("Suma de deasupra diagonalei este %d\n", sum1);


printf("Suma de sub diagonala este %d\n", sum2);
printf("\n");
system("PAUSE");

20/42
return 0;
}

9. Scrieti un program care citeste de la tastatura doua matrice A si B ( de dimensiuni maxime 10 x 10 elemente
reale) apoi calculeaza produsul lor. Precizare: programul va semnala daca cele doua matrice nu se pot inmulti.

#include <stdio.h>
#include <stdlib.h>

int main() {
int i, j, x1, x2, y1, y2;

float v1[10][10], v2[10][10], v3[10][10];

printf("Introduceti numarul de linii si coloane pentru prima matrice: ");


scanf("%d %d",&x1,&y1);
printf("Introduceti elementele primei matrici\n");
for(i=0; i<x1; i++)
for(j=0; j<y1; j++){
printf("v1[%d][%d]= ", i, j);
scanf("%f", &v1[i][j]);
}
printf("Introduceti numarul de linii si coloane pentru a doua matrice: ");
scanf("%d %d",&x2,&y2);
printf("Introduceti elementele celei de-a doua matrice\n");
for(i=0; i<x2; i++)
for(j=0; j<y2; j++){
printf("v2[%d][%d]= ", i, j);
scanf("%f", &v2[i][j]);
}
if(x1!=y2&&y1!=x2){
printf("Cele doua matrici nu se pot inmulti");
return 1;
}

for(i=0; i<x1; i++)


for(j=0; j<y2; j++)
v3[i][j]=0;

for(i=0;i<x1;i++)
for(j=0;j<y2;j++)
v3[i][j]+= + v1[i][j]*v2[j][i];
printf("\n");
for(i=0; i<x1; i++){
for(j=0; j<y2; j++)
printf("%f ", v3[i][j]);
printf("\n");
}
printf("\n");
system("PAUSE");

21/42
return 0;
}

10. Scrieti un program care citeste de la tastatura doua siruri de caractere ( de maximum 51 de caractere fiecare)
si elimina toate caracterele continute in al doilea sir din primul sir.
Exemplu: sir1 = “abcdabcd”, sir2 = “ad” si trebuie sa rezulte “bcbc”.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int i,j,k;
char sir1[50], sir2[50], sir3[50];
char *p;
printf("Introduceti primul sir: ");
gets(sir1);
printf("Introduceti al doilea sir: ");
gets(sir2);
strcpy(sir3,sir1);
for(i=0; i<strlen(sir2); i++)
for(j=0; j<strlen(sir1); j++)
if(sir1[j]==sir2[i])
strcpy(sir1+j, sir1+j+1);

printf("Sirul %s fara sirul %s este %s", sir3, sir2, sir1);

printf("\n");
system("PAUSE");
return 0;
}

11. Scrieti un program care citeste de la tastatura doua siruri de caractere (de maximum 11 caractere fiecare) si
afiseaza pe ecran numarul de aparitii ale caracterelor din primul sir in al doilea sir.
Exemplu: sir1=”abc”, sir2=”aacde” si trebuie sa rezulte: a = 2, b = 0, c = 1;

#include <stdio.h>
#include <stdlib.h>

int main() {
char sir1[50], sir2[50], sir3[50];
int i, j, k=0;
printf("Introduceti primul sir: ");
gets(sir1);
printf("Introduceti al doilea sir: ");
gets(sir2);
i=0;
for(i=0; i<strlen(sir1); i++){
for (j=0; j<strlen(sir2); j++)
if (sir2[j] == sir1[i])
k++;

22/42
printf("%c = %d\t", sir1[i], k);
k=0;
}

printf("\n");
system("PAUSE");
return 0;
}

12. Scrieti un program care citeste de la tastatura doua siruri de caractere ( de maximum 41 de caractere fiecare)
si determina de cate ori apare secventa de caractere din al doilea sir in primul.
Exemplu: sir1=”abcdabcc”, sir2=”ab” si trebuie sa rezulte: “Sirul ab apare de 2 ori”.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {

char sir1[50], sir2[50], sir3[50];


char *p;
int k=0;
printf("Introduceti primul sir: ");
gets(sir1);
printf("Introduceti al doilea sir: ");
gets(sir2);
strcpy(sir3,sir1);
p=strstr(sir1,sir2);
while(p)
{
strcpy(p,p+strlen(sir2));
p=strstr(p,sir2);
k++;
}

printf("Sirul %s apare in sirul %s de %d ori", sir2, sir3, k);


printf("\n");
system("PAUSE");
return 0;
}

13. Scrieti un program care citeste de la tastatura doua siruri de caractere (de maximum 31 de caractere fiecare)
si transforma caracterele majuscule in minuscule si caracterele minuscule in majuscule:
Exemplu: sir=”abcdABC” si trebuie sa afiseze “ABCDabc”.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main() {

23/42
char sir1[50];
int k=0, i;
printf("Introduceti sirul: ");
gets(sir1);

for(i = 0; i< strlen(sir1); i++)


if( ('a'<=sir1[i]) && (sir1[i]<='z'))
sir1[i] = toupper(sir1[i]);
else
sir1[i] = tolower(sir1[i]);

printf("Sirul nou este %s", sir1);


printf("\n");
system("PAUSE");
return 0;
}

Capitolul 7:

1. Scrieti un program care citeste de la tastatura un vector de elemente complexe , calculeaza si afiseaza suma
complexa a tuturor elementelor sale.

#include<stdlib.h>
#include<stdio.h>
int main(){
typedef struct {
int real;
int imag;
} complex;
complex nr[100],suma;
int i,n;
suma.real=0;
suma.imag=0;
printf("Introduceti dimensiunea vectorului:");
scanf("%d",&n);
printf("Introduceti elementele vectorului:\n");
for(i=0;i<n;i++){
printf("Partea reala[%d]:",i);
scanf("%d",&nr[i].real);
printf("Partea imaginara[%d]:",i);
scanf("%d",&nr[i].imag);
suma.real+=nr[i].real;
suma.imag+=nr[i].imag;
}

printf("Suma este %d + %di.\n",suma.real,suma.imag);


system("pause");
return 0;
}

24/42
2. Scrieti un program care citeste de la tastatura un vector de elemente complexe , calculeaza si afiseaza produsul
complex al tuturor elementelor sale.

#include<stdlib.h>
#include<stdio.h>
int main(){
typedef struct {
int real;
int imag;
} complex;
complex nr[100],prod;
int i,n,a,b;
prod.real=1;
prod.imag=0;
printf("Introduceti dimensiunea vectorului:");
scanf("%d",&n);
printf("Introduceti elementele vectorului:\n");
for(i=0;i<n;i++){
printf("Partea reala:");
scanf("%d",&nr[i].real);
printf("Partea imaginara:");
scanf("%d",&nr[i].imag);
}
prod.real=nr[0].real;
prod.imag=nr[0].imag;
for(i=1;i<n;i++) {
a=prod.real;
b=prod.imag;
prod.real=a*nr[i].real-b*nr[i].imag;
prod.imag=a*nr[i].imag+b*nr[i].real;
}

printf("Produsul este %d+%di.\n",prod.real,prod.imag);


system("pause");
return 0;
}

3. Sa se modifice programul P7.3 astfel incat sa nu mai afiseze numai numarul total de secunde, ci si timpul
efectuat sub forma: ore:minute:secunde.
Exemplu: 3700 secunde reprezinta 1 ora, 1 minut si 40 de secunde adica: “1:1:40”.

#include<stdio.h>
#include<stdlib.h>
int main(){
struct timp{
int ora;
int min;
int sec;
};

25/42
struct timp start,stop;
int start_int,stop_int,h=0,m=0,s=0, tmp;
printf("Introduceti start: ");
scanf("%d:%d:%d",&start.ora,&start.min,&start.sec);
printf("Introduceti stop: ");
scanf("%d:%d:%d",&stop.ora,&stop.min,&stop.sec);
start_int=start.ora*3600+start.min*60+start.sec;

stop_int=stop.ora*3600+stop.min*60+stop.sec;
printf("Timpul in secunde: %d s\n",stop_int-start_int);
tmp= stop_int - start_int;
h = tmp / 3600;
tmp = tmp - 3600 * h;
m = tmp / 60;
tmp = tmp - 60 * m;
s = tmp;
printf("Timpul in format ora:min:sec : %d:%d:%d\n",h,m,s);
printf("\n");
system("PAUSE");
return 0;
}

4. Scrieti un program care citeste de la tastatura un vector de coordonate ale unei structuri impreuna cu masele
plasate la coordonatele respective si calculeaza centrul de greutate al structurii.
Precizari:
- fiecare coordonata impreuna cu masa asociata se va memora intr-o structura definita astfel:
typedef struct {
float x, y, masa;
} punct;
- punctele se vor memora intr-o matrice definita astfel:
punct mase[MAX]
- structura va putea fi alcatuita din cel mult 100 de puncte.

#include<stdlib.h>
#include<stdio.h>
int main(){
typedef struct {
float x,y,masa;
} punct;
punct mase[100],centru;
int n,i;
printf("Introduceti numarul de puncte: ");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Introduceti coorodonatele punctului %d: ", i);
scanf("%f %f %f",&mase[i].x,&mase[i].y,&mase[i].masa);
centru.x+=mase[i].x;
centru.y+=mase[i].y;
centru.masa+=mase[i].masa;
}

26/42
centru.x/=n;
centru.y/=n;
centru.masa/=n;
printf("Centrul de greutate: x=%f, y=%f, z=%f", centru.x,centru.y,centru.masa);

printf("\n");
system("PAUSE");
return 0;
}

5. Modificati programul P7.8 astfel incat sa memoreze numele materiilor si notele obtinute in structuri.

#include <stdio.h>
#include <stdlib.h>

int main() {
typedef enum {laborator, partial, examen} didactic;
didactic activitate;

typedef enum {fizica, biologie, chimie} materii;


materii materie;

typedef struct {
materii mat;
float nota;
}medii;
medii medie[3];
float nota, suma;
int i=0,j;
for(materie=fizica; materie<=chimie; materie++){
suma = 0.0;
for(activitate = laborator; activitate<=examen; activitate++){
scanf("%f", &nota);
suma += nota;
}
medie[i].mat=materie;
medie[i].nota=suma/3;
i++;
printf("Media = %.2f\n", suma/3);
}
for (j=0; j<i; j++){
if (medie[j].mat==fizica)
printf("Fizica\t\t");
if (medie[j].mat==biologie)
printf("Biologie\t\t");
if (medie[j].mat==chimie)
printf("Chimie\t\t");
printf("%f\n", medie[j].nota);
}

27/42
printf("\n");
system("PAUSE");
return 0;
}

6. Scrieti un program care memoreaza scorurile obtinute de cel mult 10 jucatori impreuna cu numele jucatorilor.
Informatiile se vor memora intr-o matrice construita din structuri definite astfel:
typedef struct {
char nume[20];
int scor;
} jucator;

#include<stdlib.h>
#include<stdio.h>
int main(){
typedef struct {
char nume[20];
int scor;
} jucator;
jucator a[10][2];
int i,n;
printf("Numar de jucatori: ");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Nume jucator:");
scanf("%s",a[i][1].nume);
printf("Scor jucator:");
scanf("%d",&a[i][2].scor);

}
printf("Jucatori si scoruri:\n");
for(i=0;i<n;i++){
printf("Nume:%s",a[i][1].nume);
printf("\tScor:%d\n",a[i][2].scor);
}
printf("\n");
system("pause");
return 0;
}

7. Scrieti un program care implementeaza o agenda telefonica sub forma unei structuri cu urmatoarea definitie:
typedef struct {
char nume[20];
char prenume[20];
char adresa[20];
unsigned int cod_postal; unsigned int prefix;
unsigned int numar; unsigned int mobil;
} intrare;

#include<stdlib.h>

28/42
#include<stdio.h>
int main(){
typedef struct {
char nume[20];
char prenume[20];
char adresa[20];
unsigned int cod_postal;
unsigned int prefix;
unsigned int numar;
unsigned int mobil;
} intrare;
intrare v[1000];
int i,n;
printf("Numar de contacte de introdus:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Contactul nr. %d:",i);
printf("\nNume:");
scanf("%s",v[i].nume);
printf("Prenume:");
scanf("%s",v[i].prenume);
printf("Adresa:");
scanf("%s",v[i].adresa);
printf("Cod postal:");
scanf("%d",&v[i].cod_postal);
printf("Prefix:");
scanf("%d",&v[i].prefix);
printf("Numar:");
scanf("%d",&v[i].numar);
printf("Tel. mobil:");
scanf("%d",&v[i].mobil);
}
printf("Noile contacte introduse sunt:\n");
printf("Nr.\tNume\tPrenume\tAdresa\tCod\tPrefix\tNumar\tMobil\n");
for(i=0;i<n;i++){
printf("%d",i);
printf("\t%s",v[i].nume);
printf("\t%s",v[i].prenume);
printf("\t%s",v[i].adresa);
printf("\t%d",v[i].cod_postal);
printf("\t%d",v[i].prefix);
printf("\t%d",v[i].numar);

printf("\t%d",v[i].mobil);
printf("\n");
}
printf("\n");
system("PAUSE");
return 0;
}

29/42
Capitolul 8:

1. Scrieti un program C care citeste de la tastatura un vector de maximum 10 numere intregi impreuna cu
dimensiunea sa efectiva si separa acest vector in doi vectori: primul vector va fi format din numerele pare din
vectorul initial iar cel de-al doilea va fi format din numerele impare din vectorul initial. Citirea vectorului se va face
cu ajutorul unei functii cu prototipul:

void cit_vect(int v[10], int dim);

#include <stdio.h>
#include <stdlib.h>

void cit_vect(int v[10], int dim){


int i;
for(i=0; i<dim; i++){
printf("a[%d]=",i);
scanf("%d", &v[i]);
}
}
int main() {
int k=0,j=0,i,imp[10],p[10],dim,v[10];
printf("Introduceti numarul de elemente: ");
scanf("%d", &dim);
cit_vect(v, dim);
for(i=0; i<dim; i++){
if( v[i]%2==0){
p[k]=v[i];
k++;
} else {
imp[j]=v[i];
j++;
}
}
printf("vectorul par este: ");
for(i=0; i<k; i++)
printf("%d ", p[i]);
printf("\nvectorul impar este: ");
for(i=0; i<j; i++)
printf("%d ", imp[i]);
printf("\n");
system("PAUSE");
return 0;
}

2. Reluati programul anterior, dar pentru formarea vectorilor scrieti si utilizati doua functii avand prototipurile:

int pare(int v[10], int par_v[10]);


int impare(int v[10], int impar_v[10]);

30/42
Functiile vor returna numarul valorilor pare, respectiv impare.

#include <stdio.h>
#include <stdlib.h>
int dim;
void cit_vect(int v[10], int dim){
int i;
for(i=0; i<dim; i++){
printf("a[%d]=",i);
scanf("%d", &v[i]);
}
}
int pare(int v[10], int p[10]){
int i,k=0;
for(i=0; i<dim;i++)
if(v[i]%2==0){
p[k]=v[i];
k++;
}
return k;
}
int impare(int v[10], int imp[10]){
int i,k=0;
for(i=0; i<dim;i++)
if(v[i]%2==1){
imp[k]=v[i];
k++;
}
return k;
}
int main() {
int i,imp[10],p[10],v[10];
printf("Introduceti numarul de elemente: ");
scanf("%d", &dim);
cit_vect(v, dim);
printf("Exista %d numere pare in vector si %d numere impare in vector", pare(v,p), impare(v,imp));
printf("\n");
system("PAUSE");
return 0;
}

3. Scrieti un program C care calculeaza suma complexa a elementelor dintr-un tablou unidimensional de numere
complexe.
Precizari
- tabloul de numere complexe va fi declarat utilizand urmatoarele definitii:
typedef struct {
float re;
float im;
}complex;
complex v[10];

31/42
- elementele tabloului se citesc de la tastatura, element cu element, iar pentru fiecare element, partea reala si
partea imaginara
- scrieti cate o functie care calculeaza partea reala si, respectiv partea imaginara a sumei a doua numere complexe.
Prototipurile acesor functii sunt:
float suma_re(complex a, complex b);
float suma_im(complex a, complex b);

Suma globala ceruta se va calcula folosind functiile definite anterior

#include <stdio.h>
#include <stdlib.h>
typedef struct {
float re;
float im;
}complex;
complex v[10];
float suma_re(complex a, complex b){
return a.re + b.re;
}
float suma_im(complex a, complex b){
return a.im + b.im;
}
int main() {
int n,i;
complex real, imag;
real.re=0.0;
real.im=0.0;
imag.re=0.0;
imag.im=0.0;
printf("Introduceti n: ");
scanf("%d", &n);
for (i=0; i<n; i++){
printf("v[%d].re=",i);
scanf("%f", &v[i].re);
printf("v[%d].im=",i);
scanf("%f", &v[i].im);
}
for (i=0; i<n; i++){
real.re= suma_re(real, v[i]);
imag.im= suma_im(imag, v[i]);
}
printf("Suma este %f+%fj", real.re, imag.im);
printf("\n");
system("PAUSE");
return 0;
}

32/42
4. Reluati programul anterior dar pentru calculul sumei a doua numere complexe scrieti si utilizati o functie avand
prototipul:
complex suma(complex a, complex b);

#include <stdio.h>
#include <stdlib.h>
typedef struct {
float re;
float im;
}complex;
complex v[10];

complex suma(complex a, complex b){


complex sum;
sum.re=a.re + b.re;
sum.im=a.im + b.im;
return sum;
}

int main() {
int n,i;
complex s;

s.re=0.0;
s.im=0.0;
printf("Introduceti n: ");
scanf("%d", &n);
for (i=0; i<n; i++){
printf("v[%d].re=",i);
scanf("%f", &v[i].re);
printf("v[%d].im=",i);
scanf("%f", &v[i].im);
}
for (i=0; i<n; i++)
s = suma(s, v[i]);
printf("Suma este %f+%fj", s.re, s.im);
printf("\n");
system("PAUSE");
return 0;
}

5. Scrieti un program C care citeste de la tastatura o matrice de numere reale de dimensiuni maxime 100 x 100
impreuna cu dimensiunile sale efective si afiseaza elementele maxime de pe fiecare linie si fiecare coloana.
Precizari:
- pentru determinarea maximului de pe linii / coloane se va scrie si utilize o functie cu prototipul:
float max_vec(int dim, float vec[100]);
- se vor forma, pe rand, vectori din fiecare linie si apoi din fiecare coloana

#include <stdio.h>
#include <stdlib.h>

33/42
float max_vec(int dim, float vec[100]){
int max=vec[0],i;
for(i=0; i<dim; i++)
if (vec[i]>max)
max=vec[i];
return max;
}
int main() {
int i,j, dim, v[100][100],k;
float a[100];
k=0;
printf("Introduceti dim=");
scanf("%d", &dim);
for(i=0; i<dim; i++)
for(j=0; j<dim; j++){
printf("v[%d][%d]=",i,j);
scanf("%d", &v[i][j]);
}
for(i=0; i<dim;i++){
for(j=0;j<dim;j++){
a[k]=v[i][j];
k++;
}
printf("\nMaximul de pe linia %d este %f", i, max_vec(dim, a));
k=0;
}
for(j=0; j<dim;j++){
for(i=0;i<dim;i++){
a[k]=v[i][j];
k++;
}
printf("\nMaximul de pe coloana %d este %f", j, max_vec(dim, a));
k=0;

}
printf("\n");
system("PAUSE");
return 0;
}

7. Scrieti o functie care afiseaza o intrebare si citeste raspunsul utilizatorului care poate fi doar ‘d’, pentru “da”,
sau ‘n’, pentru “nu”; citirea se repeta pana cand raspunsul este ‘d’ sau ‘n’. Scrieti un program care verifica
functionarea corecta a functiei.
Precizare: prototipul functiei este:
int ok(char s[]);

#include <stdio.h>
#include <stdlib.h>

int ok(char s[]){

34/42
if ((s=='d') || (s=='n'))
return 1;
return 0;
}
int main() {
char c;
do{ printf("Introduceti raspunsul: d pentru DA, n pentru NU: ");
gets(&c);
} while (ok(c)!=1);

printf("\n");
system("PAUSE");
return 0;
}

8. Scrieti o functie care calculeaza suma de plata pentru o activitate primind numarul de ore lucrate si salariul orar.
Daca numarul de ore lucrate este mai mic sau egal cu 40 se plateste salariul orar. Pentru orele cuprinse intre 40 si
60 salariul orar creste cu 50%. Pentru orele care depasesc 60 se plateste dublu. Scrieti si programul principal care
verifica functionarea functiei.

#include <stdio.h>
#include <stdlib.h>

int calcul(int s, int o){


if (o <= 40)
return s*o;
if ((o>40) && (o<=60))
return s*o*1.5;
if ( o > 60)
return s*o*2;
}
int main() {
int sal, ore;
printf("Introduceti salariul orar: ");
scanf("%d", &sal);
printf("Introduceti numarul de ore lucrate: ");
scanf("%d", &ore);
printf("Salariul este de %d", calcul(sal,ore));

printf("\n");

system("PAUSE");
return 0;
}

9. Scrieti o functie care cauta toate spatiile dintr-un sir de caractere si le inlocuieste cu semnul ‘-‘ returnand
numarul de spatii inlocuit. Prototipul functiei este:
int inlocuieste (char sir[]);
Scrieti si programul principal care verifica functionarea functiei.

35/42
#include <stdio.h>
#include <stdlib.h>
int inlocuieste(char sir[]){
int i,k=0;
for (i=0; i<strlen(sir); i++){
if (sir[i]==' '){
sir[i]='-';
k++;
}
}
return k;
}
int main() {
char s[100];
int i;
printf("Introduceti sirul:");
gets(s);

printf("S-au efectuat %d inlocuiri", inlocuieste(s));


printf("\n");
system("PAUSE");
return 0;
}

11. Scrieti o functie care afiseaza sirul de caractere primit ca parametru si apoi il subliniaza scriind numarul
corespunzator de caractere ‘_’ pe randul urmator. Pentru determinarea lungimii sirului de caractere se va folosi
functia standard strlen(), “string length”, care are urmatorul prototip:
int strlen(char s[]);

Scrieti si programul principal care verifica functionarea functiei.

#include <stdio.h>
#include <stdlib.h>
void subliniere(char s[]){
int i;
for (i=0; i<strlen(s);i++)
printf("-");
}
int main() {
char sir[100];
printf("Introduceti sirul\n");
gets(sir);
subliniere(sir);

printf("\n");
system("PAUSE");
return 0;}

36/42
Capitolul 9:

2. SCrieti un program care citeste trei variabile a, b, c si apoi le roteste intre ele astfel: a->b, b->c, c->a.

#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,aux1,aux2;
printf("a,b,c = ");
scanf("%d,%d,%d",&a,&b,&c);
aux1=b;
b=a;
aux2=c;
c=aux1;
a=aux2;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

system("PAUSE");
return 0;
}

5. Scrieti o functie care primeste ca argument un sir de caractere si returneaza un pointer catr primul character
care nu este spatiu din acest sir de caractere.

#include<stdio.h>
#include<stdlib.h>
char *primul_caracter( char *sir) {
char *p;
for(p=sir; *p!='\0'; p++)
if((*p!=' ')&&(*p!='\t'))
return p;
}
int main(void){
char sir[100];
int q;
printf("Sirul este: ");
scanf("%s",sir);
printf("%c\n", *primul_caracter(sir));
system("PAUSE");
return 0;
}

6. Scrieti un program care citeste un text, il desparte in cuvinte si afiseaza cuvintele textului in ordine alfabetica.

//problema 6

37/42
#include <stdio.h>
#include <iostream.h>
#include <string.h>

int main()
{
char *sir;
char *cuvant;
char **vector;
//se aloca memorie
vector=(char **)malloc(sizeof(char*)*100);

char sir2[50];
gets(sir2);
sir=sir2;

cuvant=strtok(sir," ");
int n=0;
while (cuvant!=NULL)
{
vector[n]=cuvant;
n++;
cuvant=strtok(NULL," ");
}

int i;
int j;
//ordonam cuvintele
char *aux;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (strcmp(vector[i],vector[j])>0)
{
aux=vector[i];
vector[i]=vector[j];
vector[j]=aux;
}

for (i=0;i<n;i++)
printf("%s \n",vector[i]);
system("PAUSE");
return 0;
}

8. Scrieti un program care parcurge lista definite de mai jos cu ajutorul pointerului p_lista si afiseaza numarul si
numele.

Define MAX 4
Struct lista {

38/42
Int numar;
Char nume[10];
} data [MAX]={
1. “Ion”,
2. “Vasile”,
3. “Gheorghe”,
4. “Maria”
};
Struct lista *p_lista;

#include <stdio.h>
#include <iostream.h>
#include <string.h>

#define MAX 4

int main()
{
struct lista {
int numar;
char nume[10];
}data[MAX]={ 1,"Ion",2,"Maria",3,"George",4,"Carmen"},*p_lista;

p_lista=data;

for (int i=0;i<4;i++)


{
printf(" %d %s \n",p_lista->numar,p_lista->nume);
p_lista++;
}
system("Pause");

return 0;
}

9. Scrieti un program care citeste o expresie matematica simpla formata din doi operanzi nimerici si un operator
(+, -, *, /) si determina si aafiseaza valoarea expresiei.

#include<stdlib.h>
#include<stdio.h>
void produs(int a, int b) {
int p;
p=a*b;
printf("Produsul este: %d\n", p); }

int main () {
int a,b,p;
printf("Introduceti a,b: ");

39/42
scanf("%d,%d", &a, &b);
produs(a,b);
system("PAUSE");
return 0;
}

10. Scrieti un program care citeste de la tastatura o matrice de numere reale de dimensiuni maxime 10x10,
impreuna cu dimensiunile sale effective si determina catul impartirii modulului sumei numerelor negative din matrice
la suma numeral positive din matrice. Programul va smenala cazul special al impartirii prin zero. Pentru calculul
sumelor se va folosi urmatorul prototip:
Void suma(float A[][10], int n, int m, float *pos, float *neg);

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
void suma (float mat[][10], int dim, float *pos, float *neg) {
int i,j;
for(i=0;i<dim;i++)
for(j=0;j<dim;j++)
if(mat[i][j]>=0)
*pos=*pos+mat[i][j];
else
*neg=*neg+fabs(mat[i][j]);
}
int main () {
int i,j,dim;
float c,mat[10][10],pos,neg;
printf("Introduceti dimensiunea matricei: ");
scanf("%d", &dim);
for(i=0;i<dim;i++)
for(j=0;j<dim;j++) {
printf("Introduceti mat[%d][%d]:",i,j);
scanf("%f", &mat[i][j]);
}
suma(mat,dim,0,0);
printf("%d,%d", pos,neg);
c=neg/pos;
printf("%f", c);
printf("\n");
system("PAUSE");
return 0;
}

13. Scrieti o functie care primeste ca parametru un numar intreg si returneaza un pointer catre numele lunii
calendaristice corespunzatoare. Daca numarul nu reprezinta o luna, este mai mic ca 1 sau mai mare decat 12, functia
va returna un pointer catre sirul de caractere “nici o luna”.
Prototipul functiei este: char *denumire_luna(int numar);
Scrieti si programul principal care verifica functionarea functiei.

#include <stdio.h>

40/42
#include <iostream.h>
#include <string.h>

static char *luna[] = {


"nici o luna",
"ianuarie",
"februarie",
"martie",
"aprilie",
"mai",
"iunie",
"iulie",
"august",
"septembrie",
"octombrie",
"noiembrie",
"decembrie"
};

char *denumire_luna(int numar)


{
if ((numar<1)||(numar>12))
return luna[0];
else
{
return luna[numar];
}
}

int main()
{

int numar;
printf("introduceti numarul lunii ");
scanf("%d",&numar);

printf("luna este : %s \n",denumire_luna(numar));

system("PAUSE");
return 0;
}

15. Scrieti o functie care citeste cel mult n numere reale de tip float si le plaseaza in memorie incepand de la
adresa indicate de pfloat. Functia va returna numarul valorilor citite. Prototipul functiei este:

Int citeste_n_nr(int n, float *pfloat);


Scrieti si programul principal care verifica functionarea functiei.

#include <iostream>

41/42
#include <string>

int citeste_n_nr(int numar,float *pfloat)


{
int nr=1;
printf("Pentru incheierea citirii se va scrie orice diferit de un numar \n");

//se citeste primul numar


char *sir;
sir=(char*)malloc(sizeof(char)*50);
scanf("%s",sir);
float x;
x=atof(sir);

//atat timp cat valoarea citita se poate transforma in float sau nu s-au depasit cele n valori se va citi in continuare
while ((nr<numar)&&(x!=0))
{
*pfloat=x;
pfloat++;
printf("alt numar: \n");
scanf("%s",sir);
x=atof(sir);
nr++;
}

if (x!=0)
return nr;
else
return nr-1; //s-a contorizat si caracterul diferit de numar introdus
}

int main()
{
//se citeste n
int n;
printf("introduceti n : ");
scanf("%d",&n);

//se aloca memorie


float *pfloat;
pfloat=(float *)malloc( n*sizeof(float));

//se citesc elementele


int numar_total=0;
numar_total=citeste_n_nr(n,pfloat);
printf("numar de numere introduse : %d",numar_total);

system("PAUSE");
return 0;
}

42/42

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