Documente Academic
Documente Profesional
Documente Cultură
Moldova
RAPORT
Chişinău – 20XX
LUCRAREA DE LABORATOR Nr. 5 ,6
Tema: Tehnicile prelucrării tablourilor, utilizînd subprograme
Scopul lucrării: însuşirea tehnicilor de algoritmizare şi programare
cu subprograme în prelucrarea tablourilor uni- și bidimensionale în
C.
Obiectivele temei :
1. Aprofundarea cunoştinţelor în limbajul şi mediul TurboC şi
perfecţionarea tehnicii de programare cu
subprograme în prelucrarea tablourilor uni- și bidimensionale.
2. Dezvoltarea procedeelor de algoritmizare şi progamare prin
descompunerea problemei în module
autonome care, apoi, vor fi reprezentate prin module de program
pentru prelucrarea tablourilor uni- și
bidimensionale în C după principii comune cu apeluri multiple,
analizând soluţiile stereotipe şi cele
eficiente.
3. Însuşirea tehnicilor eficiente de parcurgere, căutare, schimbare
şi ordonare a structurilor şi calculul
conform cunoştinţelor obţinute din matematică şi în baza lucrărilor
precedente într-un program complex,
alcătuit după principiile top-down.
4. Llab. 5 se analizează testele din Anexa 2,3. și se preia variantele
problemelor din Llab. 3 și se transformă
în programe cu funcții proprii după stil vechi și nou.
5. Llab. 6 se preia variantele problemelor din Llab. 4 și se
transformă în programe cu funcții proprii definite ca “proceduri” în
C cu transmiterea argumentelor funcțiilor în câteva moduri.
Totodată se aplică și la soluționarea problemelor din Anexa 4.
Ex 4
Greșeală în program nu se observă. Schimbări nu sunt necesare
deoarece nu este eroare.
#include <stdio.h>
char *val(int x){ char str[20];
printf(str, "%d", x);
return str; }
void main(){ int x = 5;
char *s = val(x);
printf("The values:\n");
printf("%d %s\n", x, s); }
Ex 6
Programul afișează valori diferite de puncta, și mereu le adaugă
până ce depășești limita.
#include <stdio.h>
main(){ int sum = 0, card; char answer[36];
srand( getpid());
do{ printf( "Aveti %d puncte. Inca?", sum);
if( *gets(answer) == 'n' ) break;
void main () {
int a[24]={5,10,15,10,5},n=5,k;
for (k=0;k<n;k++)
bar (a[k]);
}
Ex 9
Programul afișează valorile 1.0 și 4.0
#include <stdio.h>
Ex 13
Programul calculează Vectorul și Vectorul Ordonat al unui număr
introdus.
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int a[500],n;
void main()
{
system("cls");
printf("n=");
scanf("%d",&n);
cit(n,a);
printf("\nVectorul este\n\n");
afis(n,a);
printf("\nVectorul ordonat este\n\n");
fo(n,a);
getch();
}
Anexa 3
P3.2
#include <stdio.h>
int checkPrime(int n);
int main() {
int n, i, flag = 0;
printf("Introduceti un numar : ");
scanf("%d", &n);
for (i = 2; i <= n / 2; ++i) {
if (checkPrime(i) == 1) {
if (checkPrime(n - i) == 1) {
printf("%d = %d + %d\n", n, i, n - i);
flag = 1;
}
}
}
if (flag == 0)
printf("Numarul %d nu se poate calcula ca suma a doua
numere prime", n);
return 0;
}
int checkPrime(int n) {
int i, isPrime = 1;
for (i = 2; i <= n / 2; ++i) {
if (n % i == 0) {
isPrime = 0;
break;
}
}
return isPrime;
}
P3.4
#include <stdio.h>
int find_maximum(int[], int);
int main() {
int c, array[100], size, location, maximum;
return index;
}
P3.6
Prin Recursie :
#include<stdio.h>
int recSearch(int arr[], int l, int r, int x)
{
if (r < l)
return -1;
if (arr[l] == x)
return l;
if (arr[r] == x)
return r;
return recSearch(arr, l+1, r-1, x);
}
int main()
{
int arr[] = {12, 34, 54, 2, 3}, i;
int n = sizeof(arr)/sizeof(arr[0]);
int x = 3;
int index = recSearch(arr, 0, n-1, x);
if (index != -1)
printf("Elementul %d este prezent in vectorul %d", x, index);
else
printf("Elementul %d nu este prezent", x);
return 0;
}
Prin metoda Iterativă :
#include<stdio.h>
int iterativeBsearch(int A[], int size, int element);
int main() {
int A[] = {0,12,6,12,12,18,34,45,55,99};
int n=55;
printf("Elementul %d este prezent in vectorul %d
\n",n,iterativeBsearch(A,10,n));
return 0;
}
int iterativeBsearch(int A[], int size, int element) {
int start = 0;
int end = size-1;
while(start<=end) {
int mid = (start+end)/2;
if( A[mid] == element) {
return mid;
} else if( element < A[mid] ) {
end = mid-1;
} else {
start = mid+1;
}
}
return -1;
}
P3.15
#include <stdio.h>
int main() {
int first[10][10], second[10][10], result[10][10], r1, c1, r2, c2;
printf("Introduceti randurile si coloana pentru prima matrice: ");
scanf("%d %d", &r1, &c1);
printf("Introduceti randurile si coloana pentru a doua matrice: ");
scanf("%d %d", &r2, &c2);
return 0;
}
Anexa 4
Ex 5
#include <stdio.h>
int main()
{
int m, n, c, d, matrix[10][10], transpose[10][10];
Ex 8
# include <stdio.h>
# define max 10
int *maxmin(int ar[], int v);
int main()
{
int arr[max];
int n,i, *p;
printf("Introduceti nr. de valori : ");
scanf("%d",&n);
printf("Introduceti %d valori\n", n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
p=maxmin(arr,n);
printf("Minimul este: %d\n",*p++);
printf("Maximul este %d\n",*p);
}
int *maxmin(int arra1[], int v)
{
int i;
static int result_mm[2];
result_mm[0]=arra1[0];
result_mm[1]=arra1[0];
for (i=1;i<v;i++)
{
if(result_mm[0] > arra1[i])
result_mm[0]=arra1[i];
if(result_mm[1]< arra1[i])
result_mm[1]= arra1[i];
}
return result_mm;
}
Ex 10
#include <stdio.h>
int checkPrimeNumber(int n);
int main() {
int n1, n2, i, flag;
printf("Introduceti doua intervale : ");
scanf("%d %d", &n1, &n2);
printf("Numerele prime dintre %d si %d sunt : \n\n", n1, n2);
for (i = n1 + 1; i < n2; ++i) {
flag = checkPrimeNumber(i);
if (flag == 1)
printf("%d ", i);
}
return 0;
}
int checkPrimeNumber(int n) {
int j, flag = 1;
for (j = 2; j <= n / 2; ++j) {
if (n % j == 0) {
flag = 0;
break;
}
}
return flag;
}