Observatie enunutul problemelor vezi in fisierul word
alege si tu 10 probleme cu vectori si matrici
{Sa se scrie un program în limbajul Borland Pascal sau Borland C++ care sa descompuna
un n (natural nenul) dat în suma de cel putin doua numere prime distincte. Daca
problema nu are solutie, se va afisa un mesaj corespunzator }
{var a,b,c:array[1..20] of integer;
n,x,i,j,k:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
read(a[i]);
end;
write('x=');readln(x);
j:=0;
k:=0;
for i:=1 to n do
if a[i]0 do
begin
c:=x mod 10;
inv:=inv*10+c;
x:=x div 10;
end;
invers:=inv;
end;
begin
for i:=100 to 999 do
if prim(i) then
begin
inv1:=invers(i);
if prim(inv1) then write(i,' ');
end;
end.
{Se citesc de la tastatura un cuvânt si o litera. Sa se afiseze toate cuvintele care se
obtin prin înlocuirea unei litere din cuvânt cu litera data. (Ex: pentru c=’TOC’ si l=’P’ se
vor afisa ‘POC’,’TPC’,’TOP’).}
{var c,lit:string;
l:char;
i:integer;
begin
write('c=');
readln(c);
write('l=');readln(l);
for i:=1 to length(c) do
begin
lit:=c;
delete(c,i,1);
insert(l,c,i);
writeln(c);
c:=lit;
end;
end.
}
{1. Sa se determine câte elemente prime se afla deasupra diagonalei principale a unei
matrice cu n x n elemente naturale. }
{ var a:array[1..10,1..10] of integer;
n,i,j,k:integer;
function prim(x:integer):boolean;
var d:integer;
begin
if (x=0) or (x=1) then prim:=false
else
begin
prim:=true;
for d:=2 to trunc(sqrt(x)) do
if x mod d=0 then prim:=false;
end;
end;
begin
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
read(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
k:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if prim(a[i,j]) then k:=k+1;
write('k=',k);
end. }
{Sorteaza un vector in modul urmator:afla maximul la stanga il sorteaza crescator la dreapta descrescator dupa aceea
afiseaza maximul si vectorul astfel sortat}
{type vector=array[1..20] of integer;
var a:vector;
n,max,i,j,k,x:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
read(a[i]);
end;
max:=a[1];
k:=1;
for i:=2 to n do
if a[i]>max then begin
max:=a[i];
k:=i;
end;
for i:=1 to k-2 do
for j:=i+1 to k-1 do
if a[i]>a[j] then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
for i:=k+1 to n-1 do
for j:=i+1 to n do
if a[i]0 then
if p>pm then begin
pm:=p;
k:=i;
end;
i:=i+1;
until x=1;
write('factorul prim la puterea cea mai mare ste',k);
end.
}
{verifica daca doua stringuri sunt identice}
{ var s,g:string;
function egal(s,g:string):boolean;
begin
if (s='') and (g='') then egal:=true
else
if s[1]=g[1] then
begin
delete(s,1,1);
delete(g,1,1);
egal:=egal(s,g)
end
else
egal:=false;
end;
begin
write('s=');readln(s);
write('g=');readln(g);
if length(s)<>length(g) then
write('nu sunt egale')
else
if egal(s,g) then write('siruri egale')
else write('siruri neegale');
end.
}
{Calculeaza cel mai mare numar natural dintr-o matrice}
{var a:array[1..20,1..20] of 0..1;
b:array[1..20] of integer;
n,m,nr,i,j,k,max:integer;
f:text;
procedure citire;
var i,j:integer;
begin
assign(f,'mat.in');
reset(f);
readln(f,n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(f,a[i,j]);
readln(f);
end;
close(f);
end;
begin
citire;
max:=0;
for i:=1 to n do
begin
for j:=1 to m do
b[j]:=a[i,j];
nr:=b[1];
for k:=2 to m do
nr:=nr*2+b[k];
if nr>max then max:=nr;
end;
write('cel mai mare nr natural este',max);
end.}
{Se citeste din fisierul bac.in un text pe mai multe linii. Scrieti in fisierul bac.out acelasi text
dar in care se schimba literele mici cu litere mari si literele mari cu litere mici.
Ex
Bac.in
Tata Este la
PiatA?
Bac.out
TATA eSTE LA
pIATa?
}
{ var s:string;
f,g:text;
i:integer;
begin
assign(f,'bac.in');
reset(f);
assign(g,'bac.out');
rewrite(g);
while not eof(f) do
begin
readln(f,s);
for i:=1 to length(s) do
begin
if (s[i]>='a') and (s[i]<='z') then
s[i]:=chr(ord(s[i])-32)
else
if (s[i]>='A') and (s[i]<='Z') then
s[i]:=chr(ord(s[i])+32);
end;
writeln(g,s);
end;
close(f);
close(g);
end.
}
{Se citeste de la tastatura pentru n elevi informatii referitoare la nume, prenume, media, varsta.
Sortati descrescator elevii dupa medie,
iar daca au aceeasi medie se sorteaza crescator dupa nume.}
{ type elev=record
nume,prenume:string;
varsta:integer;
media:real;
end;
var a:array[1..30] of elev;
n,i,j:integer;
x:elev;
begin
write('n=');readln(n);
for i:=1 to n do
with a[i] do
begin
write('dati numele: ');readln(nume);
write('dati prenumele:');readln(prenume);
write('dati varsta: ');readln(varsta);
write('dati media: ');readln(media);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].mediaa[j].nume then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
for i:=1 to n do
with a[i] do
writeln(nume,' ', media:6:2);
end.
}
{calcuzeaza si afiseaza numarul de numere prime dintr-o matrice}
{var a:array[1..10,1..10] of integer;
n,m,i,j,k:integer;
function prim(x:integer):boolean;
var d:integer;
begin
if (x=0) or (x=1) then prim:=false
else
begin
prim:=true;
for d:=2 to trunc(sqrt(x)) do
if x mod d=0 then prim:=false;
end;
end;
begin
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
for j:=1 to m do
begin
k:=0;
for i:=1 to n do
if prim(a[i,j])=false then k:=k+1;
writeln('k=',k);
end;
end. }
{Scrie un numar intreg a in baza b}
{ var x:array[1..20] of integer;
a:longint;
b,i,j,r:integer;
begin
write('a=');readln(a);
write('b=');readln(b);
i:=0;
while a>0 do
begin
r:=a mod b;
i:=i+1;
x[i]:=r;
a:=a div b;
end;
for j:=i downto 1 do write(x[j],' ');
end.}
{Se citeste de la tastatura numarul n. Generati in fisierul bac.out primele n numere prime, cate 10 pe fiecare linie.
Ex.
N=40
Bac.out
2 3 5 7 11 13 17 19 23 29
31 37
}
{var n,i,k:integer;
f:text;
function prim(x:integer):boolean;
var d:integer;
begin
if (x=0) or (x=1) then prim:=false
else
begin
prim:=true;
for d:=2 to trunc(sqrt(x)) do
if x mod d=0 then prim:=false;
end;
end;
begin
write('n=');readln(n);
assign(f,'bac.out');
rewrite(f);
i:=0;
k:=2;
repeat
if prim(k)=true then begin
write(f,k,' ');
i:=i+1;
if i mod 10=0 then writeln(f);
end;
k:=k+1;
until i=n;
close(f);
end.}
{53. Pentru un numar natural n citit de la tastatura (de cel mult 8 cifre) afisati al p-lea numar prim strict
mai mare decat numarul.
Ex. N=20
P=4
se va afisa 37
}
{var n:longint;
p,i,k,x:integer;
function prim(x:integer):boolean;
var d:integer;
begin
if (x=0) or (x=1) then prim:=false
else
begin
prim:=true;
for d:=2 to trunc(sqrt(x)) do
if x mod d=0 then prim:=false;
end;
end;
begin
write('n=');readln(n);
write('p=');readln(p);
i:=n+1;
k:=0;
repeat
if prim(i) then begin
k:=k+1;
x:=i;
end;
i:=i+1;
until k=p;
writeln('al',p,'-lea nr prim este ',x);
end.}
{54. Sa se calculeze produsul primilor n termeni ai sirului lui Fibonacci definit astfel :f1=1, f2=1, fn=fn-1+fn-2
pentru n>=3;
Ex : n=6, produsul este 240.
}
{var n,f1,f2,f3,i:integer;
p:longint;
begin
write('n='); readln(n);
f1:=1;
f2:=1;
p:=1;
for i:=3 to n do
begin
f3:=f1+f2;
p:=p*f3;
f1:=f2;
f2:=f3;
end;
write('produsul este ' ,p);
end.}
{Sa se determine toate numerele intregi de 3 cifre abc cu proprietatea ca numarul este egal cu suma cuburilor cifrelor.}
{ var i,a,b,c,x:integer;
begin
for i:=100 to 999 do
begin
x:=i;
c:=x mod 10;
x:=x div 10;
b:=x mod 10;
x:=x div 10;
a:=x mod 10;
if i=a*a*a+b*b*b+c*c*c then writeln(i,' ');
end;
end.}
{ 59. Sa se afiseze primele n numere care au suma cifrelor ?m
Ex :n=10, m=4 : 1, 2, 3, 4, 10, 11, 12, 13, 20, 21.
}
{ var n,m,i,k,x,c,s:integer;
begin
write('n=');readln(n);
write('m=');readln(m);
i:=0;
k:=1;
repeat
x:=k;
s:=0;
while x>0 do
begin
c:=x mod 10;
s:=s+c;
x:=x div 10;
end;
if s<=m then begin
write(k,' ');
i:=i+1;
end;
k:=k+1;
until i=n;
end.
}
{Sa se creeze un fisier text care contine toate numerele cuprinse intre a si b formate din cifre identice.
Valorile lui a si b se citesc de la tastatura.
Ex : a=10, b=150 fisierul de iesire va arata astfel : 11, 22, 33, …, 99, 111 .
}
{ var a,b,n,c1,c2,m,i:integer;
ok:boolean;
f:text;
begin
assign(f,'numere.txt');
rewrite(f);
write('a='); readln(a);
write('b='); readln(b);
for i:=a to b do
begin
n:=i;
ok:=true;
c1:=n mod 10;
n:=n div 10;
while n>0 do
begin
c2:=n mod 10;
if c1<>c2 then ok:=false;
c1:=c2;
n:=n div 10;
end;
if ok then write(i,' ');
end;
end.
}
{65. Sa se scrie o functie denumita max2 care determina maximul a doua numere si
dupa care sa se scrie o functie denumita max3 care determina maximul a 3 numere si foloseste functia max2}
{var a,b,c:integer;
function max2(a,b:integer):integer;
begin
if a>=b then
max2:=a
else
max2:=b;
end;
function max3(a,b,c:integer):integer;
begin
max3:=max2(max2(a,b),c);
end;
begin
write('a=');readln(a);
write('b=');readln(b);
write('c=');readln(c);
write('maximul este: ', max3(a,b,c));
end.
}
{Sa se scrie o procedura cu 2 parametrii, unul de tip tablou patratic de intregi, si celalalt de tip intreg. Cel
de-al doilea parametru va trebui sa transmita procedurii numarul de linii si coloane si sa intoarca suma elementelor
de deasupra diagonalei principale inclusiv aceasta.
}
{ type matrice=array[1..20,1..20] of integer;
var m,i,j:integer;
a:matrice;
procedure suma(a:matrice;var n:integer);
var i,j,s:integer;
begin
s:=0;
for i:=1 to n do
for j:=i to n do
s:=s+a[i,j];
n:=s;
end;
begin
write('m=');readln(m);
for i:=1 to m do
for j:=1 to m do
begin
write('a[',i,',',j,']=');
read(a[i,j]);
end;
for i:=1 to m do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
suma(a,m);
write('m=',m);
end.
}
{70. Sa se testeze daca un numar n natural este termen in sirul lui Fibonacci.}
{ var n,f1,f2,f3:integer;
begin
write('n=');readln(n);
f1:=1;
f2:=1;
f3:=f1+f2;
while f3max then max:=a[i];
k:=0;
for i:=1 to n do
if max=a[i] then k:=k+1;
write('k=',k);
end.
}
{Calculeaza matricea produs a 2 matrici}
{type matrice=array[1..10,1..10] of integer;
var a,b,c:matrice;
m,n,p,i,j,k:integer;
begin
write('m=');readln(m);
write('n=');readln(n);
write('p=');readln(p);
for i:=1 to m do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
writeln;
for i:=1 to n do
for j:=1 to p do
begin
write('b[',i,',',j,']=');
read(b[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to p do
write(b[i,j],' ');
writeln;
end;
writeln;
for i:=1 to m do
for j:=1 to p do
begin
c[i,j]:=0;
for k:=1 to n do
c[i,j]:=c[i,j]+a[i,k]*b[k,j];
end;
writeln('matricea produs este');
for i:=1 to m do
begin
for j:=1 to p do
write(c[i,j],' ');
writeln;
end;
end.
}