Sunteți pe pagina 1din 32

/* Sa se scrie un

program pentru
actualizarea fisierului
binar creat in
programul
FISBIN.CPP pe baza
unei foi de restituire,
continand:
nume
depunator
suma solicitat
Programul !a afisa
mesa"ele:

solicitant ine#istent

suma solicitata
depaseste soldul
Sa se afiseze
continutul fisierului.
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void main()
{
clrscr();
struct {
char nume[30;
struct {
int
!i"luna"an;
# data;
long int suma;
# au$"citite[%0;
&'() *d+;
long int suma;
int n;
char nume[30;
char cont,-.-;
//deschidere +isier
i+
((d+,+open(0pers.dat0"0r
1b0)),,0){
print+(0nu se poate
deschide +isierul pers.dat
2n0);
e$it(3);
#
//actuali!are +isier
4hile
(toupper(cont),,-.-)
{
print+(0+oaie de
restituire 2n0);

print+(0numele 5
0);scan+(06s0"nume);
print+(0suma 5
0);scan+(06ld0"7suma);
+see8(d+"si!eo+(int)"0);
au$.suma,93.0;
4hile (:+eo+(d+) 77
strcmp(au$.nume"nume)
:,0)
+read(7au$"si!eo+(au$)"
3"d+);
i+(:+eo+(d+))
i+
(suma>au$.suma)

print+(0;uma
este prea mare 2n0);
else
{

au$.suma9
,suma;

+see8(d+"+tell(d+)9
si!eo+(au$)"0);

+4rite(7au$"si!eo+(au$)"
3"d+);
#
else
print+(0solicitant
ine$istent2n0);
+lushall();
print+(0.oriti sa
continuati < <./=>0);
scan+(06c0"7cont);
#
+see8(d+"0"0);

+read(7n"si!eo+(int)"3"d+
);

+read(7citite"si!eo+(au$)
"n"d+);
//a+isam continutul
+isierului
+or (int i,0;i<n;i11)
print+(02n 6s 2t
6d/6d/6d 2t
6ld2n0"citite[i.nume"citi
te[i.data.!i"
citite[i.data.luna"citite[i
.data.an"citite[i.suma);
+close(d+);
getch();
#
//programul
transforma un numar
natural din baza $% in
baza &
#include <stdio.h>
#include <conio.h>
long int n;
int 8;
void trans+(long int n"int
8)
{
long int rest,n
68;
i+(n>,8)
trans+(n/8"8);
print+(06ld0"rest);
#
void main(void)
{
clrscr();

print+(0n,0);scan+(06ld0
"7n);
print+(0ba!a
,0);scan+(06d0"78);
print+(02n6ld scris in
ba!a 6d , 0"n"8);
trans+(n"8);
print+(02n0);
getch();
#
/* Se citesc n si p
numere naturale,
n'(p. Se cere sa se
genereze
toate aran"amentele
de n luate cate p
sti!a are inaltimea
p
fiecare ni!el ia
!alori intre $ si n

elementele de pe
ni!eluri diferite sunt
distincte
*/
#include <stdio.h>
#include <conio.h>
int st[30"n"8"p;
void 'nit()
{
st[8,0;
#
int >m?;uccesor()
{
i+(st[8<n)
{
st[811;
return 3;
#
else return 0;
#
int @alid()
{
+or(int i,3;i<8;i11)

i+(st[i,,st[8)
return 0;
return 3;
#
int ;olutie()
{ return 8,,p;#
void Aipar()
{
+or(int i,3;i<,p;i11)
print+(06d 0"st[i);
print+(02n0);
#
void bac8()
{
int >s;
8,3;
'nit();
4hile (8>0)
{ do {
# 4hile
((>s,>m?;uccesor())
77 :@alid());
i+ (>s)
i+ (;olutie())
Aipar();
else {

811;
'nit();
#
else 899;
#
#
void main()
{
clrscr();
print+(0n,0);
scan+(06d0"7n);
print+(0p,0);
scan+(06d0"7p);
bac8();
getch();
#
/* Se citesc n si p
numere naturale,
n'(p. Se cere sa se
genereze
toate submultimile
cu p elemente ale
multimii )$,*,...,n+
,generarea
combinarilor-
sti!a are inaltimea
p
elementele aflate pe
ni!eluri diferite ale
sti!ei sunt distincte
pentru
a e!ita repetitia,
elementele se aseaza in
ordine crescatoare:
pe ni!elul & se !a
afla o !aloare ' decat
pe ni!elul &$ si
.( cu np/&
*/
#include <stdio.h>
#include <conio.h>
int st[30"n"8"p;
void 'nit()
{
i+ (8>3) st[8,st[893;
else st[8,0;
#
int >m?;uccesor()
{
i+(st[8<n9p18)
{
st[811;
return 3;
#
else return 0;
#
int @alid()
{
return 3;
#
int ;olutie()
{ return 8,,p;#
void Aipar()
{
+or(int i,3;i<,p;i11)
print+(06d 0"st[i);
print+(02n0);
#
void bac8()
{
int >s;
8,3;
'nit();
4hile (8>0)
{ do {
# 4hile
((>s,>m?;uccesor())
77 :@alid());
i+ (>s)
i+ (;olutie())
Aipar();
else {

811;
'nit();
#
else 899;
#
#
void main()
{
clrscr();
print+(0n,0);
scan+(06d0"7n);
print+(0p,0);
scan+(06d0"7p);
bac8();
getch();
#
/* Problema celor n
dame.
Fiind
data o tabla de sa0
n#n, se cer toate
solutiile de aran"are
a n
dame, a.i. sa nu se
atace reciproc
,sa nu se
afle pe aceeasi linie,
coloana sau diagonala-
deoarece pe fiecare
linie se afla o singura
dama, solutia o
reprezentam
sub forma unui !ector
cu n componente
fiecare ni!el ia
!alori intre $ si n
st1i2(&
semnifica faptul ca pe
linia i dama ocupa
pozitia &
* dame
se afla pe aceeasi linie
sau coloana daca
st1i2(st1&2
* dame se afla pe
aceiasi diagonala, daca
este indeplinita
conditia
3st1i2st1"23(3i"3
,diferenta in modul
dintre linii si coloane
este aceeasi-
*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
int st[30"n"8;
void 'nit()
{
st[8,0;
#
int >m?;uccesor()
{
i+(st[8<n)
{
st[811;
return 3;
#
else return 0;
#
int @alid()
{
+or(int i,3;i<8;i11)

i+(st[i,,st[8 BB
abs(st[89st[i),,abs(89
i)) return 0;
return 3;
#
int ;olutie()
{ return 8,,n;#
void Aipar()
{
+or(int i,3;i<,n;i11)
print+(06d 0"st[i);
print+(02n0);
#
void bac8()
{
int >s;
8,3;
'nit();
4hile (8>0)
{ do {
# 4hile
((>s,>m?;uccesor())
77 :@alid());
i+ (>s)
i+ (;olutie())
Aipar();
else {

811;
'nit();
#
else 899;
#
#
void main()
{
clrscr();
print+(0n,0);
scan+(06d0"7n);
bac8();
getch();
#
/* Problema colorarii
unei 0arti.
Fiind data o 0arta
cu n tari, se cer toate
solutiile de colorare
a 0artii, utilizand
cel mult 4 culori, a.i. *
tari cu frontiera
comuna
sa fie colorate
diferit
5arta este furnizata
programului cu
a"utorul unei matrici
6,n,n-
definita astfel:
61i,"2($, daca tara
i are frontiera comuna
cu tara " si
61i,"2(%, in caz
contrar
7atricea 6 este
simetrica
sti!a are inaltimea
n si pe fiecare ni!el ia
!alori intre $ si 4
fiecare ni!el &
simbolizeaza tara &
st1&2
semnifica culoarea
tarii &
*/
#include <stdio.h>
#include <conio.h>
int st[30"a[30
[30"n"8"nr;
void 'nit()
{
st[8,0;
#
int >m?;uccesor()
{
i+(st[8<n)
{
st[811;
return 3;
#
else return 0;
#
int @alid()
{
+or(int i,3;i<,893;i11)

i+(st[i,,st[8
77 a[i[8,,3) return 0;
return 3;
#
int ;olutie()
{ return 8,,n;#
void Aipar()
{
+or(int i,3;i<,n;i11)
print+(0tara 6d are
culoarea 6d 2n0"i"st[i);
nr11;
#
void bac8()
{
int >s;
8,3;
'nit();
4hile (8>0)
{ do {
# 4hile
((>s,>m?;uccesor())
77 :@alid());
i+ (>s)
i+ (;olutie())
Aipar();
else {

811;
'nit();
#
else 899;
#
#
void main()
{
clrscr();
print+(0nr tari,0);
scan+(06d0"7n);
nr,0;
// matricea >
repre!entand tarile cu
vecinii se va completa
// tinand cont ca este
simetrica
+or (int i,3;i<,n;i11)
+or (int C,3;C<,i9
3;C11)
{ print+(0a[6d"
6d,0"i"C);

scan+(06d0"7a[i[C);
a[C[i,a[i[C;
#
bac8();
print+(0nr. solutiilor,
6d0"nr);
getch();
#
/* Se citeste n numar natural.
Se cere sa se genereze
toate permutarile multimii
)$,*,...,n+
sti!a are inaltimea n
fiecare ni!el ia !alori intre
$ si n
elementele de
pe ni!eluri diferite sunt
distincte
*/
#include <stdio.h>
#include <conio.h>
int st[30"n"8;
void 'nit()
{
st[8,0;
#
int >m?;uccesor()
{
i+(st[8<n)
{
st[811;
return 3;
#
else return 0;
#
int @alid()
{
+or(int i,3;i<8;i11)
i+(st[i,,st[8)
return 0;
return 3;
#
int ;olutie()
{ return 8,,n;#
void Aipar()
{
+or(int i,3;i<,n;i11) print+(06d
0"st[i);
print+(02n0);
#
void bac8()
{
int >s;
8,3;
'nit();
4hile (8>0)
{ do {
#
4hile ((>s,>m?;uccesor()) 77
:@alid());
i+ (>s)
i+ (;olutie()) Aipar();
else {
811;
'nit();
#
else 899;
#
#
void main()
{
clrscr();
print+(0n,0);
scan+(06d0"7n);
bac8();
getch();
#
#include <stdio.h>
#include <conio.h>
void main(void)
{
int v[%0"n"i"8;
clrscr();
print+(0n,0); scan+(06d0"7n);
print+(0introduceti elementele
vectorului2n0);
+or (i,3;i<,n;i11)
{
print+(0v[6d,0"i);
scan+(06d0"7v[i);
#
print+(0nr cautat in sir ,0);
scan+(06d0"78);
i,3;
4hile (i<,n 77 v[i:,8) i11;
i+ (i<,n) print+(0=umarul cautat
se a+la in sir0);
else print+(0=umarul cautat
nu se a+la in sir0);
getch();
#
#include <stdio.h>
#include <conio.h>
void main(void)
{
int v[%0"n"i"8;
clrscr();
print+(0n,0); scan+(06d0"7n);
print+(0introduceti elementele
vectorului2n0);
+or (i,3;i<,n;i11)
{
print+(0v[6d,0"i);
scan+(06d0"7v[i);
#
print+(0nr cautat in sir ,0);
scan+(06d0"78);
i,3;
4hile (i<,n 77 v[i:,8) i11;
i+ (i<,n) print+(0=umarul cautat
se a+la in sir0);
else print+(0=umarul cautat
nu se a+la in sir0);
getch();
#
#include <stdio.h>
#include <conio.h>
int v[%0;
int n"i"8"gata"gasit"ind"au$;
void sortv()
{
do
{ ind,0;
+or(i,3;i<,n93;i11)
{i+ (v[i>v[i13) {
au$,v[i;
v[i,v[i13;
v[i13,au$;
ind,3;
#
#
# 4hile (ind:,0);
#
void a+isare()
{
+or(i,3;i<,n;i11)
print+(0v[6d,6d 0"i"v[i);
print+(02n0);
#
void main(void)
{
clrscr();
print+(0n,0); scan+(06d0"7n);
print+(0introduceti elementele
vectorului2n0);
+or (i,3;i<,n;i11)
{
print+(0v[6d,0"i);
scan+(06d0"7v[i);
#
sortv();
print+(0vectorul sortat 2n0);
a+isare();
print+(0nr cautat in sir ,0);
scan+(06d0"78);
gata,0;
gasit,0;
i,3;
4hile (i<,n 77 :gata)
{
i+ (v[i,,8) {
gata,3;
gasit,3;
#
else i+ (v[i>8) gata,3;
else i11;
#
i+ (i>n BB :gasit) print+(0=umarul
cautat nu se a+la in sir0);
else print+(0=umarul cautat se
a+la in sir0);
getch();
#
#include <stdio.h>
#include <conio.h>
int v[%0;
int n"i"8"gata"gasit"ind"au$;
void sortv()
{
do
{ ind,0;
+or(i,3;i<,n93;i11)
{i+ (v[i>v[i13) {
au$,v[i;
v[i,v[i13;
v[i13,au$;
ind,3;
#
#
# 4hile (ind:,0);
#
void a+isare()
{
+or(i,3;i<,n;i11)
print+(0v[6d,6d 0"i"v[i);
print+(02n0);
#
void main(void)
{
clrscr();
print+(0n,0); scan+(06d0"7n);
print+(0introduceti elementele
vectorului2n0);
+or (i,3;i<,n;i11)
{
print+(0v[6d,0"i);
scan+(06d0"7v[i);
#
sortv();
print+(0vectorul sortat 2n0);
a+isare();
print+(0nr cautat in sir ,0);
scan+(06d0"78);
gata,0;
gasit,0;
i,3;
4hile (i<,n 77 :gata)
{
i+ (v[i,,8) {
gata,3;
gasit,3;
#
else i+ (v[i>8) gata,3;
else i11;
#
i+ (i>n BB :gasit) print+(0=umarul
cautat nu se a+la in sir0);
else print+(0=umarul cautat se
a+la in sir0);
getch();
#
#include <stdio.h>
#include <conio.h>
int v[%0;
int n"8;
void citire()
{
int i;
print+(0elementele sirului in
ordine crescatoare2n0);

print+(0v[3,0);scan+(06d0"7v[3
);
+or(i,%;i<,n;i11)
do
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
# 4hile (v[i<,v[i93);
#
void a+isare()
{
int i;
+or(i,3;i<,n;i11)
print+(0v[6d,6d 0"i"v[i);
print+(02n0);
#
void cautare()
{
int miC"in+"sup"ind;
in+,3;sup,n;
ind,0;
do
{
miC,(in+1sup)/%;
i+ (v[miC,,8) ind,3;
else i+ (v[miC<8)
in+,miC13;

else sup,miC93;
#4hile(in+<,sup 77 ind,,0);
i+ (ind,,3) print+(0elementul
este pe po!itia 6d2n0"miC);
else
print+(0elementul nu este in sir0);
#
void main(void)
{
clrscr();
do
{
print+(0n,0); scan+(06d0"7n);
#4hile(n<3BBn>%0);
citire();
print+(0vectorul introdus 2n0);
a+isare();
print+(0nr cautat in sir ,0);
scan+(06d0"78);
cautare();
getch();
#
#include <stdio.h>
#include <conio.h>
int v[%0;
int n"8;
void citire()
{
int i;
print+(0elementele sirului in
ordine crescatoare2n0);

print+(0v[3,0);scan+(06d0"7v[3
);
+or(i,%;i<,n;i11)
do
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
# 4hile (v[i<,v[i93);
#
void a+isare()
{
int i;
+or(i,3;i<,n;i11)
print+(0v[6d,6d 0"i"v[i);
print+(02n0);
#
void cautare()
{
int miC"in+"sup"ind;
in+,3;sup,n;
ind,0;
do
{
miC,(in+1sup)/%;
i+ (v[miC,,8) ind,3;
else i+ (v[miC<8)
in+,miC13;

else sup,miC93;
#4hile(in+<,sup 77 ind,,0);
i+ (ind,,3) print+(0elementul
este pe po!itia 6d2n0"miC);
else
print+(0elementul nu este in sir0);
#
void main(void)
{
clrscr();
do
{
print+(0n,0); scan+(06d0"7n);
#4hile(n<3BBn>%0);
citire();
print+(0vectorul introdus 2n0);
a+isare();
print+(0nr cautat in sir ,0);
scan+(06d0"78);
cautare();
getch();
#
#include <stdio.h>
#include <conio.h>
int v[%0;
int n"8"c;
void citire()
{
int i;
print+(0elementele sirului in
ordine crescatoare2n0);

print+(0v[3,0);scan+(06d0"7v[3
);
+or(i,%;i<,n;i11)
do
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
# 4hile (v[i<,v[i93);
#
void a+isare()
{
int i;
+or(i,3;i<,n;i11)
print+(0v[6d,6d 0"i"v[i);
print+(02n0);
#
int cautare(int 8"int in+" int sup)
{
int miC;
i+ (in+<,sup)
{
miC,(in+1sup)/%;
i+ (v[miC,,8) return miC;
else i+ (v[miC>8)
cautare(8"in+"miC93);

else cautare(8"miC13"sup);
#
else return 0;
#
void main(void)
{
clrscr();
do
{
print+(0n,0); scan+(06d0"7n);
#4hile(n<3BBn>%0);
citire();
print+(0vectorul introdus 2n0);
a+isare();
print+(0nr cautat in sir ,0);
scan+(06d0"78);
c,cautare(8"3"n);
i+ (c,,0) print+(0elementul nu
este in sir2n0);
else
print+(0elementul cautat este pe
po!itia 6d2n0"c);
getch();
#
#include <stdio.h>
#include <conio.h>
int v[%0;
int n"8"c;
void citire()
{
int i;
print+(0elementele sirului in
ordine crescatoare2n0);

print+(0v[3,0);scan+(06d0"7v[3
);
+or(i,%;i<,n;i11)
do
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
# 4hile (v[i<,v[i93);
#
void a+isare()
{
int i;
+or(i,3;i<,n;i11)
print+(0v[6d,6d 0"i"v[i);
print+(02n0);
#
int cautare(int 8"int in+" int sup)
{
int miC;
i+ (in+<,sup)
{
miC,(in+1sup)/%;
i+ (v[miC,,8) return miC;
else i+ (v[miC>8)
cautare(8"in+"miC93);

else cautare(8"miC13"sup);
#
else return 0;
#
void main(void)
{
clrscr();
do
{
print+(0n,0); scan+(06d0"7n);
#4hile(n<3BBn>%0);
citire();
print+(0vectorul introdus 2n0);
a+isare();
print+(0nr cautat in sir ,0);
scan+(06d0"78);
c,cautare(8"3"n);
i+ (c,,0) print+(0elementul nu
este in sir2n0);
else
print+(0elementul cautat este pe
po!itia 6d2n0"c);
getch();
#
#include <stdio.h>
#include <conio.h>
/*int a"b;
int cmmdc(int a"int b)
{
i+(a,,b) return a;
else
i+ (a>b)
return cmmdc(a9b"b);

else return cmmdc(a"b9a);
#
void main(void)
{
clrscr();
print+(0a,0);scan+(06d0"7a);
print+(0b,0);scan+(06d0"7b);
print+(0c.m.m.d.c (6d"6d),
6d2n0"a"b"cmmdc(a"b));
getch();
*/
void main()
{
int a"b"$"y;
print+(0a,0);scan+(06d0"7a);
print+(0b,0);scan+(06d0"7b);
$,a;y,b;
4hile($:,y)
i+ ($>y) $,$9y;
else y,y9$;
print+(0c.m.m.d.c (6d"6d),
6d2n0"a"b"$);
getch();
#
/* Sortarea prin interclasare
folosind metoda 8I9I8: ;
I7P:<6
Se considera un !ector a de
dimensiune n. Sa se sorteze
crescator
!ectorul prin metoda
interclasarii/
9ectorul dat se imparte in *
!ectori, care odata sortati se
interclaseaza.
Se !or utiliza = functii:
o functie sort care !a sorta
un !ector de ma#im * elemente
o functie intercl care
interclaseaza rezultatele
o functie di!imp care
implementeaza strategia
te0nicii 8;I
*/
#include <stdio.h>
#include <conio.h>
int a[30"n;
void sort(int p" int D" int a[30)
{
int au$;
i+ (a[p>a[D)
{ au$,a[p;
a[p,a[D;
a[D,au$;
#
#
void intercl(int p" int D" int m" int
a[30)
{ int b[30"i"C"8;
i,p;C,m13"8,3;
4hile (i<,m 77 C<,D)
i+(a[i<,a[C)
{b[8,a[i;
i11;
811;
#
else
{ b[8,a[C;
C11;
811;
#
i+ (i<,m)

+or(C,i;C<,m;C11)
{
b[8,a[C;
811;
#
else

+or(i,C;i<,D;i11)
{
b[8,a[i;
811;
#
8,3;
+or(i,p;i<,D;i11)

{ a[i,b[8;
811;
#
#
void divimp(int p" int D" int
a[30)
{
int m;
i+ ((D9p)<,3) sort(p"D"a);
else
{ m,(p1D)/%;
divimp(p"m"a);
divimp(m13"D"a);
intercl(p"D"m"a);
#
#
void main(void)
{
clrscr();
int i;
print+(0nr elemente pentru a
,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0a[6d,0"i);scan+(06d0"7
a[i);
#
divimp(3"n"a);
+or(i,3;i<,n;i11)
print+(06d2t0"a[i);
print+(02n0);
getch();
#
/* Sortarea rapida folosind
metoda 8I9I8: ; I7P:<6
Se considera un !ector a de
dimensiune n. Sa se sorteze
crescator
!ectorul
Pentru rezol!are este
necesara o functie poz , care
trateaza o portiune
din !ectorul dat cuprinsa
intre indicii li ,limita
inferioara- si ls
,limita superioara-. <olul
acestei functii este de a
pozitiona elementul
a1li2 pe o pozitie & cuprinsa
intre li si ls, a.i. toate
componentele
!ectorului cuprinse intre li si
&a sa fie mai mici sau egale cu
a1&2
si toate componentele
cuprinse intre &/$ si ls sa fie
mai mari sau egale
cu a1&2.
In aceasta functie se !or
utiliza * moduri de lucru:
modul a- i ramane constant si
" scade cu $
modul b- i creste cu $ si "
ramane constant
Functia contine urmatoarele
etape:
i(li, "(ls
se trece la modul de lucru
a-
atata timp cat ,i."- e#ecuta
daca a1i2'a1"2 atunci se
in!erseaza cele * elemente si
se sc0imba modul de lucru
i si " se modifica
corespunzator modului de
lucru curent
& ia !aloarea comuna lui i
si "
Se mai utilizeaza si functia
>uic& care implementeaza
strategia
te0nicii 8;I
obs. :lementul care initial a
fost pe pozitia li si a a"uns pe &,
!a ramane pe acea pozitie in
cadrul !ectorului sortat ,esenta
alg.??-
*/
#include <stdio.h>
#include <conio.h>
int a[300"n"8;
void po!(int li" int ls" int 78" int
a[300)
{
int i"C"au$"i3"C3;
i,li;C,ls;i3,0;C3,93;
4hile (i<C)
{
i+ (a[i>a[C)
{ au$,a[C;
a[C,a[i;
a[i,au$;
//se setea!a i3" C3 pentru
schimbarea modului de lucru
au$,i3;
i3,9C3;
C3,9au$;
#
i,i1i3;
C,C1C3;
#
8,i;
#
void Duic8(int li" int ls)
{
i+ (li<ls)
{ po!(li"ls"8"a);
Duic8(li"893);
Duic8(813"ls);
#
#
void main(void)
{
clrscr();
int i;
print+(0nr elemente pentru a
,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0a[6d,0"i);scan+(06d0"7
a[i);
#
Duic8(3"n);
+or(i,3;i<,n;i11)
print+(06d2t0"a[i);
print+(02n0);
getch();
#
#include <stdio.h>
#include <conio.h>
int n;
long int +act(int n)
{
i+(n<0) return 0;
else i+ (n,,3 BB n,,0)
return 3;
else return
+act(n93)*n;
#
void main(void)
{
clrscr();
print+(0n,0);scan+(06d0"7n);
print+(06d:,6ld2n0"n"+act(n));
getch();
/*
void main()
{
int n"i;
long +;
+,3;
print+(0n,0);scan+(06d0"7n);
i+ (n<0) print+(0nr
negativ2n0);
else i+ (n,,0 BB n,,3)
print+(0+act,32n0);
else
{
+or(i,%;i<,n;i11)
+,+*i;
print+(06d:,6ld2n0"n"+);
#
getch();
*/
#
/* Sa se scrie un program
pentru actualizarea fisierului
binar creat in
programul FISBIN.CPP pe
baza unei foi de restituire,
continand:
nume depunator
suma solicitat
Programul !a afisa mesa"ele:

solicitant ine#istent
suma
solicitata depaseste soldul
Sa se afiseze continutul
fisierului.
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void main()
{
clrscr();
struct {
char nume[30;
struct {
int !i"luna"an;
# data;
long int suma;
# au$"citite[%0;
&'() *d+;
long int suma;
int n;
char nume[30;
char cont,-.-;
//deschidere +isier
i+
((d+,+open(0pers.dat0"0r1b0)),,0
){
print+(0nu se poate deschide
+isierul pers.dat 2n0);
e$it(3);
#
//actuali!are +isier
4hile (toupper(cont),,-.-)
{
print+(0+oaie de
restituire 2n0);
print+(0numele 5
0);scan+(06s0"nume);
print+(0suma 5
0);scan+(06ld0"7suma);
+see8(d+"si!eo+(int)"0);
au$.suma,93.0;
4hile (:+eo+(d+) 77
strcmp(au$.nume"nume):,0)
+read(7au$"si!eo+(au$)"3"d+);
i+(:+eo+(d+))
i+ (suma>au$.suma)
print+(0;uma este
prea mare 2n0);
else
{
au$.suma9,suma;
+see8(d+"+tell(d+)9
si!eo+(au$)"0);

+4rite(7au$"si!eo+(au$)"3"d+);
#
else print+(0solicitant
ine$istent2n0);
+lushall();
print+(0.oriti sa continuati <
<./=>0);
scan+(06c0"7cont);
#
+see8(d+"0"0);
+read(7n"si!eo+(int)"3"d+);
+read(7citite"si!eo+(au$)"n"d+);
//a+isam continutul +isierului
+or (int i,0;i<n;i11)
print+(02n 6s 2t 6d/6d/
6d 2t
6ld2n0"citite[i.nume"citite[i.dat
a.!i"
citite[i.data.luna"citite[i.data.an"
citite[i.suma);
+close(d+);
getch();
#
#include <stdio.h>
#include <conio.h>
int n;
int +ib(int n)
{
i+(n<0) return 0;
else i+ (n,,3 BB n,,0)
return 3;
else return
+ib(n93)1+ib(n9%);
#
void main(void)
{
clrscr();
print+(0n,0);scan+(06d0"7n);
print+(0+(6d),6ld2n0"n"+ib(n));
getch();
/*void main()
{
int n"i"+0"+3"+%;
+0,3;
+3,3;
print+(0n,0);scan+(06d0"7n);
i+ (n<0) print+(0nr
negativ2n0);
else i+ (n,,0 BB n,,3)
print+(0val,30);
else
{
+or(i,%;i<,n;i11)
{+%,+01+3;
+0,+3;
+3,+%;
#
print+(0+(6d),6d2n0"n"+%);
#
getch();
*/
#
/* Sa se scrie unprogram
pentru crearea unui fisier
binar, a!and articole
structuri cu
urmatoarele campuri:
nume
depunator sir de ma#im =%
caractere
data depunerii zi,luna,an
suma depusa o !aloare
intreaga
6rticolele sunt grupate pe
zile in ordine cronologica.
Sa se afiseze continutul
fisierului.
@bs. 8atele se !or introduce
intrun !ector, care se !a sorta,
dupa care
articolele
!or fi scrise intrun fisier, al
carui continut !a fi afisat
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
clrscr();
struct {
char nume[30;
struct {
int !i"luna"an;
# data;
long int suma;
# a[%0"au$"citite[%0;
&'() *d+;
int n"ind;
print+(0citire date intrare2n0);
print+(0'ntroduceti nr de
articole2n0);
scan+(06d0"7n);
+or (int i,0;i<n;i11)
{
print+(0numele 5
0);scan+(06s0"7a[i.nume);
print+(0data EE/((/>>>> 5
0);scan+(06d6d
6d0"7a[i.data.!i"

7a[i.data.luna"7a[i.data.an);
print+(0suma 5
0);scan+(06ld0"7a[i.suma);
#
// sortare
do
{
ind,0;
+or(i,0;i<n93;i11)
i+
((a[i.data.an>a[i13.data.an) BB

(a[i.data.an,,a[i13.data.an 77
a[i.data.luna>a[i13.data.luna)BB

(a[i.data.an,,a[i13.data.an 77
a[i.data.luna,,a[i13.data.luna
77
a[i.data.!i>a[i13.data.!i))
{
au$,a[i;
a[i,a[i13;
a[i13,au$;
ind,3;
#
#4hile (ind);
//deschidere +isier pentru creare
i+
((d+,+open(0pers.dat0"04b0)),,0
){
print+(0nu se poate deschide
+isierul pers.dat 2n0);
e$it(3);
#
//scriem in +isier
+4rite(7n"si!eo+(int)"3"d+);
+4rite(7a"si!eo+(au$)"n"d+);
+close(d+);
//deschidere +isier pentru citire
i+
((d+,+open(0pers.dat0"0rb0)),,0)
{
print+(0nu se poate deschide
+isierul pers.dat 2n0);
e$it(3);
#
//a+isam continutul +isierului
+read(7n"si!eo+(int)"3"d+);
+read(7citite"si!eo+(au$)"n"d+);
+or (i,0;i<n;i11)
print+(02n 6s 2t 6d/6d/
6d 2t
6ld2n0"a[i.nume"a[i.data.!i"a[i.
data.luna"

a[i.data.an"a[i.suma);
+close(d+);
getch();
#
/* Sa se scrie un program
pentru crearea unui fisier
binar, a!and articole
structuri cu
urmatoarele campuri:
nume
depunator sir de ma#im =%
caractere
data depunerii zi,luna,an
suma depusa o !aloare
intreaga
6rticolele sunt grupate pe
zile in ordine cronologica.
Sa se afiseze continutul
fisierului.
@bs. 8atele se !or introduce
intrun !ector, care se !a sorta,
dupa care
articolele
!or fi scrise intrun fisier, al
carui continut !a fi afisat
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
clrscr();
struct {
char nume[30;
struct {
int !i"luna"an;
# data;
long int suma;
# a[%0"au$"citite[%0;
&'() *d+;
int n"ind;
print+(0citire date intrare2n0);
print+(0'ntroduceti nr de
articole2n0);
scan+(06d0"7n);
+or (int i,0;i<n;i11)
{
print+(0numele 5
0);scan+(06s0"7a[i.nume);
print+(0data EE/((/>>>> 5
0);scan+(06d6d
6d0"7a[i.data.!i"

7a[i.data.luna"7a[i.data.an);
print+(0suma 5
0);scan+(06ld0"7a[i.suma);
#
// sortare
do
{
ind,0;
+or(i,0;i<n93;i11)
i+
((a[i.data.an>a[i13.data.an) BB

(a[i.data.an,,a[i13.data.an 77
a[i.data.luna>a[i13.data.luna)BB

(a[i.data.an,,a[i13.data.an 77
a[i.data.luna,,a[i13.data.luna
77
a[i.data.!i>a[i13.data.!i))
{
au$,a[i;
a[i,a[i13;
a[i13,au$;
ind,3;
#
#4hile (ind);
//deschidere +isier pentru creare
i+
((d+,+open(0pers.dat0"04b0)),,0
){
print+(0nu se poate deschide
+isierul pers.dat 2n0);
e$it(3);
#
//scriem in +isier
+4rite(7n"si!eo+(int)"3"d+);
+4rite(7a"si!eo+(au$)"n"d+);
+close(d+);
//deschidere +isier pentru citire
i+
((d+,+open(0pers.dat0"0rb0)),,0)
{
print+(0nu se poate deschide
+isierul pers.dat 2n0);
e$it(3);
#
//a+isam continutul +isierului
+read(7n"si!eo+(int)"3"d+);
+read(7citite"si!eo+(au$)"n"d+);
+or (i,0;i<n;i11)
print+(02n 6s 2t 6d/6d/
6d 2t
6ld2n0"a[i.nume"a[i.data.!i"a[i.
data.luna"

a[i.data.an"a[i.suma);
+close(d+);
getch();
#
/* Numararea cu!intelor dintr
un fisier te#t */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
&'() *+; //
declararea descriptorului de +isier
int numar(char *s)
{
int i"nr,0;
+or(i,0;i<strlen(s);i11) i+
(s[i,,- -) nr11;
nr11;
return(nr);
#
int parcurgere(&'() *+)
{
char linie[300;
int nr,0;;
4hile (:+eo+(+))
{
+gets(linie"303"+);
i+ (:+eo+(+))
{
puts(linie);
nr1,numar(linie);
#
#
return(nr);
#
void main()
{

i+((+,+open(0c522te$t.t$t0"0rt0)),,
0)
{
print+(0&isierul nu poate
+i deschis in citire :0);
e$it(%);
#
print+(0=umarul de cuvinte din
+isier5 6d0"parcurgere(+));
+close(+);
getchar(); getchar();
#
/* Sa se afiseze linia de lungime
ma#ima si numarul de linii
dintrun fisier te#t
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
&'() *d+;
char
linie[%FG"liniema$[%FG;
int lma$,0"nrlinii,0;
d+,+open(0te$t.t$t0"0r0);
4hile(:+eo+(d+))
{
+gets(linie"%FG"d+);
nrlinii11;
i+ (lma$<strlen(linie))
{
lma$,strlen(linie);
strcpy(liniema$"linie);
#
#
+close(d+);
print+(0+isierul are 6d
linii0"nrlinii);
print+(02n ultima linie de
lungime ma$ima este5
6s2n0"liniema$);
getch();
#
/* a- se construieste un fisier cu
date reprezentate in format
e#tern
in care pe fiecare linie se afla
trei !alori intregi, generate
aleator
b- se parcurge fisierul creat
anterior si se determina pentru
fiecare linie
media aritmetica a !alorilor
Structura programului:
functie pentru crearea
fisierului
functie pentru parcurgerea
fisierului
functie principala:
desc0idere/inc0idere fisier
*/
#include <stdio.h>
#include <stdlib.h>
&'() *+; //
declararea descriptorului de +isier
void construire(&'() *+)
{
int a"b"c"i"n;
n,rand()
63013; // generarea numarului
de linii din +isier
+or(i,0;i<n;i11)
{
a,rand()
6F0; b,rand()6F0; c,rand()
6F0;
+print+(+"06d 6d
6d 2n0"a"b"c);
#
#
void parcurgere(&'() *+)
{
int a"b"c;
4hile (:+eo+(+))
{
+scan+(+"06d 6d 6d0"7a"
7b" 7c);
i+ (:+eo+(+))
print+(02n 6+0"(a1b1c)/3.0);
#
#
void main()
{//srand();

i+((+,+open(0c522borlandc22e$emp
lu3.t$t0"04t0)),,0)
{
print+(0&isierul nu poate
+i creat :0);
e$it(3);
#
construire(+);
+close(+);

i+((+,+open(0c522borlandc22e$emp
lu3.t$t0"0rt0)),,0)
{
print+(0&isierul nu poate
+i deschis in citire :0);
e$it(%);
#
parcurgere(+);
+close(+);
getchar();
getchar();
#
/* Sa se numere cate cifre
contine un fisier te#t
*/
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
&'() *d+;
char c;
int n,0;
d+,+open(0te$t.t$t0"0r0);
4hile(:+eo+(d+))
{
c,+getc(d+);
i+ (c>,-0- 77 c<,-H-) n11;
#
+close(d+);
print+(0in +isier sunt 6d
ci+re0"n);
getch();
#
/* Aratarea fis. la ni!el
superior
Prelucrarea fisierelor binare
*/
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <ctype.h>
#de+ine I>J 30
typede+ struct
{
char nu[I>J;
char nr[3%;
char adr[I>J;
# articol;
articol !a;
char =ume+is[30;
char =umenou[30;
void creare (void);
void adaug?s+(void);
void modi+icare(void);
void stergere(void);
void listare(void);
void redenumire(void);
void main()
{ char op;
clrscr();

strcpy(=ume+is"0K522abonati.t$t0)
;

strcpy(=umenou"0K522abonati3.t$
t0);
do
{
clrscr();
print+(02n LM)N>A''
>;OMN> >PL=>A'(LN2n0);
print+(0K Kreare +isier2n0);
print+(0> >daugarea unui
abonat la s+arsit2n0);
print+(0I Iodi+icare
abonat2n0);
print+(0; ;tergere articol2n0);
print+(0( >+isare abonati2n0);
print+(0) Aerminare
program2n2n2n0);
print+(0 'ntroduceti
optiunea50);
scan+(06c0"7op);op,toupper(op
);
s4itch (op)
{
case -K-5creare();brea8;
case ->-5adaug?s+();brea8;
case -I-5modi+icare();brea8;
case -;-5stergere();brea8;
case -(-5listare();brea8;
case -)-5print+(0Aerminare
program2n0);brea8;
de+ault 5print+(0Lptiune
gresita:2n0);brea8;
#/* s4itch */
print+(0Aastati )=A)N:0);
++lush(stdin);
getch();
#
4hile (op :, -)-);
#/* main */
void creare (void)
{
&'() *p+;
int i"nr;
char c,-.-;
clrscr();
/* se deschide +is in scriere */
p+,+open(=ume+is"04b0);
i+ (p+,,=O(()
{
print+(0=u se poate crea
+isierul2n0);
e$it(3);
#;
do
{
print+(02n 'ntroduceti numele
si prenumele50);
++lush(stdin);gets(!a.nu);
print+(02n 'ntroduceti
adresa50);++lush(stdin);
gets(!a.adr);
print+(02n 'ntroduceti nr. de
tele+on50);++lush(stdin);
gets(!a.nr);
+4rite(7!a"si!eo+(!a)"3"p+);
print+(0Iai
adaugati(./=)50);++lush(stdin);c,
getche();c,toupper(c);
# 4hile(c,,-.-);
+close(p+);
#/* creare */
void adaug?s+(void)
{
&'() *p+;
int i"n;
clrscr();
/* se deschide +is pentru
adaugare */
i+
((p+,+open(=ume+is"0a0)),,0)
{
print+(0=u se poate deschide
+isierul2n0);
e$it(3);
#
print+(02n 'ntroduceti numele
si
prenumele50);++lush(stdin);gets(!
a.nu);
print+(02n 'ntroduceti
adresa50);++lush(stdin);
gets(!a.adr);
print+(02n 'ntroduceti nr. de
tele+on50);++lush(stdin);
gets(!a.nr);
+4rite(7!a"si!eo+(!a)"3"p+);
+close(p+);
#/* adaug?s+ */
void modi+icare(void)
{
&'() *p+;
int i"sant,0;
long n"m;
char numedat[30;
char nume[30;
char adresa[30;
char tele+on[3%;
clrscr();
/* se deschide +is pentru citire
*/
p+,+open(=ume+is"0r10);
i+ (p+,,0)
{
print+(0=u se poate modi+ica
+isierul2n0);
e$it(3);
#
print+(02n=umele de
modi+icat,
0);++lush(stdin);gets(numedat);
4hile(:+eo+(p+))
{
n,+tell(p+); /* n contine
po!itia curenta a pointerului de
+isier */
i,+read(7!a"si!eo+(!a)"3"p+);
/* pointerul de +isier indica
acum art. urmator" celui citit. */
i+(i:,0)
{

i+(strcmp(!a.nu"numedat),,0)
{
/* >cum pointerul de
+isier , n1si!eo+(!a) octeti */
print+(02n >rticolul de
modi+icat50);
print+(02n numele si
prenumele5 6s0"!a.nu);
print+(02n adresa5
6s0"!a.adr);
print+(02n nr. de tele+on5
6s2n0"!a.nr);
print+(02n=oul nume,
0);++lush(stdin);gets(nume);
print+(02n=oua adresa,
0);++lush(stdin);gets(adresa);
print+(02n=oul tele+on,
0);++lush(stdin);gets(tele+on);
strcpy(!a.nu"nume);
strcpy(!a.nr"tele+on);
strcpy(!a.adr"adresa);
/* n contine po!itia in +isier a
articolului de modi+icat */
/* repun pointerul de
+isier pe po!itia unde +ac
modi+icarea"
indicata de n */
+see8(p+"n"0);

+4rite(7!a"si!eo+(articol)"3"p+);
/* >cum pointerul de
+isier , n1si!eo+(!a) octeti */
sant,3;
#
#
#/* 4hile */
i+ (sant,,0)
print+(02n2n =u am gasit
articolul in +isier2n2n0);
+close(p+);
#/* modi+icare */
void stergere(void)
{
&'() *p+;
&'() *p+3;
int i"n"sant;
char numedat[30;
clrscr();
sant,0;
/* se deschide +is p+ pt. citire */
i+
((p+,+open(=ume+is"0rb0)),,0)
{
print+(0=u se poate desch. +is
din care sterg 2n0);
e$it(3);
#
/* se deschide +is p+3 pt. scriere
binara */
i+
((p+3,+open(=umenou"04b0)),,
0)
{
print+(0=u se poate creea
+isierul nou2n0);
e$it(3);
#
print+(0Kheia art. de sters
(numele pers.),
0);++lush(stdin);gets(numedat);
4hile(:+eo+(p+))
{
i,+read(7!a"si!eo+(!a)"3"p+);
i+(i:,0)
{

i+(strcmp(!a.nu"numedat),,0)
{
print+(02n >m sters
articolul50);
print+(02n numele si
prenumele5 6s0"!a.nu);
print+(02n adresa5
6s0"!a.adr);
print+(02n nr. de tele+on5
6s2n0"!a.nr);
sant,3;
#
else
+4rite(7!a"si!eo+(!a)"3"p+3);
#
#/* 4hile */
i+ (sant,,0)
print+(02n2n =u am gasit
articolul in +isier2n2n0);
+close(p+);
+close(p+3);
redenumire();
#
void listare(void)
{
&'() *p+;
int i"n;
clrscr();
p+,+open(=ume+is"0rb0);
i+(p+,,0)
{
print+(02n nu pot deschide
+is2n0);
e$it(3);
#
print+(02n >bonatii tele+onici
sunt52n0);
4hile(:+eo+(p+))
{
i,+read(7!a"si!eo+(!a)"3"p+);
i+(i:,0)
{
print+(02n numele si
prenumele5 6s0"!a.nu);
print+(02n adresa5
6s0"!a.adr);
print+(02n nr. de tele+on5
6s2n0"!a.nr);
#
# ;
+close(p+);
#
void redenumire(void)
{
char =umenou[Q0;
char =ume+is[Q0;
unlin8(=ume+is);

strcpy(=umenou"0K522abonati3.t$
t0);

strcpy(=ume+is"0K522abonati.t$t0)
;
i+ (remove(=ume+is) ,, 0)
print+(0Nemoved
6s.2n0"=ume+is);
else
perror(0remove0);
i+ (rename(=umenou"
=ume+is) ,, 0)
print+(0Nenamed 6s to
6s.2n0" =umenou" =ume+is);
else
perror(0rename0);
#
/* ,a- Construirea unui fisier
cu note
,b- parcurgerea si
completarea mediei
,c- cautarea unei inregistrari
dupa nume
*/
#include <stdio.h>
#include <stdlib.h> // pt. e$it
#include <string.h>
/* de+inirea tipului pentru
componenta */
typede+ struct
{
char nume[30;
int nota3"nota%;
+loat media;
# componenta;
&'() *+;
int $;
char nume3[30;
/* construirea +isierului */
void construire(&'() *+)
{
componenta c;
char raspuns;
int n,3;
do
{
print+(0'ntroduceti
datele pentru studentul 6d 2n0"
n);
scan+(06s0"c.nume);
scan+(06d0"7c.nota3);
scan+(06d0"7c.nota%);
++lush(stdin); // golirea
!onei tampon corespun!atoare
dispo!itivului de intrare
+4rite(7c"si!eo+(c)"3"+);
// scrierea unei componente
print+(0Kontinuati <
[d/n0); raspuns,getchar();
n11;
# 4hile(raspuns,,-d-);
#
// a+isarea continutului +isierului
void parcurgere(&'() *+)
{
componenta c;
unsigned re!;
4hile (:+eo+(+)) // cat
timp nu s9a aCuns la s+arsit de
+isier
{
re!,+read(7c"si!eo+(c)"3"+); // se
retine re!ultatul returnat de +read
i+ (re!,,3) print+(02n 6s
6d 6d 6+0"
c.nume"c.nota3"c.nota%"c.media);
#
print+(02n0);
#
// modi+icarea componentelor
+isierului
void modi+icare(&'() *+)
{
componenta c;
unsigned re!,3;
int n,0;
4hile (:+eo+(+))
{
//print+(0Ne+erinta inainte de
citire5 6ld dim comp,
6d0"+tell(+)"si!eo+(c));

re!,+read(7c"si!eo+(c)"3"+);
//print+(0Ne+erinta dupa citire5
6ld re!ultat citire
6d0"+tell(+)"re!); getchar();
i+ (re!,,3)
{
c.media,(c.nota31c.nota%)/%.0;

+see8(+"n*si!eo+(c)";))R?;)A);
// repo!itionare pe componenta
ce se modi+ica
// print+(0Ne+erinta dupa
repo!itionare5 6ld0"+tell(+));

re!,+4rite(7c"si!eo+(c)"3"+);
// print+(0Ne+erinta dupa
scriere5 6ld re!ultat scriere ,
6d0"+tell(+)"re!); getchar();
n11;

+see8(+"n*si!eo+(c)";))R?;)A);
// po!itionare pe urmatoarea
componenta
#
#
#
// cautarea unei componente
+loat cautare(&'() *+" char
*nume)
{
componenta c;
int re!;
4hile (:+eo+(+))
{
re!,+read(7c"si!eo+(c)"3"+);
i+ (re!,,3)
i+(:strcmp(c.nume"nume))
return(c.media);
#
return(93);
#
void main()
{

i+((+,+open(0e$emplu3.dat0"04b0
)),,0)
{
print+(0&isierul nu poate
+i creat :0);
e$it(3);
#
construire(+);
+close(+);

i+((+,+open(0e$emplu3.dat0"0rb0)
),,0)
{
print+(0&isierul nu poate
+i deschis in citire :0);
e$it(%);
#
parcurgere(+);
+close(+);

i+((+,+open(0e$emplu3.dat0"0r1b
0)),,0)
{
print+(0&isierul nu poate
+i deschis in modi+icare :0);
e$it(%);
#
modi+icare(+);
// +close(+);
// ++lush(+); // +unctionea!a
corect si +ara
re4ind(+);
// +see8(+"0";))R?;)A);
//
i+((+,+open(0e$emplu3.dat0"0rb0)
),,0){print+(0&isierul nu poate +i
deschis in citire :0); e$it(%);#
parcurgere(+);
re4ind(+);

print+(0nume,0);scan+(06s0"num
e3);
$,cautare(+"nume3);
i+ ($,,93) print+(0nu s9a
gasit2n0);
else print+(0s9a gasit2n0);
// print+(0Ne! cautare5
6+0"cautare(+"0popa0));
+close(+);
getchar(); getchar();
#
/* Sa se creeze un fisier te#t
introducand linie cu linie pana
la
introducerea lui .CA<B/C' si
sa se afiseze continutul
fisierului
*/
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
&'() *d+;
char
linie[%0"*)nter,02n0;
print+(0citire date
intrare2n0);
d+,+open(0te$t.t$t0"040);
4hile(gets(linie):,=O(()
{
+puts(linie"d+);
+puts()nter"d+);
#
+close(d+);
print+(0>+isare +isier 2n0);
d+,+open(0te$t.t$t0"0r0);
4hile(:+eo+(d+))
{
+gets(linie"%0"d+);
print+(06s0"linie);
#
+close(d+);
getch();
#
/* Sa se concateneze continutul
a doua fisiere te#t adaugandul
pe unul
la sfarsitul
celuilalt
*/
#include <stdio.h>
#include <conio.h>
&'() *d+"*dg;
char
nume3[Q0"nume%[Q0"linie[%FG
;
void main()
{
clrscr();
print+(0numele primului +isier5
0);scan+(06s0"nume3);
print+(0numele celui de9al
doilea +isier5
0);scan+(06s0"nume%);
d+,+open(nume3"0a0);
+puts(02n0"d+);
dg,+open(nume%"0r0);
4hile(:+eo+(dg))
{
+gets(linie"%FG"dg);
+puts(linie"d+);
#
+close(d+);+close(dg);
print+(0+isierul re!ultat este 2n0);
d+,+open(nume3"0r0);
4hile(:+eo+(d+))
{
+gets(linie"%0"d+);
print+(06s0"linie);
#
+close(d+);
getch();
#
// Mroblema Aurnurilor din Sanoi
cu metoda .ivide7'mpera;
#include <stdio.h>
#include <conio.h>
int n;
char a"b"c;
void hanoi(int n"char a"char
b"char c)
{
i+ (n,,3) print+(06c6c
0"a"b);
else
{
hanoi(n9
3"a"c"b);
print+(06c6c 0"a"b);
hanoi(n93"c"b"a);
#
#
void main()
{
clrscr();
print+(0nr de discuri
,0);scan+(06d0"7n);
a,-a-;b,-b-;c,-c-;
hanoi(n"a"b"c);
print+(02n0);
getch();
#
// Programul determina
ma#imul dintrun !ector cu
metoda 8i!ide;ImperaD
#include <stdio.h>
#include <conio.h>
int a[30"n;
int ma$im(int i"int C)
{
int $"y;
i+ (i,,C) return a[i;
else
{
$,ma$im(i"(i1C)/%);
y,ma$im((i1C)/%13"C);
i+ ($>y)
return $;
else return y;
#
#
void main()
{
clrscr();
int i;
print+(0nr de elemente
,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0a[6d,0"i);scan+(06d0"7
a[i);
#
print+(0ma$imul,6d2n0"
ma$im(3"n));
getch();
#
/* Problema monedelor
*/
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a[,{300"F0"%0"30"F"3#;
int s"i"C"r;
clrscr();
print+(0;uma de
platit,0);scan+(06d0"7s);
r,s;i,0;
do
{
C,0;
4hile(a[i<,r)
{
r,r9a[i;
C11;
#
print+(0moneda de valoare 6d
apare de 6d ori2n0"a[i"C);
i11;
#4hile(r:,0);
getch();
#
/* Problema continua a
rucsacului
*/
#include <stdio.h>
#include <conio.h>
void main(void)
{
double
c[H"g[H"e+[H"gv"au$"castig;
int n"i"au$3"inv"ordine[H;
clrscr();

print+(0Treutatea,0);scan+(06l+0"
7gv);
print+(0=r. de
obiecte,0);scan+(06d0"7n);
// c[i,castigul produs de
obiectul i
// g[i,greutatea obiectului i
// e+[i,e+icienta de transport
,c[i/g[i
+or (i,3;i<,n;i11)
{

print+(0c[6d,0"i);scan+(06l+0"7
c[i);

print+(0g[6d,0"i);scan+(06l+0"7
g[i);
ordine[i,i;
e+[i,c[i/g[i;
#
// sortarea obiectelor in ordine
descrescatoare a e+icientei
// de transport
do
{
inv,0;
+or(i,3;i<,n93;i11)
i+ (e+[i<e+[i13)
{

au$,e+[i;e+[i,e+[i13;e+[i13,a
u$;

au$,c[i;c[i,c[i13;c[i13,au$;

au$,g[i;g[i,g[i13;g[i13,au$;
inv,3;

au$3,ordine[i;ordine[i,ordine[
i13;ordine[i13,au$3;
#
#4hile(inv);
i,3;
4hile(gv>0 77 i<,n)
{
i+(gv>g[i)
{ print+(0obiectul 6d
intreg2n0"ordine[i);
gv9,g[i;
castig1,c[i;
#
else
{ print+(0obiectul 6d in
raport de
6l+2n0"ordine[i"gv/g[i);
castig1,c[i*gv/g[i;
gv,0;
#
i11;
#
print+(0Kastig total,
6l+2n0"castig);
getch();
#
/* Sortarea prin interclasare
se considera * !ectori # si E
sortati de dimensiune m,
respecti! nD
se obtine
un nou !ector sortat z astfel:
&($,...,m/n
z1&2(#1i2 pentru ,#1i2.E1"2,
i.(m, ".(n- sau ,"'n-
z1&2(E1"2 pentru ,#1i2'(E1"2,
i.(m, ".(n- sau ,i'm-
*/
#include <stdio.h>
#include <conio.h>
#de+ine ma$ F0
void main(void){
clrscr();
int i"C"n"m"8;
int $[ma$"y[ma$"![%*ma$;
print+(0nr elemente pentru $
,0);scan+(06d0"7m);
+or(i,3;i<,m;i11)
{

print+(0$[6d,0"i);scan+(06d0"7
$[i);
#
print+(0nr elemente pentru y
,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0y[6d,0"i);scan+(06d0"7
y[i);
#
i,3;
C,3;
8,0;
4hile (i<,m77C<,n)
{ 811;
i+ ($[i<y[C)
{
![8,$[i;
i11;
#
else
{ ![8,y[C;
C11;
#
#
i+ (i<,m)
+or(C,i;C<,m;C11)
{
811;
![8,$[C;
#
i+ (C<,n)
+or(i,C;i<,n;i11)
{
811;
![8,y[i;
#
+or(i,3;i<,8;i11)
print+(06d2t0"![i);
print+(02n0);
getch();
#
/* Sortarea prin
intersc0imbare ,bulelor-
!ectorul initial cu elemente
distincte !,
daca *
elemente alaturate !or fi gasite
necorespunzatoare
ordonarii
cerute, !or fi intersc0imbate
procesul
continua pana cand nu mai
sunt necesare

intersc0imbari
sortarea
se face in acelasi !ector !
*/
#include <stdio.h>
#include <conio.h>
#de+ine ma$ F0
void main(void){
clrscr();
int i"n"ind"au$;
int v[ma$;
print+(0nr
elemente,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
#
do
{ +or(i,3;i<,n93;i11)
{ind,0;
i+ (v[i>v[i13) {
au$,v[i;
v[i,v[i13;
v[i13,au$;
ind,3;
#
#
# 4hile (ind:,0);
+or(i,3;i<,n;i11)
print+(06d2t0"v[i);
print+(02n0);
getch();
#
/* Sortarea prin insertie
directa
!ectorul initial cu elemente
distincte !D
fiecare element este inserat in
locul corespunzator,
in raport cu
elementele sortare anterior
se considera
!1$2.(!1*2.(...!1"$2
se compara !1"2 cu !1"$2,
!1"*2,... pana cand se
determina ca
!1"2 trebuie
inserat intre !1i2 si !1i/$2
apoi se deplaseaza
sec!enta !1i/$2,...,!1"$2 cu o
pozitie si se !a
introduce noul element in
pozitia i/$
*/
#include <stdio.h>
#include <conio.h>
#de+ine ma$ F0
void main(void){
clrscr();
int i"C"n"$;
int v[ma$;
print+(0nr
elemente,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
#
+or(C,%;C<,n;C11)
{ $,v[C;
i,C93;
4hile (i>077v[i>$)
{
v[i13,v[i;
i99;
#
v[i13,$;
#
+or(i,3;i<,n;i11)
print+(06d2t0"v[i);
print+(02n0);
getch();
#
/* Sortarea prin numarare
!ectorul initial cu elemente
distincte !,
dupa
sortare se obtine !ectorul a
sortarea prin numararea
comparatiilor se bazeaza in a
numara
pentru fiecare
element !1i2 cate elemente mai
mici strict decat
el e#istaD
numerele obtinute se
memoreaza intrun contor,
pe baza lui se
rearan"eaza !ectorul ! intrun
nou !ector a
*/
#include <stdio.h>
#include <conio.h>
#de+ine ma$ F0
void main(void){
clrscr();
int i"C"n;
int v[ma$"a[ma$"contor[ma$;
print+(0nr
elemente,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
#
+or(i,3;i<,n;i11) contor[i,3;
+or(C,%;C<,n;C11)
{ +or(i,3;i<,C93;i11)
{ i+ (v[i<v[C) contor[C1,3;
else contor[i1,3;
#
#
+or(i,3;i<,n;i11)
a[contor[i,v[i;
+or(i,3;i<,n;i11)
print+(06d2t0"a[i);
print+(02n0);
getch();
#
/* Problema spectacolelor
Intro sala, intro
zi trebuie planificate n
spectacole.
Pentru fiecare spectacol se
cunoaste inter!alul de timp in
care se
desfasoara ,ora
de inceput , ora de sfarsit-.
Se cere sa se planifice un
numar ma#im de spectacole a.i.
sa nu se
suprapuna.
6lgoritmul:
$sortare spectacole dupa
ora terminarii lor
*primul spectacol
progarmat este cel care se
termina cel mai de!reme
=alegem primul spectacol
din cele ce urmeaza in sir
ultimului spectacol
programat care incepe dupa
ce sa terminat ultimul
spectacol programat
4daca nu sa gasit un astfel
de spectacol, algortimul se
inc0eie,
altfel se programeaza
spectacolul gasit si algoritmul
se reia de la
pasul =
a(multimea initiala de
spectacole
*/
#include <stdio.h>
#include <conio.h>
void main(void)
{
int n"i"C"ora?s+"au$;
int start[30"durata[30"a[30;
clrscr();
print+(0=r. de
spectacole,0);scan+(06d0"7n);
+or (i,3;i<,n;i11)
{
print+(0spectacolul 6d2n0"i);
print+(0ora de inceput
,0);scan+(06d0"7start[i);
print+(0durata
,0);scan+(06d0"7durata[i);
a[i,i;
#
// ordonarea spectacolelor
+or(i,3;i<,n93;i11)
+or(C,i13;C<,n;C11)
i+ (start[i
1durata[i>start[C1durata[C)
{

au$,start[i;start[i,start[C;start[
C,au$;

au$,durata[i;durata[i,durata[C
;durata[C,au$;
au$,a[i;a[i,a[C;a[C,au$;
#
ora?s+,start[31durata[3;
print+(0primul spectacol este nr
6d2n0"a[3);
i,%;
4hile(i<,n)
{
i+(ora?s+<,start[i)
{ print+(0;pectacolul
urmator este nr 6d 2n0"a[i);
ora?s+,start[i1durata[i;
#
i11;
#
getch();
#
/* Sortarea prin selectie
directa :
se determina cel mai mic
element din sir si se plaseaza pe
prima pozitieD
se repeta pasul anterior
pentru determinarea celui de
al ilea element
din sir ,cel mai mic din
cele ramase-, pana cand
ramane un singur element,
care !a fi cel mai mare
si !a ramane pe pozitia n
*/
#include <stdio.h>
#include <conio.h>
#de+ine ma$ F0
void main(void){
clrscr();
int i"C"n"au$;
int v[ma$;
print+(0nr elemente
,0);scan+(06d0"7n);
+or(i,3;i<,n;i11)
{

print+(0v[6d,0"i);scan+(06d0"7
v[i);
#
+or(i,3;i<,n93;i11)
+or(C,i13;C<,n;C11)
{
i+
(v[i>v[C)
{
au$,v[i;
v[i,v[C;
v[C,au$;
#
#
+or(i,3;i<,n;i11)
print+(06d2t0"v[i);
print+(02n0);
getch();
#
/* Sa se afiseze reprezentarea
interna a unei date de tip c0ar
folosind campurile pe biti
*/
#include <stdio.h>
#include <conio.h>
union bitii
{
struct
{
unsigned b053;
unsigned b353;
unsigned b%53;
unsigned b353;
unsigned bU53;
unsigned bF53;
unsigned bG53;
unsigned bV53;
# b;
char c;
#octet;
void main()
{
print+(0dati un
caracter 50);scan+(06c0"7octet.c)
;
print+(0repre!entarea interna
este5 2n0);
print+(06d6d6d6d6d6d6d
6d 2n0"octet.b.bV"
octet.b.bG"octet.b.bF"
octet.b.bU" octet.b.b3" octet.b.b%"
octet.b.b3" octet.b.b0);
getch();
#
/* Se citesc informatii despre n
studenti ce contin nume, nota$,
nota*,
nota= si nota4. Sa se afiseze:
studentii in ordine
alfabetica si mediile lorD
studentii in ordinea
descrescatoare a mediilor
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct ;AO.)=A
{
char nume[U0;
int note[U;
+loat media;
#s[300;
int n;
void citire(;AO.)=A ["int 7);
void ordal+a(;AO.)=A ["int);
void ordmedie(;AO.)=A
["int);
void a+is();
void main()
{
clrscr();
citire(s"n);
print+(0a+isare al+abetica2n0);
ordal+a(s"n);
a+is();
getch();
print+(0a+isare in ordinea
mediilor 2n0);
ordmedie(s"n);
a+is();
getch();
#
void citire(;AO.)=A s[300" int
7n)
{
int i"C;
do
{
print+(0nr. studenti,0);
scan+(06d0"7n);
# 4hile (n<3 BB n>300);
+or(i,0;i<n;i11)
{
print+(0in+ormatii pentru
studentul 6d 2n0"i13);
print+(0numele 5
0);scan+(06U0s0"s[i.nume);
// gets(s[i.nume);
++lush(stdin);
s[i.media,0;
+or(C,0;C<U;C11)
{
print+(0nota 6d
,0"C13);scan+(06d0"7s[i.note[C)
;
s[i.media1,s[i.note[C;
#
s[i.media/,U;
#
#
void ordal+a(;AO.)=A ["int 8)
{
int i"ind;
;AO.)=A au$;
do
{
ind,0;
+or(i,0;i<893;i11)
i+
(strcmp(s[i.nume"s[i13.nume)>
0)
{
au$,s[i;
s[i,s[i13;
s[i13,au$;
ind,3;
#
#4hile(ind);
#
void ordmedie(;AO.)=A ["int
8)
{
int i"ind;
;AO.)=A au$;
do
{
ind,0;
+or(i,0;i<893;i11)
i+
(s[i.media<s[i13.media BB
s[i.media,,s[i13.media
77
strcmp(s[i.nume"s[i13.nume)>0
)
{
au$,s[i;
s[i,s[i13;
s[i13,au$;
ind,3;
#
#4hile(ind);
#
void a+is()
{
int i;
+or(i,0;i<n;i11)
print+(06U0s are media
6+2n0"s[i.nume"s[i.media);
#
/* 6.8efiniti tipul @<6S care
contine campurile:
nume sir de *% caractere,
precipitatii real, zona
caracter,N,S,:,9-
B. Scrieti functia
CitireF@ras, fara parametri,
acre citeste informatiile
despre o structura
@<6S, pe care o !a returna. Se
!a face !alidarea
campurilor: numecontine
doar litere, precipitatii!aloare
poziti!a si
zonacontine doar N,S,:,sau
9.
C.8efiniti tabloul @<6S: de
76G elemente de tip o<6S,
76G fiind o
constanta predefinita
8. Scrieti functia
CitireF@rase, !oid, fara
parametri, care initializeaza
tabloul @<6S:, considerat
!ariabila globala, prin apelul
functiei
CitireF@ras
:. Scrieti functia Aiparire
care primeste * parametri, un
real si un caracter
si tipareste informatiile
despre orasele al caror nume
incepe cu o constanta,
din zona egala cu
caracterul si care au campul
precipitatii 'decat primul
parametru.
Functia !a returna numarul de
orase gasite a!and
caracteristicile
de ami sus.
F. Scrieti programul care sa
apeleze functiile de la 8, :.
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#de+ine I>J U
typede+ struct
{
char nume[%0;
+loat precip;
char !ona;
#LN>;;
LN>; LN>;)[I>J;
//+unctia Kitire?Lras citeste si
validea!a in+ormatiile
int nume?valid(char *);
int precip?valid(+loat);
int !ona?valid(char);
LN>; Kitire?Lras()
{
LN>; o; //variabila locala
+olosita pentru citire
4hile (print+(0nume oras 5
0)"gets(o.nume)":
nume?valid(o.nume));
4hile (print+(0precipitatii ,
0)"scan+(06+0"7o.precip)":
precip?valid(o.precip));
getchar(); //scoate codul lui
)nter din bu++erul de intrare
4hile (print+(0!ona5=";")"@ 5
0)"o.!ona,toupper(getche())":
!ona?valid(o.!ona));
putchar(-2n-);
return o;
#
int nume?valid(char *n)
{
int i;
i+ (strlen(n),,0) return 0;
//nume vid
+or (i,0;i<strlen(n);i11)
i+ (:isalpha(n[i)) return
0; //caracterul curent nu e litera
return 3; //toate caracterele
litere
#
int precip?valid(+loat p)
{
return p>,0;
#
int !ona?valid(char !)
{
return !,,-=-BB!,,-;-BB!,,-)-BB
!,,-@-;
#
void Kitire?Lrase(void)
{
int i;
+or(i,0;i<I>J;i11)
LN>;)[i,Kitire?Lras();
#
int veri+(LN>;"+loat"char);
//veri+ica si tipareste in+ormatii
despre oras#
int Aiparire(+loat p"char !)
{
int i"contor;
+or(i,contor,0;i<I>J;i11)
i+
(veri+(LN>;)[i"p"!))
contor11;
return contor;
#
int veri+(LN>; o"+loat p"char !)
{
char c;
i+((c,toupper(o.nume[0)"c:
,->-77c:,-)-77c:,-'-77c:
,-L-77c:,-O-)
//primul caracter nu este
vocala
77
o.precip>,p77o.!ona,,toupper
(!))
{
print+(06s 6+
6c2n0"o.nume"o.precip"o.!ona);
return 3;
#
return 0;
#
void main()
{
clrscr();
Kitire?Lrase();
print+(02n0);
print+(0orasele care indeplinesc
criteriile2n0" Aiparire(%3"-v-));
getch();
#
/* Sa se scrie un program care
citeste elementele unei figuri
necesare pentru calculul ariei
sale. :lementele sunt precizate
de o litera mare, care defineste
figura. Programul afiseaza aria
figurii. Ccerc Ppatrat
8dreptung0i Atriung0i */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#de+ine )NL>N) 93
#de+ine K)NK 0
#de+ine M>AN>A 3
#de+ine .N)MAO=TS' %
#de+ine AN'O=TS' 3
#de+ine M' 3.3U3F
typede+ struct
{
int tip;
union
{
double ra!a;
double lp;
double ld[%;
double lt[3;
#+ig;
#&'T;
//citire elemente +igura
int cit+ig(&'T *p)
{
char t[%FF;
s4itch(p9>tip)
{
case K)NK5
{
print+(0ra!a,
0);scan+(06l+0"7p9>+ig.ra!a);
i+ (p9>+ig.ra!a<,0)
{
print+(0eroare0);
return 0;
#
else return 3;
#
case M>AN>A5
{
print+(0latura,
0);scan+(06l+0"7p9>+ig.lp);
i+ (p9>+ig.ra!a<,0)
{
print+(0eroare0);
return 0;
#
else return 3;
#
case .N)MAO=TS'5
{
print+(0laturile
dreptunghiului, 0);
scan+(06l+6l+0"7p9
>+ig.ld[0"7p9>+ig.ld[3);
i+ (p9>+ig.ld[0<,0BBp9
>+ig.ld[3<,0)
{
print+(0eroare0);
return 0;
#
else return 3;
#
case AN'O=TS'5
{
print+(0laturile
triunghiului, 0);
scan+(06l+6l+6l+0"7p9
>+ig.lt[0"7p9>+ig.lt[3"7p9
>+ig.lt[%);
i+ (p9>+ig.lt[0<,0BBp9
>+ig.lt[3<,0BBp9>+ig.lt[%<,0)
{
print+(0eroare0);
getch();
return 0;
#
else return 3;
#
de+ault5
return 0;
#
#
double aria(&'T *p)
{
double sp"a"b"c;
s4itch(p9>tip)
{
case K)NK5 return M'*p9
>+ig.ra!a*p9>+ig.ra!a;
case M>AN>A5 return p9
>+ig.lp*p9>+ig.lp;
case .N)MAO=TS'5 return p9
>+ig.ld[0*p9>+ig.ld[3;
case AN'O=TS'5 sp,(p9
>+ig.lt[01p9>+ig.lt[31p9
>+ig.lt[%)/%;
i+ ((a,sp9p9
>+ig.lt[0)>0 77
(b,sp9p9
>+ig.lt[3)>0 77
(c,sp9p9
>+ig.lt[%)>0 )
return
sDrt(sp*a*b*c);
else
{
print+(0nu
+ormea!a triunghi2n0);
getch();
return 0;
#
de+ault5 return 0;
#
#
void main()
{
&'T +;
double a;
char lit;
+or(;;)
{
print+(0tastati una din literele
K"."M"A 0);
scan+(06c0"7lit);
s4itch(lit)
{
case -K-5 +.tip,K)NK;

brea8;
case -.-5
+.tip,.N)MAO=TS';

brea8;
case -M-5 +.tip,M>AN>A;

brea8;
case -A-5 +.tip,AN'O=TS';

brea8;
de+ault5

print+(0eroare0);
getch();
e$it(3);
#
i+ (+.tip:,)NL>N)) brea8;
#
i+(cit+ig(7+),,0)
{
print+(0eroare0);
getch();
e$it(3);
#
i+((a,aria(7+)),,0) e$it(3);
print+(0aria +igurii ,6+
2n0"a);
getch();
#
//programul calculeaza suma
cifrelor unui numar natural :
recursi! si iterati!
Hinclude .stdio.0'
Hinclude .conio.0'
/*
long int n;
int suma(long int n)
{
i+(:n) return 0;
else return n630 1
suma(n/30);
#
void main(void)
{
clrscr();
print+(0n,0);scan+(06ld0"7n);
print+(0suma ci+relor lui 6ld ,
6d2n0"n"suma(n));
getch();
*/
void main()
{
long int n"$;
int s;
print+(0n,0);scan+(06ld0"7n);
s,0;
$,n;
4hile($)
{ s1,$630;
$/,30;
#
print+(0suma ci+relor lui 6ld ,
6d2n0"n"s);
getch();
#
/* Sa se concateneze continutul
a doua fisiere te#t adaugandul
pe unul
la sfarsitul
celuilalt
*/
#include <stdio.h>
#include <conio.h>
&'() *d+"*dg;
char
nume3[Q0"nume%[Q0"linie[%FG
;
void main()
{
clrscr();
print+(0numele primului +isier5
0);scan+(06s0"nume3);
print+(0numele celui de9al
doilea +isier5
0);scan+(06s0"nume%);
d+,+open(nume3"0a0);
+puts(02n0"d+);
dg,+open(nume%"0r0);
4hile(:+eo+(dg))
{
+gets(linie"%FG"dg);
+puts(linie"d+);
#
+close(d+);+close(dg);
print+(0+isierul re!ultat este 2n0);
d+,+open(nume3"0r0);
4hile(:+eo+(d+))
{
+gets(linie"%0"d+);
print+(06s0"linie);
#
+close(d+);
getch();
#

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