Documente Academic
Documente Profesional
Documente Cultură
PROGRAMARE
Lucrari de laborator
Semestrul I
1. Programe liniare in C++ (indrumar N1216, pagi.5)
2.
2.1 Programe ramificate in C++ (indrumar N1216, pagi.6)
2.2 Programe ramificate in C++ (indrumar N892, pagi.18)
3.
3.1 Prelucrarea masivelor unidimensionale in C++ (indrumar N1216, pagi.9)
3.2 Prelucrarea masivelor unidimensionale in C++ (indrumar N1216, pagi.12)
4.
4.1 Prelucrarea masivelor bidimensionale in C++ (indrumar N1216, pagi.15)
4.2 Prelucrarea masivelor bidimensionale in C++ (indrumar N1216, pagi.17)
5.
5.1 Prelucrarea caracterelor in C++ ((indrumar N1216, pagi.25)
5.2 Prelucrarea sirurilor de caractere in C++ (indrumar N1216, pagi.27)
Semestrul II
6. Structuri in C++ (indrumar N1216, pagi.30)
7. Functii in C++ (indrumar N1216, pagi.37)
8. Fisiere in C++ (indrumar N1216, pagi.42)
9. Meniuri in C++ (indrumar N1219, pagi.5)
10. Programe liniare si ramificate in C++Builder
11.Componente VCL. C++Builder
Indrumarele metodice in biblioteca facultatii:
N 891 - Ciclu de prelegeri la disciplina Programare. Limbajul Pascal.
N 1244 - Ciclu de prelegeri la disciplina Programare. Limbajul C.
N 1216 - ndrumar metodic privind ndeplinirea lucrrilor de laborator.
N 892 - ndrumar metodic privind ndeplinirea lucrrilor individuale.
N 1219 - ndrumar metodic privind ndeplinirea lucrrii de curs.
Chisinau 2006
PDF created with pdfFactory Pro trial version www.pdffactory.com
Formula de calcul
A=
A=|x y / x 3 y / x | ;
2
3
4
5
6
7
2 cos( x pi / 6)
1 / 2 + sin 2 y
z2
; B=1+
3 + z2 /5
y z /( y x)
f=(y-x)
1 + ( y x) 2
x2 x3 x4
+
+
; e=x(sinx 3 + cos 2 y )
2
3
4
bt
Y=e sin( at + b) | bt + a | ; s=bsin(at 2 cos 2t ) 1
S=1+x+
W= x 2 + b b 2 sin 3 ( x + a ) / x ; y=cos 2 x 3 x / a 2 + b 2
bx 2 a
S=x tg ( x + b) + a / x + b ; Q= ax
;
e 1
R=x 2 ( x + 1) / b sin 2 ( x + a ) ; s= xb / a + cos 2 ( x + b) 3
3
x2
+ cos( x + b) 3
a
3
F= m * tg (t )+ | c * sin( t ) | ; z=m cos( bt*sin(t) )+c
Y=sin 3 ( x 2 + a) 2 x / b ; z=
8
9
a
; d=a e a cos(bx / a )
sin ( x / a)
10
Y=b tg 2 x
11
12
13
14
15
16
Y=
x+ x+a
x | xb|
a 2 x + b x cos(a + b) x
; r= x 2 + b b 2 sin 3 ( x + a ) / x
x +1
Z= ax sin 2 x + e 2 x ( x + b) ; w=cos 2 x 3 x / a 2 + b 2
a 2 x + e x cos bx
; f=e 2 x ln( a + x) b 3 x ln( b x )
x
bx e sin bx + 1
sin x
Z=
cm ln mx ; s=e ax x + 1 + e bx x + 1.5
2
2
1 + m sin x
U=
C=ln (x+7
1.5 cos 2 x
|x+a|
) ; D=
3tgx
| x+b|
Exemplu de program:
De calculat valoarea expresiei: C=ln (x+7
1.5 cos 2 x
|x+a|
;
) ; D=
3tgx
| x+b|
#include<stdio.h>
#include<conio.h>
PDF created with pdfFactory Pro trial version www.pdffactory.com
#include<math.h>
void main (void) {
int x,a,b; float c,d;
clrscr();
printf("Culegeti valorile x,a,b:\n");
scanf("%d%d%d",&x,&a,&b);
c=log(x+7*sqrt(abs(x+a)/abs(x+b)));
d=1.5*pow(cos(x),2)/3*tan(x);
printf("Rezultatul: c=%f d=%f",c,d);
getch();}
Funcia
Condiia
at 2 ln t
Y= 1
at cos
bt
e
x 2 7 x 2
Y= ax 3 + 7 x
ln( x + 7 x )
ax 2 + bx + c
W= a / x + x 2 + 1
2
(a + bx ) / x + 1
x 2 7 / x 2
Q= ax + 7 x
ln( x + 7 | x + a | )
1.5 cos 2 x
1.8ax
Y=
2
( x 2) + 6
3tgx
x3 x a
W= x sin ax
e ax cos ax
1 t 2
t<1
t>2
x<1.3
x=1.3
x1.3
x<1.2
x=1.2
x>1.2
x<1.4
x=1.4
x>1.4
x<1
x=1
1<x<2
x2
x>a
x=a
x<a
bx ln( bx )
Q= 1
bx + ln( bx)
b*x<1
b*x=1
b*x>1
sin x ln x
Y= 2
cos x
ln( x + 1)
F= 2
sin | ax |
(ln 3 x + x 2 ) / x + t
Z= x + t + 1 / x
cos x + t sin 2 x
a+b
e x + cos x
S= (a + b) /( x + 1)
e + sin x
a ln x + 3 | a x |
Y=
2a cos x + 3 x 2
a
2
i + bi + c
W= i
+ 3
ai bi
i +1
)
a sin(
n
Z=
cos(i + 1 )
x>3.5
x 3.5
9
10
11
12
13
14
15
16
at 2 + b sin t + 1
W= at + b
2
at cos t + 1
ex ex
x( 2 )
Y= 4
2
x + 3x + 2
10
Exemplu de program:
De calculat valoarea funciei, n dependen de condiie:
x>1
x1
x<0.5
x=0.5
x>0.5
x<2.8
2.8 x <6
x 6
x>1
x1
i<4
4 i 6
i>6
n*(i+1)>0
n*(i+1)<0
t<0.1
t=0.1
t>0.1
x<1.5
x=1.5
x>1.5
ex ex
x( 2 )
Y= 4
2
x + 3x + 2
10
x<1.5
x=1.5
x>1.5
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main (void) {
float x,Y;
const float z=1.5;
clrscr();
printf("Culegeti valoarea x:\n");
scanf("%f",&x);
if (x<z) Y=x*((exp(x)-exp(-x))/2);
else if (x==z) Y=x/(pow(x,4)+3*pow(x,2)+2);
else Y=10;
printf("x=%.3f, Y=%.3f",x,Y);
getch();}
Problema 2
Var
Condiia
Determinai paritatea sumei dintre cifra utilizatorului i valoarea rotungit de la
6
7
10
11
12
13
14
15
16
Exemplu de program.
Determinai paritatea prii intregi de la impartirea (sumei dintre cifra utilizatorului si 6), si rezultatul
a 2 x + b x cos(a + b) x
expresiei F= 3 m * tg (t )+ | c * sin( t ) | +
;
x +1
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main(void) {
int m,t,c,x,a,b,u,s,p; float f,k;
printf("\nCulege valorile pentru m,t,c,x,a,b\n");
scanf("%d%d%d%d%d%d",&m,&t,&c,&x,&a,&b);
f=pow((m*tan(t)+abs(c*sin(t))),1/3)+( pow(a,2*x)+pow(b,(-1)*x)*cos(a+b)*
*x )/(x+1); printf("\nCulege o cifr ntreag\n");
scanf("%d",&u); k=(6+u)/f; p=floor(k);
printf("\nf=%f ctul este=%f i partea ntreag=%d",f,k,p);
if (fmod(p,2)==0) printf("\nPartea ntreag este par\n");
else printf("\nPartea ntreag este impar\n"); getch(); }
Nr.
var.
1
4
De determinat elementul maximal al masivului
i de aflat dac el este pozitiv sau negativ.
5
De calculat diferena dintre produsul elementelor i media lor aritmetic. De determinat paritatea
diferenei.
10
11
De calculat suma dintre primul element al masivului i ultimul element impar al masivului.
12
13
14
De comparat suma elementelor din prima jumtate a masivului cu media aritmetic a elementelor
din a doua jumtate a masivului.
15
16
Exemplu de program:
Este dat un masiv unidimensional X(N). De comparat suma elementelor pare cu produsul elementelor
negative n afar de primul i ultimul element.
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main (void) {
int x[50],I,n,s=0,p=1;
PDF created with pdfFactory Pro trial version www.pdffactory.com
clrscr();
printf("Culegeti marimea masivului x\n");
scanf("%d",&n); }
printf("Culegeti masivul x\n");
for(i=0;i<n;i++) {
printf("x[%d] = ",i);
scanf("%d",&x[i]); }
printf("Masivul initial:\n");
for(i=0;i<n;i++) printf("%d ",x[i]);
for(i=1;i<n-1;i++){
if(fmod(x[i],2)==0) s+=x[i];
if(x[i]<0) p*=x[i];}
printf("\nSuma elementelor pare in afara de primul si ultimul element = %d",s);
printf("\nProdusul elementelor negative in afara de primul si ultimul element = %d",p);
if(s>p) printf("\nSuma > Produsul");
else if (s<p) printf("\nSuma < Produsul");
else printf("\nSuma = Produsul");
getch();}
Problema 2
var.
Condiia
S1 + S 2
,
K1 * K 2
unde S1 i K1 snt suma i cantitatea elementelor pozitive din masivul A, iar S2 i K2 - suma i
cantitatea elementelor pozitive din masivul B.
3
Este dat masivul unidimensional K[n]. De aflat cantitatea elementelor impare, valoarea ridicat
la ptrat a crora este mai mic ca 100.
Este dat masivul unidimensional F[n]. De determinat poziiile i valorile primelor 3 elemente
negative
Snt date dou masive unidimensionale Q[n] i R[n]. De calculat valoarea expresiei
F=
e S1 + e S 2
, unde S1 i K1 snt suma i cantitatea elementelor pare din masivul Q,
K1 * K 2
iar S2 i K2- suma i cantitatea elementelor impare din masivul R.
Este dat masivul unidimensional Y[n]. De calculat suma rdcinilor ptrate ale elementelor
impare .
Este dat masivul unidimensional D[n]. De determinat valorile i poziiile
10
S
K
11
Este dat masivul unidimensional Q[n]. De aflat valoarea i poziia elementului cu valoarea
maximal printre elementele impare.
13
14
De calculat S=cos(P+M) - P * M , unde: P este produsul elementelor impare din masivul X, iar
M - media aritmetic a elementelor impare din masivul Y.
Este dat masivul unidimensional M[n]. De determinat poziia i valoarea
15
Este dat masivul unidimensional W[n]. De aflat poziia i valoarea elementului cu valoarea
minimal printre elementele pare.
Exemplu de program:
Este dat masivul unidimensional W[n]. Aflai poziia i valoarea elementului cu valoarea minimal printre
elementele pare.
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main (void) {
int w[50],n,i,min,z; clrscr();
printf("Culege marimea masivului n<=50 ");
scanf("%d",&n);
printf("Culege masivul w[%d]\n",n);
for(i=0;i<n;i++) {
PDF created with pdfFactory Pro trial version www.pdffactory.com
Condiia
10
11
12
13
14
15
16
Exemplu de program:
Este dat masivul bidimensional Y[N][M]. De calculat cantitatea elementelor divizibile la trei din ultimele
dou coloane.
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(void) {
int y[10][10],i,j,k,n,m; clrscr();
printf("\nCulegeti cantitatea de linii ale masivului y\n"); scanf("%d",&n);
printf("\nCulegeti cantitatea de coloane ale masivului y\n");
scanf("%d",&m); printf("\nCulegeti masivul y\n\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf("y[%d][%d]= ",i,j);
scanf("%d",&y[i][j]);}}
printf("\nMasivul initial:\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf("%3d ",y[i][j]);}
printf("\n");} k=0;
for(i=0;i<n;i++){
for(j=m-2;j<m;j++){
if(fmod(y[i][j],3)==0) k++;}}
printf("\nCantitatea elementelor divizibile la 3 din ultimele 2 coloane = %d",k);
getch();}
Problema 2
Generator de numere aleatoare Este dat un masiv bidimensional X[n][n]. Dup dorina utilizatorului, de
completat masivul:
a) cu ajutorul generatorului de numere aleatoare;
b) manual.
var.
Condiia
1.
De schimbat cu locul elementele primului rind cu elementele ultimei coloane.
2.
3.
De schimbat cu locul elementele ariei I
4.
5.
6.
7.
9.
10.
11.
13.
14.
15.
Exemplu de program:
Este dat un masiv bidimensional X[n][n]. Dup dorina utilizatorului,
de completat masivul:
a) cu ajutorul generatorului de numere aleatoare;
b) manual.
De schimbat cu locul elementul maximal al coloanei indicate de utilizator cu elementul minimal de pe
rndul trei.
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void main(void) {
int x[20][20],n,i,j,min,minj,max,maxi,maxj,aux;
PDF created with pdfFactory Pro trial version www.pdffactory.com
char z; clrscr();
printf("\nCulegeti marimea masivului 3<n<20 ");
scanf("%d",&n);
label: clrscr();
printf("\n\nAlegeti metoda de completare a masivului (a/m):\n");
printf("\n a- Automat\n");
printf("\n m- Manual\n");
z=getch();
if((z=='a')||(z=='A')) goto automat; else
if((z=='m')||(z=='M')) goto manual; else goto label;
automat:randomize();
for(i=0;i<n;i++){
for(j=0;j<n;j++){
x[i][j]=random(19)-9;}}
goto masiv;
manual: printf("\nCulegeti masivul x[%d][%d]\n",n,n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("x[%d][%d]= ",i,j);
scanf("%d",&x[i][j]);}}
masiv: clrscr();
printf("\nMasivul x[%d][%d] initial:\n\n",n,n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d ",x[i][j]);}
printf("\n\n");}
min=x[3][0]; minj=0;
for(j=0;j<n;j++)
if (x[3][j]<min) {min=x[3][j]; minj=j;}
printf("\nElementul minimal de pe rindul 3 este x[3][%d]= %d\n",minj,min);
printf("\nIndicati coloana dorita ");
scanf("%d",&maxj);
max=x[0][maxj]; maxi=0;
for(i=0;i<n;i++)
if (x[i][maxj]>max) {max=x[i][maxj]; maxi=i;}
printf("\nElementul maximal de pe coloana %d este x[%d][%d]= %d\n",
maxj,maxi, maxj,max);
aux=x[3][minj];
PDF created with pdfFactory Pro trial version www.pdffactory.com
x[3][minj]=x[maxi][maxj];
x[maxi][maxj]=aux;
printf("\nMasivul x[%d][%d] final:\n\n",n,n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d ",x[i][j]);}
printf("\n\n");}
printf("\nElementul minimal de pe rindul 3 a fost schimbat\n");
printf("cu elementul maximal de pe coloana %d",maxj);
getch();}
Lucrarea de laborator nr. 5 Tema: Prelucrarea irurilor de caractere
Problema 1
var.
Condiia
1.
Este dat un ir de caractere. De comparat cantitatea vocalelor cu cantitatea consoanelor din ir.
2.
3.
Este dat un ir de caractere. De ters din ir toate spaiile de prisos. Astfel, ntre cuvinte va fi
numai cte un spaiu.
4.
5.
Este dat un ir de caractere. De aflat de cte ori este ntlnit n ir fiecare din caractere.
6.
7.
Este dat un ir de caractere. De ters din ir toate perechile de caractere identice aezate alturi.
Exemplu: aa, bb.
8.
Este dat un ir de caractere. De determinat valorile i poziiile ultimelor dou vocale din ir.
9.
Este dat un ir de caractere. De schimbat cu locul caracterele unu cu trei, cinci cu apte, nou cu
unsprezece .a.m.d. Dac ultimul caracter va fi fr pereche, el va rmne neschimbat.
10.
Este dat un ir de caractere. De indicat simbolurile care se ntlnesc o singur dat n text.
11.
12.
13.
Este dat un ir de caractere. De determinat valorile i poziiile primelor trei consoane din ir.
14.
Este dat un ir de caractere. Din textul dat de ters caracterele majuscule i de calculat lungimea
textului rmas.
15.
16.
Exemplu de program:
Este dat un ir de caractere. De ters din ir caracterele minuscule de pe poziii impare.
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main (void) {
char s[256],g[256]; int i,n,z,k;
clrscr(); puts("Culege un sir de caractere\n");
gets(s); n=strlen(s); z=0;
for(i=0;i<n;i++){ k=s[i];
if((k<97)||(k>122)) {g[z]=s[i]; z++;}
if((fmod(i,2)==0)&&(k>=97)&&(k<=122)) {g[z]=s[i]; z++;} }
g[z]='\0'; clrscr();
puts("\nSirul initial s:"); puts(s);
strcpy(s,g);
puts("\nSirul final:"); puts(s);
printf(\nCaracterele minuscule de pe pozitiile impare au fost sterse); getch(); }
Problema 2
Masive de iruri. Not. ir normal un ir de caractere compus din cuvinte separate prin spaiu. Dup
ultimul cuvnt urmeaz punct.
var.
1.
Condiia
Este dat un ir normal. De schimbat cu locul primul i ultimul caracter din fiecare cuvnt al
irului.
2.
Este dat un ir normal. De efectuat cutarea perechilor de cuvinte, n care unul din cuvinte este
inversia altuia.
3.
4.
5.
6.
Este dat un ir normal. De ters litera din mijloc din toate cuvintele de lingime impar.
7.
8.
Este dat un ir normal . De determinat cuvntul care conine numrul maximal de consoane.
9.
10.
Este dat un ir normal. De schimbat cu locul cel mai scurt cuvnt cu cel mai lung cuvnt.
11.
12.
Este dat un ir normal. De aranjat cuvintele irului n ordine descresctoare dup cantitatea de
vocale din cuvinte.
13.
14.
15.
16.
Este dat un ir normal. De inversat cuvintele de lungime par ce se afl pe poziii impare.
Exemplu de program:
Este dat un ir normal. De inversat cuvintele de lungime par ce se afl pe poziii impare.
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main (void) {
char s[250],G[250]="",x[250][250],SP[2]=" ",PK[2]="."; int n,i,r,k;
clrscr(); puts("Culege un sir de caractere\n");
gets(s); n=strlen(s); r=0; k=0;
for(i=0;i<n;i++) {
if((s[i]!=' ')&&(s[i]!='.')) {x[r][k]=s[i];k++;}
if((s[i]==' ')||(s[i]=='.')) {x[r][k]='\0';r++;k=0;} }
for(i=0;i<r;i++) {
if( (fmod(i,2)!=0)&&(fmod(strlen(x[i]),2)==0) ) strrev(x[i]); }
for(i=0;i<r;i++) { strcat(G,x[i]);
if(i<(r-1)) strcat(G,SP);}
strcat(G,PK); clrscr();
printf("\nSirul initial:\n"); puts(s); strcpy(s,G);
printf("\nSirul final:\n"); puts(s);
printf("\nCuvintele de lungime para pe pozitii impare au fost inversate\n"); getch(); }
Lucrarea de laborator nr. 6
var.
1.
Condiia
Cmpuri necesare
Numele de familie a
pacientului
Ora primirii
2.
Denumirea emisiunii
Ora nceperii emisiunii
Durata emisiunii
i maxim.
3.
Denumirea crii
Secia bibliografic
raftului.
Numrul raftului
4.
Numele de familie
beneficiarului
Numrul de telefon
Mrimea datoriei
5.
Familia studentului
Grupa academic
Numele de familie a
muncitorului
Postul ocupat
munc.
Vechimea n munc
7.
Numele de familie a
abonatului
Cantitatea de cri
mprumutate
Anul naterii al
abonatului
8.
Numele de familie a
studentului
Anul naterii
Grupa academic
Denumirea valutei
Cursul de schimb
schimb.
10.
un grup de automobile.
a) De realizat
cutarea automobilelor
dup numrul de
nregistrare a lor.
Numrul de nregistrare
Numele de familie a
persoanei
Numrul de telefon
Numele de familie a
studentului
Notele la trei examene
Balul mediu
mediu
13.
Denumirea leciei
nceputul leciei
15.
Numele de familie a
personei
Anul naterii
Numrul paaportului.
Denumirea bucatelor
Preul bucatelor
bucatelor.
16.
Numele de familie a
angajatului
Postul ocupat
Mrimea salariului
Exemplu de program:
Condiia
De alctuit un articol cu
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct angajat {
char nume[30];
char post[20];
float salar; };
void main (void) {
struct angajat x[50],art;
int i,n,k,z,d; float aux,max;
char caut[30],r; clrscr();
printf(Culege numarul de angajati\n);
scanf(%d,&n);
for(i=0;i<n;i++) {
printf(\nCulege numele angajatului %d : ,i);
scanf(%s,x[i].nume);
PDF created with pdfFactory Pro trial version www.pdffactory.com
Cmpuri necesare
Numele de familie a
angajatului
Postul ocupat
Mrimea salariului
Numele
Postul
| Salariul |\n);
printf(\t|------------------------------------------|\n);
for(i=0;i<n;i++) {
printf(\t|%16s|%14s|%10.2f|\n,x[i].nume,x[i].post,x[i].salar);
printf(\t|------------------------------------------|\n);}
printf(\nPentru continuare culegeti orice tasta...);
getch();
r1: clrscr();
printf(\n Cautare angajatului dupa nume.\n Culegeti numele cautat: );
scanf(%s,caut);
printf(\n\n\t ***** Rezultatul cautarii *****\n\n);
printf(\t--------------------------------------------\n);
printf(\t|
Numele
Postul
| Salariul |\n);
printf(\t|------------------------------------------|\n);
k=0;
for(i=0;i<n;i++) {
if(strcmp(x[i].nume,caut)==0){ k++;
printf(\t|%16s|%14s|%10.2f|\n,x[i].nume,x[i].post,x[i].salar);
printf(\t|------------------------------------------|\n);}}
if(k==0) printf(\nNu exista angajat cu asa nume.\n);
printf(\nDoriti sa repetati cautarea? (y/n) : );
r=getch(); if((r==y)||(r==Y)) goto r1;
for(i=0;i<n;i++) {
max=x[i].salar; z=i;
for(d=i;d<n;d++) {
if (max<x[d].salar) {max=x[d].salar; z=d;}}
art=x[i]; x[i]=x[z]; x[z]=art;}
clrscr();
printf(\n\n\t ***** Baza aranjata este *****\n\n);
printf(\t--------------------------------------------\n);
printf(\t|
Numele
Postul
| Salariul |\n);
printf(\t|------------------------------------------|\n);
PDF created with pdfFactory Pro trial version www.pdffactory.com
for(i=0;i<n;i++) {
printf(\t|%16s|%14s|%10.2f|\n,x[i].nume,x[i].post,x[i].salar);
printf(\t|------------------------------------------|\n);}
printf(\n\nPentru iesire culegeti orice tasta...); getch(); }
Lucrarea de laborator nr. 7 Tema: Subprograme
Problema 1
a) Rezolvai sarcina cu ajutorul subprogramelor.
b) Pentru completarea masivelor folosii generatorul de numere aleatoare.
Condiia
var.
1.
Snt date trei masive unidimensionale A[N], B[M] i C[K]. Aranjarea elementelor masivelor
De aranjat elementele fiecrui masiv n ordine cresctoare.
2.
n ordine cresctoare.
Snt date dou masive bidimensionale X[N,N] i Y[M,M]. Calcularea sumelor i cantitilor
De calculat suma i cantitatea elementelor de sub diagonala elementelor de sub diagonalele
secundar pentru fiecare masiv.
3.
mediei
aritmetice
ambele masive.
Snt date dou masive bidimensionale A[X,X] i B[Y,Y]. De Calcularea sumei i produsului
calculat suma i produsul elementelor deasupra diagonalei elementelor deasupra diagonalei
secundare n masive.
valorilor
maximale
unde Xmax i Xmin snt valorile elementelor maximal i minimale pentru ambele masive.
minimal din masivul X, iar Ymax i Ymin snt valorile
elementelor maximal i minimal din masivul Y
6.
cantitilor
negative
de
pe
7.
Snt date dou masive unidimensionale X[N] i Y[M]. De Calcularea sumelor rdcinilor
calculat valoarea expresiei Z= i =0 X [i ] i =0 Y [i ] .
n
8.
Snt date dou masive bidimensionale S[N,M] i Z[K,L]. Calcularea cantitilor i sumelor
Calculai cantitile i sumele elementelor divizibile la cinci elementelor divizibile la cinci din
din ambele masive.
ambele masive.
9.
Snt date dou masive bidimensionale A[N,M] i B[K,L]. De Aflarea valorilor i poziiilor
aflat valorile i poziiile elementelor minimale de pe fiecare elementelor
rnd al ambelor masive.
10.
minimale
de
pe
Snt date dou masive bidimensionale X[N,M] i Y[K,L]. Calcularea sumelor i cantitilor
De calculat valoarea expresiei Z=(Sx+Sy) (Kx*Ky), unde elementelor
Sx i Kx snt respectiv suma i cantitatea elementelor coloanele
pozitive
pare
ale
de
pe
ambelor
valorilor
masive.
valorilor
ambele masive.
14.
Sunt date dou masive unidimensionale X(K) i Y(M). De Aranjarea elementelor ambelor
aranjat n ordine invers elementele ambelor masive.
15.
ambele masive.
Snt date dou masive bidimensionale X[N,M] i Y[K,L]. Calcularea sumelor elementelor
De calculat suma elementelor maximale de pe fiecare maximale de pe fiecare coloan n
coloan a masivului X i suma elementelor maximale de pe ambele masive.
fiecare coloan a masivului Y.
16.
elementelor
Exemplu de program:
Condiia
Snt date dou masive bidimensionale X[N,N] i Y[M,M]. De Determinarea elementelor minimale
calculat produsul dintre elementul minimal de sub diagonala de sub diagonalele principale n
principal a masivului X i elementul minimal de sub diagonala ambele masive.
principal a masivului Y.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int masiv (int z[50][50], int k) {
int r,c,mini,minj,min;
min=z[1][0]; mini=1; minj=0;
for(r=1;r<k;r++)
for(c=0;c<r;c++)
if(min>z[r][c]) {min=z[r][c]; mini=r; minj=c;}
printf(\nElementul minimal de sub diagonala principala este\n);
printf(elementul [%d][%d] = %d\n,mini,minj,min);
return(min);}
Condiia
Cmpuri necesare
1.
Denumirea valutei
Cursul de schimb
schimb.
2.
Marca automobilului
grup de automobile.
a) De realizat cutarea automobilelor dup numrul de nregistrare
Numrul de nregistrare
a lor.
b) De aranjat nscrierile n ordine alfabetic dup marca
automobilelor.
3.
Numele de familie a
Anul naterii
Cantitatea de cri
mprumutate
5.
abonatului
Numele de familie A
studentului
Anul naterii
Grupa academic
Numele de familie a
studentului
Notele la trei examene
Balul mediu
Numele de familie a
persoanei
8.
Numarul de telefon.
Numele de familie a
personei
Anul naterii
Numrul paaportului.
Denumirea leciei
9.
nceputul leciei
Sfritul leciei
Numele de familie a
pacientului
Ora primirii
pacientului.
10.
Denumirea bucatelor
Preul bucatelor
11.
Denumirea crii
Secia bibliografic
Numrul raftului
raftului.
12.
Denumirea emisiunii
Ora nceperii emisiunii.
Durata emisiunii
Numele de familie a
studentului
Grupa academic
Catedra
14.
Numele de familie a
beneficiarului
Numarul de telefon
datoriei de abonat.
Mrimea datoriei de
abonat
15.
Numele de familie a
muncitorului
Postul ocupat
Vechimea n munc
munc.
16.
Denumirea staiei
Memoria RAM
Exemplu de program:
Condiia
Cmpuri necesare
De alctuit un articol cu
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct laborator {
char nume[30];
int ram; };
void main (void) {
struct laborator x[50],art,aux;
int i,n,k,z,d,max,q;
char caut[30],r,w;
FILE *f1;
// Afisarea meniului
m0: clrscr();
printf("\n\n\t * * * M E N I U * * *\n\n");
printf("\t1: Completarea bazei de date.\n");
printf("\t2: Citirea bazei de date din fisier.\n");
printf("\t3: Introducerea unei noi inscrieri.\n");
printf("\t4: Cautarea statiilor dupa denumire.\n");
printf("\t5: Aranjarea inscrierilor in descrestere.\n");
printf("\t6: Iesire.\n\t");
scanf("%d",&q);
switch(q) {
case 1: goto m1;
case 2: goto m2;
case 3: goto m3;
case 4: goto m4;
case 5: goto m5;
case 6: goto m6;
default:goto m0;}
PDF created with pdfFactory Pro trial version www.pdffactory.com
Denumirea staiei
Memoria RAM
NUMELE
| R A M (Mb) |\n");
printf("\t|---------------------|----------------|\n");
f1=fopen("baza.txt","r");i=0;
while ( fread(&x[i],sizeof(x[i]),1,f1)==1){
printf("\t|%21s|%16d|\n",x[i].nume,x[i].ram);i++;
printf("\t|---------------------|----------------|\n");}
fclose(f1);n=i;
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;
if((w=='y')||(w=='Y')) {
printf("\nCulege numele statiei ");
scanf("%s",aux.nume);
printf("\nCulege volumul memoriei RAM ");
scanf("%d",&aux.ram);
f1=fopen("baza.txt","a");
fwrite(&aux,sizeof(aux),1,f1);
fclose(f1);
printf("\nInscrierea a fost adaogata la sfirsitul fisierului\n");
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;}
NUMELE
| R A M (Mb) |\n");
printf("\t|---------------------|----------------|\n");
k=0;
for(i=0;i<n;i++) {
if(strcmp(x[i].nume,caut)==0){ k++;
printf("\t|%21s|%16d|\n",x[i].nume,x[i].ram);
printf("\t|---------------------|----------------|\n");}}
if(k==0) printf("\nNu exista statie cu asa nume.\n");
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;
// 5: Aranjarea inscrierilor
m5: f1=fopen("baza.txt","r");i=0;
while ( fread(&x[i],sizeof(x[i]),1,f1)==1){i++;};
n=i; fclose(f1);
for(i=0;i<n;i++) {
max=x[i].ram; z=i;
PDF created with pdfFactory Pro trial version www.pdffactory.com
for(d=i;d<n;d++) {
if (max<x[d].ram) {max=x[d].ram; z=d;}}
art=x[i]; x[i]=x[z]; x[z]=art;}
clrscr();
printf("\n\n\t ***** Baza aranjata este *****\n\n");
printf("\t----------------------------------------\n");
printf("\t|
NUMELE
| R A M (Mb) |\n");
printf("\t|---------------------|----------------|\n");
for(i=0;i<n;i++) {
printf("\t|%21s|%16d|\n",x[i].nume,x[i].ram);
printf("\t|---------------------|----------------|\n");}
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;
// 6: Iesire
m6: clrscr();
printf("\nPentru Iesire culegeti orice tasta ..."); getch();}
Lucrarea de laborator N 9
Tema: Meniuri in C++
Condiiile din fiecare variant includ cte un masiv bidimensional x[n,n] care conine o arie haurat
n mod specific pentru fiecare variant n parte. Rezolvarea problemei se reduce la prelucrarea
elementelor din ariile haurat i nehaurat, conform condiiilor variantei.
Primul pas n rezolvarea sarcinii va fi afiarea condiiilor problemei la monitor n mod program.
Completarea masivului, adic atribuirea valorilor elementelor masivului va fi efectuat manual sau
automat la alegerea utilizatorului.
Dup completarea masivului, acesta va fi afiat ntr-o form comod de citit, adic elementele
fiind ordonate pe linii i coloane. Mai mult ca att, masivul va fi afiat n dou culori: elementele ariei
haurate ntr-o culoare, iar elementele ariei nehaurate n alt culoare.
Apoi urmeaz rezolvarea fiecrui din cele trei puncte ale sarcinei. Pentru acest scop vor fi create
cteva subprograme, fiecare din ele rezolvnd o subsarcin concret. Cantitatea de subprograme va
depinde de condiiile problemei i dorina executorului.
Dup rezolvarea celor trei puncte ale sarcinei i afiarea rezultatelor primite masivul final va fi
afiat la monitor.
Cu scopul de a face mai comod utilizarea programului, n cadrul lui va fi creat un meniu, cu
ajutorul crui va fi simplu de trecut dintr-o etap a rezolvrii n alta. n aa fel programul trebuie s
conin urmtoarele puncte de meniu:
1) afiarea condiiilor problemei;
PDF created with pdfFactory Pro trial version www.pdffactory.com
Condiia
Este dat masivul x[n][n].
a)De aflat media aritmetic a elementelor impare din aria haurat.
b)De aflat poziia i cantitatea elementelor din masiv egale cu cifra
propus de utilizator.
c)Daca element egal cu cifra data nu exist n masiv, de nscris ntrun fiier un comentariu respectiv i de generat un semnal audio.
2.
3.
Masivul
4.
5.
6.
7.
8.
9.
Maximal
din
portiunea
hasurata
%d",rmax1,cmax1,y[rmax1][cmax1]);
PDF created with pdfFactory Pro trial version www.pdffactory.com
de
sus
este
x[%d][%d]
gotoxy(10,wherey()+1);
cprintf("Elementul
Maximal
din
portiunea
hasurata
de
%d",rmax2,cmax2,y[rmax2][cmax2]);
gotoxy(10,wherey()+2);
cprintf("Pentru iesire in meniu culegeti <ENTER>");
getch(); }
//calcularea sumei elementelor pare si inscrierea ei in fisier
void fisier (int y[50][50],int m) {
int i,j,k,s=0; FILE *f;
k=floor(float(m)/float(2));
//portiunea de sus a ariei hasurate
for(i=0;i<k;i++) {
for(j=i;j<(m-i);j++) {
if (fmod(y[i][j],2)==0) s+=y[i][j]; } }
//portiunea de jos a ariei hasurate.
for(i=k;i<m;i++) {
for(j=(m-i-1);j<=i;j++) {
if (fmod(y[i][j],2)==0) s+=y[i][j]; } }
if((f=fopen("c:/suma.txt","w"))==NULL) {
clrscr();gotoxy(15,2);textcolor(15);
cprintf("Fisierul nu poate fi deschis"); goto exit;}
fprintf(f,"Suma elementelor pare din aria hasurata S=%d",s); fclose(f);
clrscr();gotoxy(15,2);textcolor(15);
cprintf("In fisierul c:\\suma.txt au fost inscrise urmatoarele date:");
textcolor(11);gotoxy(15,wherey()+2);
cprintf("Suma elementelor pare din aria hasurata S=%d",s);
exit: textcolor(15);gotoxy(15,wherey()+2);
cprintf("Pentru iesire in meniu culegeti <ENTER>"); getch(); }
// aranjarea elementelor ariei hasurate in ordine crescatoare
void aranjare (int(*k)[50],int z) {
int i,j,g,c,min,aux,w;
w=floor(float(z)/float(2));
//aranjare in ordine crescatoare portiunea de sus
for(i=0;i<w;i++) {
for(j=i;j<(z-i);j++) {
min=*(k[i]+j);c=j;
for(g=j;g<(z-i);g++) {
if (*(k[i]+g)<min) {min=*(k[i]+g);c=g;}}
aux=*(k[i]+j); *(k[i]+j)=*(k[i]+c); *(k[i]+c)=aux;}}
PDF created with pdfFactory Pro trial version www.pdffactory.com
jos
este
x[%d][%d]
switch (w) {
case '1': goto m1;
case '2': goto m2;
case '3': goto m3;
case '4': goto m4;
case '5': goto m5;
case '6': goto m6;
case '7': goto m7;
case '8': goto m8;
case '9': goto m9;
default : goto m0;}
m1: conditii(); goto m0;
m2: //completare manuala a masivului
clrscr(); z=1; gotoxy(15,2); textcolor(15);
cprintf("Culege marimea masivului x N=");
scanf("%d",&n); gotoxy(15,3);
cprintf("Culege elementele masivului x[%d][%d]\n",n,n);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
gotoxy(15+(j*4),5+i);
scanf("%3d",&x[i][j]); } }
textcolor(15);gotoxy(10,wherey()+1);
cprintf("Pentru iesire in meniu culegeti <ENTER>"); getch(); goto m0;
m3: //completare automata a masivului
clrscr(); z=1; gotoxy(15,2); textcolor(15);
cprintf("Culege marimea masivului x N=");
scanf("%d",&n); randomize();
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
x[i][j]=random(100)-50; }}
// afisarea masivului initial
gotoxy(15,4); textcolor(15);
cprintf("Masivul initial x[%d][%d] este;\n",n,n);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
textcolor(15); gotoxy(15+(j*4),6+i);
cprintf("%3d ",x[i][j]); } }
gotoxy(10,wherey()+2);
cprintf("Pentru iesire in meniu culegeti <ENTER>");
PDF created with pdfFactory Pro trial version www.pdffactory.com
x + a
1.5 cos 2 x
C = ln x + 7
;D=
;
x+b
3tgx
2
W = a / x + x + 1 x = 1.2
2
(a + bx ) / x + 1 x > 1.2
Pentru rezolvarea acestor probleme vom folosi urmtoarele componente:
Label;
Edit;
Panel;
Button;
MainMenu (component invizibil) care este folosit pentru a crea meniul formei.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Fiecare problem va fi creat n interiorul unei componente Panel, adic pe Panel1 vor fi
amplasate componentele pentru problema 1 i respectiv pe Panel2 vor fi amplasate componentele pentru
problema 2 dup cum se vede n figura de mai jos.
Pentru a efectua rezolvarea acestor probleme facem dublu clic pe componenta Rezolvare (care este
un Button) i scriem n acolade codul programului:
Pentru prima problem
float a,b,x,c,d;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
x=StrToFloat(Edit3->Text);
c=log(x+7*sqrt(abs(x+a)/abs(x+b)));
d=1.5*pow(cos(x),2)/3*tan(x);
Panel3->Caption="C="+FloatToStr(c);
Panel4->Caption="D="+FloatToStr(d);
Pentru a doua problem
float a,b,c,x,W;
a=StrToFloat(Edit4->Text);
b=StrToFloat(Edit5->Text);
c=StrToFloat(Edit6->Text);
x=StrToFloat(Edit7->Text);
if(x<1.2)W=a*pow(x,2)+b*x+c;
else if(x=1.2)W=a/x+sqrt(pow(x,2)+1);
else W=(a+b*x)/sqrt(pow(x,2)+1);
Panel5->Caption="W="+FloatToStr(W);
Dup compilare (tasta F9) iniial va aprea forma din fig.4, trecerea de la o problem la alta se va
efectua din meniul File fig.5.
Fig.5
Formula de calcul
x2
Y=sin 3 ( x 2 + a) 2 x / b ; z= + cos( x + b) 3
a
2
3
sin x
Z=
1 + m sin x
2
6
7
s=e ax x + 1 + e bx x + 1.5
cm ln mx ;
4
5
Y=
x+ x+a
x | xb|
a 2 x + b x cos(a + b) x
; r= x 2 + b b 2 sin 3 ( x + a ) / x
x +1
Z= ax sin 2 x + e 2 x ( x + b) ; w=cos 2 x 3 x / a 2 + b 2
U=
a 2 x + e x cos bx
; f=e 2 x ln( a + x) b 3 x ln( b x )
x
bx e sin bx + 1
2 cos( x pi / 6)
A=
1 / 2 + sin 2 y
z2
B=1+
3 + z2 /5
Nota
A=|x y / x 3 y / x | ;
y z /( y x)
1 + ( y x) 2
x2 x3 x4
S=1+x+
+
+
; e=x(sinx 3 + cos 2 y )
2
3
4
bt
Y=e sin( at + b) | bt + a | ; s=bsin(at 2 cos 2t ) 1
10
11
12
f=(y-x)
W= x 2 + b b 2 sin 3 ( x + a ) / x ; y=cos 2 x 3 x / a 2 + b 2
bx 2 a
;
e ax 1
s= xb / a + cos 2 ( x + b) 3
S=x 3 tg 2 ( x + b) 2 + a / x + b ;
13
R=x 2 ( x + 1) / b sin 2 ( x + a ) ;
14
15
Y=b tg 2 x
a
; d=a e a cos(bx / a )
sin ( x / a)
C=ln (x+7
16
Q=
1.5 cos 2 x
|x+a|
) ; a=
3tgx
| x+b|
Functia
Conditia
var
Functia
Conditia
x3 x a
W= x sin ax
e ax cos ax
x>a
x 2 7 / x 2
Q= ax + 7 x
ln( x + 7 | x + a |
X<1.4
bx ln bx
Q= 1
bx + ln bx
Bx<1
1.5 cos 2 x
1.8ax
Y=
2
( x 2) + 6
3tgx
X<1
X=1
sin x ln x
Y= 2
cos x
x>3.5
ln( x + 1)
F= 2
sin | ax |
(ln x + x ) / x + t
Z= x + t + 1 / x
cos x + t sin 2 x
x=a
x<a
10
Bx=1
Bx>1
11
x 3.5
x>1
12
X1
X<0.5
X=0.5
x>0.5
13
at 2 + b sin t + 1
W= at + b
at 2 cos t + 1
at ln t
Y= 1
e at cos bt
x 7 x
Y= ax 3 + 7 x
ln( x + 7 x )
X=1.4
X>1.4
1<x<2
x>2
T<0.1
T=0.1
t>0.1
1 t 2
t<1
t>2
X<1.3
X=1.3
x>1.3
a ln x + 3 | x |
Y=
2a cos x + 3 x 2
x1
a
2
i + bi + c
W= i
ai + bi
15
I<4
4 i 6
i>6
i2 + 1
a
sin(
)
n
Z=
cos(i + 1 )
14
x>1
Sin
i +1
f0
n
16
Sin
i +1
p0
n
2
ax 2 + bx + c
W= a / x + x 2 + 1
2
(a + bx ) / x + 1
a+b
e x + cos x
S= (a + b) /( x + 1)
e + sin x
e x e x
x(
Y= 4
2
x + 3x + 2
10
X<1.2
X=1.2
X>1.2
X<2.8
2.8 x <6
x 6
X<1.5
X=1.5
x>1.5
Componentele
MainMenu, Memo
MainMenu, CheckBox
MainMenu, RadioButton
MainMenu, ListBox
MainMenu, ComboBox
MainMenu, GroupBox
MainMenu, RadioGroup
10
11
12
MainMenu, BitBtn
13
14
MainMenu, TabControl
15
MainMenu, TrackBar
16
MainMenu, ProgressBar
17
18
MainMenu, DateTimePicker
19
MainMenu, StatusBar
20
MainMenu, OpenDialog
21
MainMenu, SaveDialog
22
MainMenu, OpenPictureDialog
23
MainMenu, SavePictureDialog
Exemplu
Fig.1 Compenentele
Listingul Programului
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma link "CGRID"
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm1::ColorBox1Change(TObject *Sender)
{
if(RadioButton1->Checked==true)Panel1->Color=ColorBox1->Selected;
if(RadioButton2->Checked==true)Panel2->Color=ColorBox1->Selected;
if(RadioButton3->Checked==true)Panel3->Color=ColorBox1->Selected;
if(RadioButton4->Checked==true)Panel4->Color=ColorBox1->Selected;
if(RadioButton5->Checked==true)Panel5->Color=ColorBox1->Selected;
if(RadioButton6->Checked==true)Panel6->Color=ColorBox1->Selected;
}
//--------------------------------------------------------------------------void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
if(RadioButton1->Checked==true)Panel1->Caption=ComboBox1->Text;
if(RadioButton2->Checked==true)Panel2->Caption=ComboBox1->Text;
if(RadioButton3->Checked==true)Panel3->Caption=ComboBox1->Text;
if(RadioButton4->Checked==true)Panel4->Caption=ComboBox1->Text;
if(RadioButton5->Checked==true)Panel5->Caption=ComboBox1->Text;
if(RadioButton6->Checked==true)Panel6->Caption=ComboBox1->Text;
}
//--------------------------------------------------------------------------void __fastcall TForm1::Open1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
else
Memo1->Clear();
Memo1->Alignment=taCenter;
}
//--------------------------------------------------------------------------void __fastcall TForm1::Exit1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Fig.2 Rezultatul
REFERAT
La disciplina Programare
Lucrarea de laborator nr. __
Tema: _______________
__ _______
S. Istrati
Chisinu ___
b) Coninutul raportului:
1) Varianta
2) Condiiile problemei
3) Schema logic a algoritmului
4) Listingul programului
5) Descrierea programului (algoritm, variabile, instruciuni, funcii etc.)
6) Descrierea i analiza rezultatelor
7) Concluzii.