0% au considerat acest document util (0 voturi)
18 vizualizări14 pagini

Probleme BPC: Do - For I 0, n-1,1 S S + V (I) End - Do

Documentul prezintă o serie de probleme de programare legate de vectori și permutări. Sunt descrise algoritmi pentru calcularea sumei, maximului, sortarea, compactarea și alte operații asupra elementelor din vectori. De asemenea, sunt prezentate probleme privind permutările, determinarea dacă o permutare este identică, transpoziție sau inversă.

Încărcat de

Ana Cobuz
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
18 vizualizări14 pagini

Probleme BPC: Do - For I 0, n-1,1 S S + V (I) End - Do

Documentul prezintă o serie de probleme de programare legate de vectori și permutări. Sunt descrise algoritmi pentru calcularea sumei, maximului, sortarea, compactarea și alte operații asupra elementelor din vectori. De asemenea, sunt prezentate probleme privind permutările, determinarea dacă o permutare este identică, transpoziție sau inversă.

Încărcat de

Ana Cobuz
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

PROBLEME BPC

1) CALCULAREA SUMEI ELEMENTETOR UNUI VECTOR REAL INTRODUS DE


LA TASTATURA
Intreg i, n;

Real v[100], s;

Read(n);
Do_for i=0,n-1,1 Read(v[i]); End_do; ///citire vector

S=0; //initializare suma cu 0


Do_for i=0,n-1,1

S = s + v[i];
End_do;

2) Suma elementelor impare ale unui vector

Real v[100]; Intreg n, i;


Read(n); si citim si vectorul cu do for si end do;
S=0; i=1;
While ( i < n )

Do { s = s + v[i];
i=i+2; } end while;

write (“Suma este: “, s); Stop;

-alta variante: citirea se face la fel

S=0;

Do _for i=1,n-1,2

S=s+ v[i];
End_do;
3) Suma elementelor strict positive ale unui vector

Real v[100],s; Intreg n, i;

Se citeste n si vectorul v;
S=0;

Do_for i=0,n-1,1
If ( v[i] >0 ) then s = s+ v[i];

End if; end do;

If ( s>0) then write suma este: , s; else write “suma nu are elemente positive”;

End if; stop;

4) Determinarea primei aparitii a unei valori dintr-un vector neordonat


Real v[100], a; Intreg I, n;
Read (n) si se citeste si vectorul cu do_for; read (a);
I=0;

While (( i<n) && (v[i]!= a))


Do i = i+1;

End while;
If ( i == n) then write (“val cautata nu exista in vector”)
Else write (“prima aparitie a lui “a” este pe pozitia: “, i), end if , stop;

5) Interschimmbarea elementelor egal departate de capetele unui vector si


afisarea vectorului obtinut

Intreg x[50], i, aux, n; Read(n) si vectorul;

Do_for i=0,(n/2)-1,1
{ aux = x[i];

x[i] = x(n-i-1);

x(n-i-1) = aux; }
end_do;

afisare: do_for i=0, n-1, 1 write (x[i]); end do, stop;


6) Produsul scalar dintre 2 vectori de dimensiunea n

Real x[100], y[100], ps;


Intreg i, n;

Read(n);

Do_for i=0, n-1, 1


Read (x[i]);

End do; si la fel se citeste si vectorul y


Ps=0;

Do_for i=0,n-1, 1
Ps = ps + x[i]* y[i];
End_do;

Write (ps);
Stop;

7) Produsul vectorial dintre 2 vectori de dimensiunea n


Real v[50], y[50], pv[50];
Intreg i, n;

Read(n); si se citesc si cei 2 vectori cu do_for;


Do_for i=0, n-1, 1

Pv = x[i]*y[i]
End_do;

Afisarea se face cu do_for si se afiseaza pv + stop;

8) Determinarea elementului maxim si memorarea aparitiilor sale

Real x[100], max; Intreg poz[100], I, n, k;

Read(n) si se citeste si vectorul cu do for


Max = x[0]; //pp ca primul element e maximul din vector

Do_for i=1, n-1, 1

If ( x[i] > max) then max = x[i] //parcurgem vectorul si comparam


End if; end do;

// construim vectorul cu pozitiile pe care se afla maxim


K=0;

Do for i=0, n-1, 1

If ( x[i] == max) then { poz[k] = i; k = k+1; }

End if; end do;


Write “maximult este: “, max “ pe pozitiile: “ ;

Do for I =0, k-1, 1;


write (poz[i]);
end do;stop;

1) Sortarea interschimbare

Real x[100], aux; Intreg , i, p;


Read(n); + citire vector cu do for

P=1; //p = contor


While (p==i) do { p=0;

do_for i=0, n-2, 1

If (x[i] > x[i+1]) //comparam primul element cu al doilea

Then { aux = x[i]; //stocam primul element in auxiliar

X[i] = x[i+1]; //primul element il egalam cu al doilea pt a-i lua locul


X[i+1] = aux; //stocam al doilea element in aux

P=1;

End_if; end_do; } end_while;


Write (“Vectorul sortat este: “); si se parcurge vectorul pt a se scrie;

End do, stop;


2) Sortarea prin selectie

Real x[100], aux; Intreg i, j, n;


Do_for i=0, n-1,1

Read(x[i]); end_do;
Do_for i=0, n-2, 1

Do_for j = i+1, n-1, 1 //atribuim valoarea 2 al vectorului x in j

If ( x[i] > x[j] ) then { aux = x[i]; x[i] = x[j]; x[j] = aux; } //comparam si atribuim

End_ if, end_do, end_do;


Write (“vectorul sortat este: ”);

Do_for i=0, n-1, 1


Scrie(x[i]); enddo Stop;

3) Progresie aritmetica

Intreg n, i; Real x[100];


Read (“Scrie dimensiunea vectorului n = “);
Citeste(n);
If (n<3) then write (“Vectorul are putine elemente pt a verifica progresia aritm”)’

Else { do_for i=0, n-1,1


Citeste (x[i]);

endDo;

i=1;

while ( (i<n-1) && (x[i] ==(x[i-1] + x[i+1])/2)) do i = i+1;

endwhile;
if (I == n-1) then scrie (“Elementele sunt in progresie aritmetica”);

else scrie (“Elementele nu sunt in progresie aritmetica”);

endif; STOP
4) Fie un vector, sa se scrie program care insereaza media arit a 2 valori
consecutive

Intreg n, i, j, k; Reak x[100];


Citeste (n); si se citeste si vectorul cu do for;
k=n; //dimensiunea vector dupa adaugarea mediei

i=0;

while (i<k-1)

do { do_For (j = k, j > i+1, j = j-1)

x[j] = x[j-1];
end do;
x[j] = (x[i] +x[i+1])/2;

I = i+2;
K=k+1; }

End while;

Se scrie vectorul parcurgandu- cu do_for; end do; stop;

5) Cel mai mare divizor comun din vector nr nenule naturale

Intreg d, imp, r, x[50], n, i;

Citeste (n) si se parcuge si vectorul cu do for;


D=x[0]; R=0; I=1;

While ( (r!=1) && (i<n) )

Do { imp = x[i] ; do {
R =d% imp; d= imp; Imp = r; }

Until (r<=1);
Enddo;

I = i+1; }

Endwhile;

If ( r!= 1) then scrie (“CMMDC = ”, d)


Else scrie (“Numerele nu sunt prime intre ele”);

End if; stop;

6) Amplitudinea unui sir de nr din vector real

Intreg i, n;

Real x[10], max, min;

Citeste (n); si se citeste si x[i] cu do for;

Min = x[0]; max = x[0];


Do_for i=0, n-1, 1

If ( x[i] < min) then min = x[i];


Else { if ( x[i] > max) then max = x[i];
End if; endif; enddo;
Scrie (“amplitudinea este:” max - min);

Stop;

7) Sa se calculeze produsul numerelor perfecte dintr un vector cu numere int

Intreg n, i, j, x[100], s, p, nr;


Citeste n si vectorul cu do for;
P=1; >>> p = produs si trebuie intilizat cu 1

Nr =0; >>>> nr este sirul de numere perfecte

Do_for i =0, n-1,1


{ s=0;

Do_for j =1, x[i]/2, 1

If (x[i] % j == 0) then s = s + j; endif;


Enddo;

If ( s==x[i] ) then { p = p* x[i]; nr = nr+1; }

Endif; } enddo;
If (nr!=0) then scrie (“prousul nr perfc este”, p);

Else scrie nu exista nr in sir;

End if; stop;

8) Compactarea unui vector


Intreg n, i, j, k, p; Real x[100];

Scrie (“Introduceti dimensiunea vectorului n=”);

Citeste (n); si se citeste si x cu do for;

K = -1;
Do_for i=0, n-1, 1

Do for j = i+1, n-1,1


If (x[i] ==x[j]) then { do for k = j, n-2, 1
X[k] = x[k+1]; enddo;
N=n-1 si j = j-1 }

endif; enddo; enddo;


Scrierea se parcurge cu do_for si se scrie vectorul x[i]; STOP

9) Anagrama
Intreg n, m, i, j, ok;
Real x[100], y[100], aux;
Write “dimensiunea primul sir”;

Read(n); si apoi se citeste si vectorul x;

La fel se face si cu vectorul y si se citeste m elemente;


Ok=1; //contor

If (n!=m) then ok =0;

Else { do for i =0, n-2, 1


Do for j = i+1, n-1, 1

{ if x[i] > x[j] then { aux = x[i]; x[i] = x[j]; x[j] = aux; } Endif;

If ( y[i] > y[j] ) then { aux =y[i]; y[i] = y[j]; y[j] = aux; } end if; } end do; enddo;
Do for i=0, n-1, 1

If x[i]!= y[i]) then ok = 0; end if; end do; } end if;

If (!ok) then scrie :cele doua siruri nu sunt anagrame; else scrie invers;
Endif, stop;

10) NOTE STUDENT

Intreg i, k, n;

Real note[5], total, min, max, medie;

Write “introduceti nr de note:”; read(n);


write "introduceti notele:\n” si se citeste vectorul note cu do for;

total = 0; min = note[0]; max = note [0];


do for i=0, n-1, 1
if { (note[0] > max) then max = note[i]; } endif; //det max prin comparare si atribuire
if { (note[0] <min) then min = note[i]; } endif; //det min prin comparare si atribuire

enddo;
k=0;

do for i=0, n-1, 1


if ((note[i]!= max) && (note[i]!=min))
then { total = total + note[i]; //se calculeaza numarul de note ca suma adica punctaj
k = k+1; } endif; enddo;
if (k!=0) then { media = total/k;

write (“punctajul este: “, media); } endif; stop;

11) PERMUTARI

Intreg n, I, a[100], b[100], c[100];


Write “introduceti gradul permutarilor: “ ); Read(n);

Write “introduceti elementele primei permutari:\n”; si se citeste vectorul a, la fel si b cu do


for;

Algortim: do for i=0, n-1, 1


c[i] = a[b[i]-1]; end do;

write rezultatul compunerii permutarilor este:\n

do for i=0, n-1, 1


write (i+1);

end do;
write (“\n”);

do for i=0, n-1, 1

write c[i]; end do; stop;

12) PERMUTARE IDENTICA

Intreg n, I, a[100];
Write “introduceti gradul permutarilor:”;
Read (n);

Write “elementele permutarii:\n”;


Do for i=0, n-1, 1

Read a[i]; enddo;


Do for ( i=0, i < n && a[i] == i+1,1)
End do;
If ( i==n ) then scrie (“Permutare identica.\n”);
Else scrie (“Nu este permutare identica.\n”);

Endif;

Do for i=0, n-1, 1


Write(i+1); end do;

Write (“\n”);

Do for i=0, n-1, 1


Write (a[i]);

End do; stop;


13) PERMUTARE TRANSPOZITIE

Intreg n, i, a[100], dif, poz;


Write (“Introduceti gradul permutarii: ”); read(n); si apoi se citeste si vectorul a

Dif= 0;
Do for i=0, n-1, 1

If (a[i] != i+1) then { dif =dif +1; poz = i+1; }

End if; enddo;

If (dif != 2) then scrie ("Permutarea nu este transpozitie.\n");


ELSE SCRIE ("Permutarea este transpozitie: ", poz); ENDIF;

DO-FOR i = 0, n-1, 1
WRITE (i+1); //pozitii permutare ENDDO;
WRITE ("\n");

DO-FOR i = 0, n-1,1
WRITE (a(i)); //valori permutare ENDDO; STOP.

14) Inversa unei permutari

Intreg n, I, a[100], b[100];

Write (“introduceti gradul permutarii: ”);


Read(n);

Write (“Elementele permutarii: \n”); si se citeste a[i] cu do for, end do;

Do for i=0, n-1, 1

b[a[i]-1] = i+1; end do;

write (“Elementele inversei permutari:\n”, i+1);


do for I =0, n-1, 1 write (i+1); end do;

write(“\n”);

do for i=0, n-1, 1 write (b[i]); end do; stop;


15) PALINDROM

Intreg n, m, x[100], y[100], i, nr, inv, c;


Citeste(n) si cu do for se citeste si x[i];

Nr=0;
Do for i=0, n-1, 1

{ inv=0;

M=x[i]*12;

While (m) do { inv= inv*10 + m% 10;


M=m/10;

C=inv; } endwhile;
If(c==x[i]*12) then { y[nr] = I;
Nr = nr+1; } endif; } enddo;
If (nr)

THEN { SCRIE ("Persoanele a caror varsta exprimata in luni formeaza un palindrom sunt:\n");
DO-FOR i = 0,nr-1,1 SCRIE (y[i]+1); ENDDO; }

ELSE SCRIE ("Nu exista niciun palindrom"); ENDIF; STOP

16) REUNIUNE
Intreg n, m, p, I, j;

Real x[50], y[80], z[130];

Read (m); dimensiunea pt x si cu do for se citeste x


Read(n); dimensiunea pt y si cu do for se citeste y;

P=0; do for i=0, m-1, 1

{ z[p] = x[i];
P=p+1; } end do;

Do for j=0, n-1, 1

{ i=0; end do;


While ((i<p) && y[j] != z[i])) do I = i+1; End while;

If ( i==p) then { z[p] = y[j];

P = p+1; } endif; } enddo;


Write (“Reuniunea celor 2 multimi este:”);

Do for i=0, p-1, 1


Write (z(i)); end do; stop;

17) INTERSECTIE

INTREG n,m,p,i,j;
REAL x[80],y[50], z[50];
READ (m); // Nr. de elemente ale primei multimi
DO-FOR i=0,m-1,1

READ (x[i]); ENDDO;


READ (n); // "Nr. de elemente ale celei de-a doua multimi:");

DO-FOR i=0,n-1,1
READ (y[i]); ENDDO;
p=0;
DO-FOR i = 0, m-1, 1 { j=0;
WHILE ((j<n) && (x[i]!=y[j])) DO j=j+1

ENDWHILE;

IF (j<n) THEN { z[p]= x[i]; p = p+1; } ENDIF; } ENDDO;


IF (p>0) THEN

{ WRITE ("Intersectia celor doua multimi este:");

DO-FOR i=0,p-1,1 WRITE (z[i]); ENDDO; }


ELSE WRITE ("Intersectia este multimea vida!");

STOP;

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