Sunteți pe pagina 1din 4

Problema 2.

Modificarea masivelor unidimensionale

1. Scopul.
1.1Obţinerea deprinderii practice de elaborare şi depanare a programelor ciclice.
1.2Studierea şi utilizarea instrucţiunilor de bază ale limbajului pentru prelucrarea
şi modificarea masivelor unidimensionale.
2. Cunoştinţe necesare.
2.1Descrierea masivelor unidimensionale.
2.2Sintaxa şi modul de utilizare a instrucţiunii ciclice FOR.
3. Conţinutul temei.
3.1Studierea definirii masivelor unidimensionale şi folosirii indicelui de ciclu i.
3.2Însuşirea metodelor de introducere şi afişare a masivelor unidimensionale.
3.3Însuşirea tehnicilor şi metodelor de programare la prelucrarea masivelor prin
aranjarea şi înlocuirea elementelor masivului.
3.4Elaborarea algoritmului de soluţionare a problemei.
3.5Alcătuirea şi depanarea programului.
4. Conţinutul raportului.
4.1Tema şi scopul lucrării.
4.2Condiţia problemei.
4.3Schema-bloc a algoritmului.
4.4Listingul programului.
4.5Rezultatul calculelor cu analiza corectitudinii.
4.6Descrierea instrucţiunilor principale folosite în program.
4.7Concluzii.
5. Exemplu de program.
Este dat un masiv unidimensional X cu n elemente. Aranjaţi elementele primei
jumătăţi din masiv în ordine descrescătoare. Afişaţi masivul rezultant ca răspuns.
Schema-bloc a programului:
Listingul programului:
a) în limbajul Pascal

program masiv1;
var x:array [1..20] of integer;
n,k,i,j,max,aux,r:integer;
begin writeln('Culege mărimea masivului <=20');
readln(n);
for i:=1 to n do begin
writeln('culege elementul ',i); readln(x[i]); end;
writeln('Masivul iniţial este:');
for i:=1 to n do write(x[i],' ');
if odd(n)=false then k:=n div 2 else k:=(n div 2)+1;
for j:=1 to k do begin max:=x[j];
for i:=j+1 to k do begin
if x[i]>max then begin max:=x[i]; r:=i;
aux:=x[j]; x[j]:=max; x[r]:=aux; end;
end; end; writeln;
writeln('Masivul final este:');
for i:=1 to n do write(x[i],' ');
readln
end.
b) în limbajul C++

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main(void) {
int x[20],n,k,i,j,max,aux,r;
printf("\nCulege mărimea masivului n<=20\n");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Culege elementul %d\n",i);
scanf("%d",&x[i]);}
printf("Masivul iniţial este:\n");
for(i=0;i<n;i++){
printf("%d ",x[i]);}
if (fmod(n,2)==0) k=floor(n/2); else k=floor(n/2)+1;
for(j=0;j<k;j++){ max=x[j];
for(i=j+1;i<k;i++){
if (x[i]>max) {max=x[i]; r=i; aux=x[j]; x[j]=max; x[r]=aux;}
}}; printf("\nMasivul final este:\n");
for(i=0;i<n;i++){
printf("%d ",x[i]);}
getch();
}

6. Variante.
Este dat un masiv unidimensional cu n elemente:

Var Condiţia Masiv


1. Aranjaţi elementele masivului în ordine inversă. X(N)
2. Echivalaţi elementele negative cu modulul lor. Z(N)
3. Aranjaţi elementele primei jumătăţi a masivului în ordine
inversă. A(N)
4. Elementele divizibile la 4 de înlocuit cu produsul tuturor
elementelor din masiv. S(N)
5. Aranjaţi elementele masivului în ordine crescătoare. Y(N)
6. Inlocuiţi elementele negative cu suma tuturor R(N)
elementelor din masiv.
7. Aranjaţi elementele jumătăţii a doua a masivului X(N)
în ordine crescătoare.
8. Schimbaţi cu locul elementele primei jumătăţi a masivului
cu elementele jumătăţii a doua. X(N)
9. Aranjaţi elementele jumătăţii a doua din masiv în ordine K(N)
descrescătoare.
10. Aranjaţi în ordine inversă elementele jumătăţii a doua. M(N)
11. Schimbaţi cu locul elementele: 1 cu 2; 3 cu 4; 5 cu 6 … B(N)
12. Aranjaţi în ordine crescătoare elementele primei jumătăţi. N(N)
13. Aranjaţi pe primele locuri ale masivului elementele
negative, apoi – cele pozitive . Z(N)
14. Aranjaţi elementele masivului în ordine descrescătoare. D(N)
15. Elementele negative echivalaţi cu 0,
iar cele pozitive – cu 1. P(N)
16. Aranjaţi elementele primei jumătăţi din masiv în ordine
descrescătoare. Z(N)

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