Sunteți pe pagina 1din 42

IANDA ANTON – MIHAI

Grupa 8107 B

Sectiunea Autovehicule Rutiere

PROBLEME PROGRAMARE
1. Programul afiseaza un mesaj simplu de salut

#include <stdio.h>

main()

{ printf ("SALUT!\n"); } /* se afiseaza mesajul SALUT! */

2. Exemplu de program simplu, in C++

#include <stdio.h>

main() /* un program simplu, functia programului */

{ /* inceputul corpului functiilor */

int num; /* se defineste variabila num de tip intreg */

num = 1; /* se initializeaza variabila num cu valoarea 1 */

printf("\nEste un simplu "); /* utilizarea functiei printf() */

printf("exemplu de program.\n");

printf("Numarul favorit este %d, deoarece ");

printf("este primul.\n", num);

} /* sfarsitul corpului functiilor */

3. Exemplificare structura program C/C++

#include<stdio.h>

main() /* functia programului */

{ int numar; /* se defineste variabila numar de tip intreg */

numar=1; /* i se atribuie variabilei numar, valoarea 1 */

printf("\nProgramul exemplifica structura unui program.\n");

printf("%d este primul numar \n",numar); /* printf ajuta la afisarea


primului numar */

}
4. Programul exemplifica utilizarea a unui sir de caractere

#include <stdio.h> /* linia 1 */

#define SIR /* asignarea unui nume simbolic */

main ( ) /* functia programului */

{ /*inceputul corpului functiei, a unei intructiuni */

char nume[50]; /* se defineste vectorul nume de tip caracter */

printf("\nProgramul exemplifica citirea/scrierea unui sir de caractere.\n");

printf("Cum te cheama ?\n"); /* print f afiseaza intrebarea : cum te cheama? */

scanf("%s", nume); /* descriptorul %s citeste o data de tip sir de caractere*/

printf("Salut, %s , %s !\n", nume, SIR);

} /* sfarsitul corpului functiei */

5. Programul exemplifica utilizarea unui sir de caractere, si a unor functii

#include <stdio.h>

#define SIR

main ( )

{ char nume[50]; /* se defineste vectorul nume de tip character */

printf("\nProgramul exemplifica citirea/scrierea unui sir de carcatere,\n"

"precum si spatiul de memorie ocupat de un sir de caractere.\n");

printf("Cum te cheama ?\n");

scanf("%s", nume);

printf("Salut, %s !. %s \n", nume, SIR);

printf("Numele are %d litere, si ocupa %d octeti.\n",

strlen(nume), sizeof nume);

printf("Propozitia \"SIR\": \"%s\"\n\tare %d litere, si ocupa %d octeti.\n",

SIR , strlen(SIR), sizeof (SIR)); }


6. Programul determina daca un numar este par sau nu

#include <stdio.h> /* fisiere-header care se gaseste într-un subdirector din


radacina directorului unde e instalat compilatorul */
main()

{ int numar, rest; /* se definesc variabilele rest si numar de tip intreg */

printf("\nProgramul determina daca un numar intreg este par sau nu.\n");

printf ("Introduceti numarul:"); /* se introduce numarul */

scanf ("%d", &numar);

rest = numar % 2; /* se verifica paritatea restului, daca este sau nu par */

if ( rest ) printf ("Este numar impar\n"); /* daca restul nu este par,


afiseaza “este numar impar” */

else /* altfel */ printf ("Este numar par\n"); }

7. Programul exemplifica utilizarea pointerilor la tipuri standard

#include <stdio.h>

main()

{ int i1, i2 ; /* se declara i1 si i2 de tip intreg */

int *p1, *p2; /* se declara p1 si p2 de tip intreg */

printf("\nProgramul exemplifica utilizarea pointerilor la tipuri de date "

"standard.\n"); i1=5;

p1 = &i1; /* pointer la i1, la valoarea intreaga 5 */

i2 = *p1/2 + 10; /* 5/2 + 10 = 12, deoarece *p1 este de tip int*/

p2 = p1; /* pointerului p2 i se atribuie aceeasi valoare cu p1 */

printf("i1 = %i, i2 = %i, *p1 = %i , *p2 = %i , dupa instructiunile: "

"p1=&i1, p2=p1.\n", i1, i2, *p1, *p2);

printf ("p1 = %p, p2 = %p, valori tiparite cu specificatorul p\n", p1, p2);

printf ("p1 = %x, p2 = %x, valori tiparite cu specificatorul x\n", p1, p2); }
8. Programul calculeaza distanta dintre doua puncte din plan-

exemplu de utilizare 'typedef'

#include<stdio.h>

#include<math.h>

main()

{ typedef struct /* typedef permite atribuirea numelui symbolic cuvantului struct */

{ double x,y; /* se definesc variabilele x si y de tip data */

} PUNCT;

PUNCT p1,p2;

double difx,dify; /* se definesc dify, dify de tip data */

printf("\nProgramul exemplifica utilizarea declaratiei \"typedef\"\n"

"si determina distanta dintre doua puncte din plan.\n");

printf("Coordonatele punctului A(x,y):\n"); /* se scriu coordonatele puntului A


*/

scanf("%lf%lf",&p1.x,&p1.y);

printf("Coordonatele punctului B(x,y):\n");

scanf("%lf%lf",&p2.x,&p2.y);

difx=p1.x-p2.x;

dify=p1.y-p2.y;

printf("Distanta dintre cele doua puncte este: %5.2lf\n",

sqrt(pow(difx,2)+pow(dify,2)));

9. Programul calculeaza varsta in luni, pentru o varsta data in ani si luni

#include <stdio.h>

main ( )

{ int ani, luni, ani_l ; /* se definesc aceste variabile */


printf("\nProgramul va determina varsta in numarul total de luni.\n");

printf ( "Cati ani aveti ( ani , luni ) ? " ) ; /* se solicita varsta in ani si luni */

scanf ("%d %d", & ani, &luni); /* citeste varsta */

ani_l =ani*12+luni; /* calculeaza varsta in luni */

printf ("Varsta in luni:%d\n",ani_l); }

10. Programul care realizeaza conversia unui numar binar -> la intreg

#include <stdio.h>

main()

char car; /* se defineste car de tip character */

int val = 0; /* i se atribuie variabilei Valoare numarul 0, variabila fiind de


tip intreaga */

printf ("\nProgramul realizeaza conversia din binar la intreg zecimal.\n");

printf ("Introduceti un numar binar:");

scanf ("%c", &car);

while (car == '0' || car == '1' )

val = val*2 + (car & 1);

scanf ("%c", &car);

printf ("Valoarea zecimala (intreaga) este: %d\n", val);

11. Programul determina daca un numar este pozitiv, negative sau zero

#include <stdio.h>

main()

{
int numar;

printf("\nSe determina daca numarul este pozitiv, negativ sau zero!\n");

printf("Introduceti un numar acum ---> ");

scanf("%d", &numar );

printf("Numarul este");

(numar < 0) ? printf("negativ\n") : ((numar > 0) ?

printf(" pozitiv\n") : printf(" zero\n"));

12. Programul citeste si tipareste numele utilizatorului

#include <stdio.h>

#include <conio.h>

#define INTREB /* "Cum te cheama ? " */

#define SALUT /* "Salut ! " */

void main ( )

{ char nume [50] ; /* se defineste vectorul nume de tip character */

printf("\nProgramul citeste si tipareste numele utilizatorului.\n");

printf (INTREB);

scanf ("%s", nume);

printf (SALUT" %s ", nume);

printf ("\nNumele tau are %d litere, dar s-au rezervat %d locatii "

"de memorie.\n", strlen (nume), sizeof nume);

printf ("Propozitia \"%s\" are %d caractere ", INTREB, strlen(INTREB));

printf ("si ocupa %d octeti de memorie\n", sizeof (INTREB));

getch();

}
13. Programul afiseaza un tablou de caractere

#include <stdio.h>

void main(void) {

char salut [] = {'S', 'a', 'l', 'u', 't', '!'};

int i;

printf("\nProgramul afiseaza un tablou de caractere:\n");

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

printf("%c", salut[i]);

printf("\n");

14.Programul afiseaza un sir de caractere cu tablou de caractere

#include <stdio.h>

void main(void) {

char salut [] = {'S', 'a', 'l', 'u', 't', '!', '\0'};

int i;

printf("\nSe afiseaza un sir de caractere, ca un tablou de caractere:\n");

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

printf("%c", salut[i]);

printf("\n");

printf("\nSe afiseaza acelasi sir de caractere, ca un sir:\n");

printf("%s!\n", salut);

}
15. Programul afiseaza intervalul intreg [k, k+1] in care se afla o valoare reala

#include <stdio.h>

main ()

float num; /* se defineste variabila num de tip real */

int limita1, limita2; /* se definesc limita1 si limita2 de tip intregi */

printf("\nProgramul afiseaza intervalul intreg [ k , k+1 ] "

"in care se afla un numar real.\n");

printf ( "Introduceti un numar real : " );

scanf ( "%f" , &num ) ;

limita1 = num ;

limita2 = (limita1 >= 0 ) ? limita1+1 : limita1 - 1;

(limita1>=0)? printf ("Numarul este in intervalul [%d , %d]\n",limita1, limita2) :

printf ("Numarul este in intervalul [%d , %d]\n", limita2, limita1);

16. Programul genereaza cel mult 100 numere Fibonacci

#include <stdio.h>

void main ( )

long int fib[50]; /* marimea vectorului intreg */

int i , n ;

fib [0] = 0 ; fib [1] = 1 ; /* initializarea primelor doua numere */

printf("\nProgramul genereaza cel mult 100 numere Fibonacci.\n");

printf ("Specificati dimensiunea sirului Fibonacci (<= 50) : ") ;

scanf ("%d", &n ) ;


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

fib [i] = fib [i-1] +fib [i-2] ;

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

printf ( " %12li / " , fib [i] ) ;

printf("\n");

17. Programul afiseaza codul numeric ASCII pentru un caracter

#include <stdio.h>

#include <conio.h>

main ( )

char car ;

clrscr();

printf("Programul afiseaza codul unei taste in zecimal, hexa si octal.\n");

printf ("Apasati o tasta:" ) ;

scanf ("%c", &car) ;/* citeste codul tastei (caracterului) */

printf ("Codul tastei (caracterului) \"%c\" este %d (zecimal), "

"%x (hexa), %o (octal)\n", car, car , car, car);

18. Programul elimina spatiile (blancurile) dintr-un sir de caractere

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main(void)
{

int i, j;

char sir[100], sir1[100];

clrscr();

printf ("Porgramul elimina spatiile dintr-o linie de text.\n");

printf ("Introduceti linia (sirul de caractere):\n");

gets (sir1);

j = 0; /* contorul de caractere pentru sirul nou, fara spatii */

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

if (sir1[i] != ' ')

sir[j] = sir1[i];

j++;

sir[j] = '\0';

printf("Sirul fara spatii:\n\"%s\"\n",sir);

19. Converteste si afiseaza in binar o valoare intreaga

#include<stdio.h>

main()

char *int_la_str_bin(int,char[]);
char strbin[1+8*sizeof(int)];

int numar;

printf ("\nSe converteste o valoare intreaga din zecimal in binar.\n");

printf ("Conversia ia sfarsit cu o valoare nenumerica.\n");

printf ("Numar = ");

while (scanf ("%d", &numar) == 1)

printf ("Valoarea binara a numarului %d este %s\nNumar = ",

numar, int_la_str_bin(numar,strbin));

char *int_la_str_bin ( int n, char *ps )

int i;

static int dim = 8*sizeof ( int );

for ( i = dim-1 ; i >= 0 ; i--, n >>= 1 )

ps[i] = ( 1&n ) + '0';

ps[dim] = '\0';

return ( ps );

20. Programul determina cel mai mare divizor comun pentru doua numere

a,b pozitive

#include<stdio.h>

void main()

{
int a, b, rest;

printf ("\nIntroduceti doua numere intregi:\n");

scanf ("%d %d", &a, &b);

while (b)

rest = a % b;

a = b;

b = rest;

printf ("Cel mai mare divizor este: %d\n", a);

21. Programul determina cel mai mare divizor comun pentru perechi

de numere intregi, introduse de la tastatura,

pana se introduce o valoare egala cu zero, utilizand o functie

#include <stdio.h>

int cmmdc (int a,int b)

int rest; /* se defineste variabila rest de tip intreg */

while ( b != 0 )

{ rest = a % b;

a = b;

b = rest; }

return ( a ); /* se returneaza variabila a */

} void main ()
{ int cmmdc (int a, int b);

int x, y;

printf("\n\nProgramul determina \"cel mai mare divizor comun\","

"pentru perechi de numere.\nProgramul ia sfarsit "

"cand unul dintre cele doua numere este 0.\n");

printf ("Introduceti doua numere (0=stop): ");

scanf ("%d%d", &x, &y);

while ( ( x*y ) != 0 )

printf ("Cel mai mare divizor comun este :%d\n", cmmdc (x,y));

printf ("Introduceti doua numere (0=stop): ");

scanf ("%d%d", &x, &y);

} }

22. Program de rezolvare a ecuatiei de gradul II

#include <stdio.h>

#include <math.h>

void main()

{ double a, b, c, delta, real, imag; /* se defines a,b,c, delta, real si imag de tip
double */

printf ("Introduceti coeficientii ecuatiei de gradul al doilea:”);

scanf ("%lf", &a);

printf ("b=");

scanf ("%lf", &b);

printf ("c=");

scanf ("%lf", &c);

if (a)
{

delta = pow (b,2) - 4*a*c;

real = -b/2/a;

imag = sqrt(fabs(delta))/2/a;

if (delta >= 0) /* daca delta este mai mare sau egal ca 0 afiseaza
urmatoarea */

printf ("X1=%5.2lf , X2=%5.2lf\n", real-imag, real+imag);

else

printf ("X1=%5.2lf-i*(%5.2lf), X2=%5.2lf+i*(%5.2lf)\n",

real, imag, real, imag);

else

if(b)

printf ("Ecuatia de grad I cu solutia X=%5.2lf\n", -c/b);

else

printf ("Ecuatie degenerata\n");

23. Media valorilor pozitive dintr-un sir de valori ce se termina cu 0

#include<stdio.h>

void main()

double val, suma = 0; /* se defineste variabila val de tip double si se atribuie


sumei valoarea 0 */

int nv =1, nvp = 0; /* se atribuie variabilelor de tip intreg , nv valoarea 1, si


nvp valoarea 0 */

printf ("\nProgramul determina media numerelor pozitive\n");


printf ("Introduceti numere (0 = sfarsit)\nNumar (1)=");

scanf ("%lf", &val);

while (val != 0)

nv++;

if (val > 0)

nvp++;

suma += val;

printf ("Numar (%d)= ", nv);

scanf ("%lf", &val);

} /* while */

if(nvp>0)

printf ("Media valorilor pozitive este %5.2f\n", suma/nvp);

else

printf ("Nu s-au introdus valori pozitive\n");

24. Calculeaza suma factorialelor pentru un n dat:

suma = -1! +2! -3! +4! -5! +6! -7! +8! - . . . . . .

folosind direct formula "suma de (-1)^k * k

#include<stdio.h>

void main()

long int sum = 0, i, k, n, fact;


printf("\nProgramul calculeaza suma: -1! +2! -3! +4! -5! +. . . +(-)n. .\n");

printf ("n="); scanf ("%li", &n);

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

fact = 1;

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

fact = fact * i;

if ( k % 2 )

fact = - fact;

sum += fact;

printf("Pentru n=%li, suma factorialelor este: %li\n", n, sum); }

25. Calculeaza suma factorialelor pentru un n dat:

suma = -1! +2! -3! +4! -5! +6! -7! +8! - . . . . . .

#include<stdio.h>

void main()

long int suma = 0, k, n, fact;

printf("\nProgramul calculeaza suma: -1! +2! -3! +4! -5! +. . . +(-)n. .\n");

printf ("n=");

scanf ("%ld", &n);

fact = 1;

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

{ fact = - fact*k;

suma += fact; }
printf("Suma factorialelor este: %li\n", suma); }

26. Tipareste un numar intreg (de maxim 9-10 cifre) in ordie inversa

#include<stdio.h>

void main()

{ long int numar, rest;

printf("\nProgramul afiseaza un numar intreg (maxim 9-10 cifre) in ordie "

"inversa.\n");

printf ("Introduceti un numar intreg:");

scanf ("%li",&numar);

printf ("Numarul scris in ordine inversa:");

do

{ rest=numar%10;

printf("%d", rest);

numar/=10;

while (numar);

printf ("\n");

27. Tipareste un numar intreg (de maxim 9-10 cifre) in ordie inversa

#include<stdio.h>

void main()

long int numar, rest;

printf("\nProgramul afiseaza un numar intreg (maxim 9-10 cifre) in ordie "

"inversa.\n");
printf ("Introduceti un numar intreg:");

scanf ("%li",&numar);

printf ("Numarul scris in ordine inversa:");

do

rest=numar%10;

printf("%d", rest);

numar/=10;

while (numar);

printf ("\n"); }

28. Programul calculeaza puterea intreaga a unui numar real, x^n,

utilizand un numar minim de inmultiri de numere reale

#include <stdio.h>

#include <math.h>

void main()

int n,ni, p=1, nr_inmult=0; /* p=cea mai mica putere a lui 2 mai mare ca n*/

int semn; /* memoreaza semnul lui n */

double x, y=1; /* y = x^n, nr_inmult = numarul de inmultiri efectuate */

printf ("\nSe calculeaza x^n, utilizand un numar minim de inmultiri.\n");

printf ("x (real) = "); scanf ("%lf", &x);

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

ni = n;

semn = n < 0;
n = abs ( n );

while ( p <= n )

p = p * 2;

do

{ p = p / 2;

y = y*y;

nr_inmult++;

if ( n >= p )

{ n = n - p;

y=y*x;

nr_inmult++;

} while ( p > 1 );

if ( semn )

y=1/y;

printf("x^n = %e, utilizand %d inmultiri .\n", y, nr_inmult);

printf("Rezultatul obtinut cu functia \"pow(x,n)\" = %f (dupa "

"%d inmultiri)\n", pow(x,ni), ni);

29. Programul calculeaza valorea unui polinom , intr-un punct x dat.

Ind.: se va utiliza pentru calculul valorii forma de inmultire prin

impachetare :

P(x) = {{{{ a(n)*x + a(n-1) }*x + a(n-2) }*x + a(n-3)}*x +..a(1)}*x+a(0)

#include <stdio.h>

#include <conio.h>
void main(void)

{ int grad, i, val, x;

int coef[10];

clrscr();

printf ("Programul calculeaza valoarea unui polinom de grad n "

"intr-un punct x dat\n\n");

printf ("Introduceti gradul polinomului:");

scanf ("%d", &grad);

for ( i = grad ; i >= 0 ; i--)

printf ("Introduceti coeficientul lui x la puterea %d:", i);

scanf ("%d", &coef[i]);

printf ("Introduceti x-ul in care se calculeaza valoarea polinomului:");

scanf ("%d", &x);

val = 0;

for ( i = grad ; i >= 0 ; i--)

val = val * x + coef[i];

printf ("Valoarea este: %d", val);

30. Se calculeaza produsul a doua matrice, daca se pot inmulti (adica

numarul de coloane de la prima este egal cu numarul de linii de la a 2-a)

#include <stdio.h>

#define DIM 10

void main()
{

double a[DIM][DIM], b[DIM][DIM], c[DIM][DIM];

double x;

int la, ca, lb, cb, i, j, k;

printf("\nSe calculeaza produsul a doua matrice, daca se pot inmulti.\n");

printf ("Dimensiunea matricei A (linii,coloane):");

scanf ("%d%d", &la, &ca);

printf ("Dimensiunea matricei B (linii,coloane):");

scanf ("%d%d", &lb, &cb);

if (ca != lb)

printf ("Nu se pot inmulti\n");

else

printf ("Matricea A:\n");

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

for ( j = 0; j < ca ;j++)

printf ("A(%d,%d)=",i+1, j+1);

scanf ("%lf", &x);

a[i][j] = x;

printf("Matricea B:\n");

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

for ( j = 0 ; j < cb ; j++)

printf ("B(%d,%d)=", i+1, j+1);


scanf ("%lf", &x);

b[i][j] = x;

printf("Matricea rezultata dupa inmultire:\n");

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

for ( j = 0 ; j < cb ; j++)

c[i][j] = 0;

for ( k = 0 ; k < ca ; k++)

c[i][j] += a[i][k] * b[k][j];

printf ("C(%d,%d)=%.2lf\n", i+1, j+1, c[i][j]);

}}}

31. Programul determina numerele prime din intervalul [2 , n]

#include <stdio.h>

#include <math.h>

void main ( )

int i, n, p, este_prim, prim [1000], index_prim;

prim [0] = 2;

prim [1] = 3;

printf ("\nSe determina numerele prime in intervalul [2 , n], n= ");

scanf ("%d", &n);

index_prim = 1;

for (p = 5 ; p <= n ; p = p + 2)

{
este_prim = 1;

for (i = 1; este_prim && i <= index_prim; i++)

este_prim = p % prim [i];

if (este_prim)

index_prim ++;

prim [ index_prim ] = p;

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

printf ( "%6i / " , prim [i]);

printf (" \n " ) ; }

32. Programul realizeaza conversia unui numar intreg intr-o alta baza

#include <stdio.h>

#include <conio.h>

#define LUNG_MAX 32

void main ()

{ int numar, baza, ind1, ind2; /* se definesc variabilele baza, indice1 si indice 2
de tip intreg */

char cifra [ LUNG_MAX ], aux; /* se definesc vectorul cifra si variabila auxiliar


de tip character */

clrscr();

printf("Programul coverteste un numar intreg intr-o alta baza (2-36).\n");

printf ("Numarul de convertit = ");

scanf ("%ld", &numar);

printf ("Conversie in baza :");


scanf ("%ld%", &baza);

if ( numar < 0 )

{ printf ("-");

numar = - numar; }

ind1 = 0 ;

do

{ ind1 ++;

if ( numar % baza < 10 )

cifra [ ind1 ] = '0' + numar % baza;

else

cifra [ ind1 ] = 'A' + numar % baza - 10;

numar /= baza;

} while ( numar > 0 );

for ( ind2 = 0 ; ind2 <= ind1/2 ; ind2 ++ )

{ aux = cifra[ind2];

cifra[ind2] = cifra[ind1-ind2];

cifra[ind1-ind2] = aux; }

cifra[ind1] = '\0';

printf ("%s", cifra);

printf("\n");

33. Programul exemplifica eroarea de rotunjire a unui rezultat real

# include <stdio.h>

main ( )

{ float a , b ; /* se definesc variabilele a si b de tip real */


printf("\nExemplifica rotunjirea rezultatului unei operatii de tip aditiv "

"cu numere reale.\n");

printf("La numarul real, de tip \"float\", 5.0e+7 se aduna, respectiv "

"scade 1 -> a, b: \n");

a = 5.0e+7 + 1.0 ;

b = 5.0e+7 - 1.0 ;

printf (" a = %f \n" , a);

printf (" b = %f \n" , b);

printf("Micsorand cu o unitate exponentul numarului scaderea/adunarea\n"

"unei unitati se va reflecta in reazultat:\n");

a = 5.0e+6 + 1.0 ;

b = 5.0e+6 - 1.0 ;

printf (" a = %f \n" , a);

printf (" b = %f \n" , b); }

34. Exemplu de utilizare de secvente (caractere) de tip 'escape'

#include <stdio.h>

main( )

float salariu ;

printf("\nExemplificarea utilizarii secventelor de tip \"escape\"\n");

printf ("\nSpecificati salariul lunar : ");

printf (" $ \b\b\b\b\b\b\b\b") ;

scanf ("%f", &salariu) ;

printf ( "\ n\t\t $%.2f pe luna=$%.2f pe an", salariu, salariu*12.0);

printf ( "\r Oho ! \n") ;


printf ( "\t\t\"\\\\\\\\\\\\\\\\\\\\\\\t\\\\\\\\\"\n" ); }

35. Se realizeaza conversia unui numar intreg intr-o baza oarecare - 2..36

#include <stdio.h>

#define LUNG_MAX 32

void main ()

char cifra[LUNG_MAX];

int numar, baza, indice;

printf ("\nNumar de convertit: "); scanf ("%d", &numar);

printf("In baza: "); scanf ("%d", &baza);

indice = 0;

printf("Numarul %d in baza \"%d\" este: ", numar, baza);

if ( numar < 0 )

{ printf("-");

numar = - numar; }

do { if ( numar % baza < 10 )

cifra[indice] = '0' + numar % baza;

else

cifra[indice] = 'A' + numar % baza - 10;

numar /= baza;

indice++;

} while(numar>0);

for ( indice-- ; indice >= 0 ; indice-- )

printf("%c", cifra[indice]);

printf("\n");
36. Program ce afiseaza (genereaza) numerele prime in intervalul [3,n];

#include<stdio.h>

void main()

long int n, i, div, este_prim, contor_np=2;

printf ("\nAfiseaza numerle prime pana la n=");

scanf ("%ld", &n);

printf ("\n%9d,%9d", 1, 2);

for( i=3 ; i <= n ; i += 2 )

div=3;

do

este_prim = i % div;

div += 2;

while(este_prim && div*div <= i);

if (este_prim)

{ printf(",%9ld", i);

contor_np++; } }

printf(".\nNumarul total de numere prime este: %ld\n", contor_np); }

37. Calculeaza pana la o limita specificata suma seriei:

1 + 1/2 + 1/3 + 1/4 + . . . 1/n > limita

programul va afisa fiecare suma si in final numarul de termeni insumati


#include <stdio.h>

#define MAX_TERMENI 1000

void main()

long int n = 0;

long double suma = 0, limita;

printf("\nProgramul calculeaza suma unei serii pana la o limita,\n\tdar nu "

"mai mult de %d termeni.\nSeria este: 1 + 1/2 + 1/3 + 1/4 + . . . "

"1/n > limita\n", MAX_TERMENI);

printf ("Specificati limita: ");

scanf ("%Lf", &limita);

do

n ++;

if (n % 100 == 0)

printf ("Pasul=%li\tSuma=%Lf\n", n, suma);

suma += (long double) 1/n;

while (suma < limita && n < MAX_TERMENI);

printf("Suma finala este : %Lf\n", suma );

printf("Numarul de termeni insumati este: %li\n", n);

38. Programul citeste un caracter si in functie de acesta se termina sau se

executa ciclic

#include <iostream.h>
void main(void)

int gata = 1;

char litera;

while (gata)

cout << endl;

cout << "Programul citeste caractere, cat timp acestea sunt: d, D, n sau N."

<< endl;

cout << "Pentru orice alt caracter tastat programul se termina si "

"afiseaza caracterul." << endl;

cout << "Tasteaza D(d) sau N(n) si apoi Enter pentru a continua: ";

cin >> litera;

if ((litera != 'D') && (litera != 'd') && (litera != 'N') && (litera != 'n'))

gata = 0;

cout << '\a'; //Sunet pentru altfel de caracter

cout << "Carcaterul tastat a fost " << litera << endl;

39. Programul citetse un sir de caractere (max. 80) si

afiseaza sirul, numai dupa primul spatiu

#include <stdio.h>
void main ( )

char s[80];

char *ptrc;

int i;

printf("\nProgramul citeste un sir de caractere, dintr-o linie de text si\n"

"afiseaza numai carterele de dupa primul spatiu.\n");

printf ("Introduceti un sir de caractere:\n");

gets(s); /* citeste un sir de caractere pana cand se tasteaza '\n' */

/* se determina primul spatiu sau sfarsit de sir */

if ( s[0] )

for ( i = 0 ; s[i] && s[i] != ' '; i++);

ptrc = &s[i+1];

printf("\nSirul de caractere de dupa primul spatiu:\n");

printf ("%s\n",ptrc); /* sau puts (ptrc), tipareste sirul de dupa primul blanc */

else

printf("Sir vid de caractere.\n");

40. Programul calculeaza suma elementelor de pe diagonala principala a

unei matrici, utilizand pentru adresarea elementelor matricii un pointer,

initializat pentru fiecare linie, cu adresa de inceput a liniei respective.

#include <stdio.h>

#include <conio.h>
void main()

{ int vect[10][10];

int suma = 0, *ptr, n, i, j;

clrscr();

printf ("Programul calculeaza suma elementelor de pe diagonala principala\n"

"utilizand pentru adresare un pointer initializat la fiecare\n");

printf("ciclu cu adresa de inceput a liniei respective\n");

printf ("Dimensiune matrice(patrata):");

scanf ("%d", &n);

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

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

printf ("vect[%d][%d]=", i+1, j+1);

scanf ("%d", &vect[i][j]);

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

{ ptr = vect[i];

suma += *(ptr+i);

printf ("Suma= %d \n", suma);

41. Programul afiseaza zilele saptamanii, dintr-un tablou de

pointeri la siruri de caractere (zilele sapamanii)

#include <stdio.h>

main()
{ int i; /* se defineste variabila I de tip intreg */

char *zile[] = {"Luni", "Marti", "Miercuri", "Joi", "Vineri",

"Sambata","Duminica"}; /* tiparim zilele saptamanii */

printf("\nProgramul afiseaza zilele saptamanii, dintr-un tablou de\n"

"pointeri la siruri de caractere (zilele saptamanii):\n");

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

printf("%-10s",zile[i]);

printf("\n");

42. Program - exemplu de alocare dinamica de memorie; se aloca dinamic

memorie pentru 40 de valori intregi, care sunt apoi initializate,

tiparite, dupa care se elibereaza memoria alocata

#include <stdio.h>

#include <stdlib.h> /* sau alloc.h */

main( )

{ int *ptr, val; /* se defines variabilele ptr si valoare de tip intreg */

ptr = (int*) malloc (40*sizeof (int) );

printf("\nProgramul aloca dinamic memorie pentru 40 de valori intregi,\n"

"care sunt apoi initializate si tiparite,\n"

"dupa care se elibereaza memoria alocata:\n");

if (!ptr) /*testam daca s-a alocat memorie */

printf ("Memorie plina! Eroare de alocare! \n");

else

{ for ( val = 0 ; val < 40 ;++val )

*(ptr + val) = val + 1;


for ( val = 0 ; val < 40 ; ++val)

printf ("%4d", *(ptr + val) );

free ( ptr);

printf("\n\n"); } }

43. Programul copiaza un sir de la sursa la destinatie, utilizand pentru copiere


pointeri

#include <stdio.h>

void main ( )

{ char sir_sursa []= {"Acesta este sirul de copiat"};

char sir_dest[50];

char *de_la , *catre ;

printf("\nProgramul copiaza un sir de la sursa la destinatie,\n"

"utilizand un pointer. Sirul de copiat este:\n");

printf("\"%s\"\n",sir_sursa);

de_la = sir_sursa;

catre = sir_dest;

while ( *de_la ) /* sau for (;*de_la!='\0';++de_la,++catre) */

* catre ++ = *de_la++; /* *catre = +de_la; */

* catre = '\0'; /* *catre ='\0'; */

printf ("Sirul destinatie (copiat) este : \"%s\"\n", sir_dest);

44. Programul insumeaza elementele unui vector utilizand un pointer

pentru a referi elementele vectorului

#include <stdio.h>

void main ( )
{

int valori [10] = { 3,7, -9, 5, 18, 35, -11, 100, -225, 77 };

int sum = 0 , * ptr ;

printf("\nProgramul insumeaza elementele unui vector utilizand un pointer\n"

"pentru a referi elementele vectorului.\n");

int * ptr_sfarsit = valori + 10 ;

printf("Valorile componentelor vectorului sunt:\n");

for ( ptr = valori ; ptr < ptr_sfarsit ; ++ ptr )

printf("%5d",*ptr);

sum += *ptr ;

printf ("\nSuma valorilor este: %i.\n" , sum ) ;

45. Exemplu utilizare functi in C

#include <iostream.h>

void citeste_valori(int sir[], int numar_de_elemente) /* aceasta functie citeste un sir


de "numar_de_elemente" valori de tip intreg */

{ int i;

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

{ cout << "Introduceti valoarea " << i+1 << ": ";

cin >> sir[i];

}}

void main(void)

{ int numar[3];

cout << "Programul citeste 3 valori de tip intreg pe care le afiseaza" <<
endl;

citeste_valori(numar, 3); /* se citeste un vector de 3 valori intregi */

cout << "Valorile sirului sunt:" << endl;

for (int i = 0; i < 3; i++) /* dupa care se tiparesc */

cout << "val(" << i+1 << ")=" << numar[i] << endl; }

46. Programul realizeaza suma elementelor unui tablou, utilizand

o functie de parametru formal tablou

# include <stdio.h>

# define size 100

double suma(double [], int);

main()

double tablou[size], suma_elemente, elem;

int nr_elem, i;

printf("\nProgramul calculeaza suma elementelor unei matrici, utilizand "

"o functie,\ncare refera elementele tabloului.\n");

printf ("Numarul de elemente din vector:");

scanf ("%d", &nr_elem);

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

printf ("numar(%d)=", i+1);

scanf ("%lf", &elem);

tablou[i] = elem;

suma_elemente = suma(tablou, nr_elem);


printf ("Suma elementelor vectorului este: %lf\n", suma_elemente);

double suma ( double tab[], int n )

int i;

double suma = 0;

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

suma += tab[i];

return suma;

47. Programul realizeaza suma elementelor din tablou utilizand

o functie cu parametru formal pointer la tablou

#include <stdio.h>

#define size 100

double suma (double *ptrtab, int n);

main()

double tablou[size], suma_elemente, elem;

int nr_elem, i;

printf("\nProgramul calculeaza suma elementelor unei matrici, utilizand "

"o functie,\ncare refera elementele cu un pointer.\n");

printf ("Numarul de elemente din vector:");

scanf ("%d", &nr_elem);

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

{
printf ("Numar(%d)=", i+1);

scanf ("%lf", &elem);

tablou[i] = elem;

suma_elemente = suma (tablou, nr_elem);

printf ("Suma elementelor vectorului:%lf\n", suma_elemente);

double suma ( double *ptab, int n)

int i;

double sum = 0;

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

sum += *(ptab + i);

return sum;

48. Programul exemplifica operatori la nivel de bit; se utilizeaza

o functie pentru inversarea ultimilor biti dintr-un numar

#include <stdio.h>

#include <conio.h>

int inver_ultim (int numar , int n )

int masca = 0;

int val_bit = 1;

while (n -- > 0 )

{
masca |= val_bit;

val_bit <<= 1;

return ( numar ^ masca );

void main ( void )

int numar, nr_bit;

printf("\nProgramul exemplifica utilizarea operatorilor la nivel de bit.\n");

printf ("Numarul caruia i se vor inversea ultimii 'n' biti este:");

scanf ("%d", &numar );

printf("Numarul de biti de inversat (n) : ");

scanf("%d", &nr_bit);

printf("Numarul cu ultimii %d biti inversati este: %d\n", nr_bit,

inver_ultim (numar, nr_bit ) );

getch();

49. Program ce citeste un numar (si cu parte fractionara) intr-o baza

oarecare, cuprinsa intre 2 si 10 facandu-i apoi conversia in zecimal

#include <stdio.h>

void main()

{ const char blanc = ' ', punct = '.', plus = '+', minus = '-';

char semn, car;

double valoare;

int p_subunitar, baza;


printf ("\nBaza=");

scanf ("%d", &baza); while ( getchar() != '\n' );

printf ("\nIntroduceti numarul\n");

car = blanc;

while (car == blanc)

scanf("%c", &car);

semn = '+';

if (car == plus || car == minus)

{ semn = car;

scanf ("%c", &car); };

valoare = 0;

while(car >= '0' && car < ('0'+baza))

{ valoare = valoare*baza + car - '0';

scanf("%c", &car); }

if (car == punct)

{ p_subunitar = 0;

scanf("%c", &car);

while(car >= '0' && car < ('0'+baza))

{ valoare = valoare*baza + car - '0';

scanf("%c", &car);

p_subunitar++;

while (p_subunitar > 0)

valoare /= baza;

p_subunitar--; }
}

if (semn == minus)

valoare = -valoare;

printf("Valoarea zecimala este:%f\n", valoare);

50. Programul inverseaza tipul de caractere dintr-un text: de la litera mare la


litera mica si invers

#include <stdio.h>

#include <string.h>

#include <ctype.h>

#define LIMITA 30

#define DIMENS 81

main()

void transforma ( char linie[] );

char text [LIMITA] [DIMENS];

int nr_linie =0 , i;

printf("\nProgramul inverseaza tipul de litere dintr-un text.\n");

printf ("Introduceti cel mult %d linii pentru transformare.\n", LIMITA);

printf ("Introducerea se termina cu ENTER, pe o linie noua.\n");

while ( nr_linie < LIMITA && gets(text[nr_linie]) != NULL &&

strcmp ( text[nr_linie], "") !=0 )

nr_linie ++;

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

transforma ( text[i] );
puts ( text[i] );

void transforma ( char *ptr_car )

while ( *ptr_car != '\0' )

if ( isupper ( *ptr_car ) )

*ptr_car = tolower ( *ptr_car );

else if ( islower ( *ptr_car ) )

*ptr_car = toupper ( *ptr_car );

ptr_car++;

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