Sunteți pe pagina 1din 9

Universitatea Tehnică „Gheorghe Asachi”

Facultatea de Inginerie Chimica si Protectia Mediului

Referat la: „Programarea


Calculatoarelor Și Limbaje De
Programare”

A elaborat: Covali Daniel

Profesor: Adrian Vîlcu

Grupa:2105

An universitar: 2018-2019

Semestrul:2
Programul 1:
%Programul ce calculeaza x=-b/a
a=input ('a=');
b=input('b=');
if (a==0)
if (b==0)
disp('x=R');
else
disp('x= Multime
Vida');
end
else
x=-b/a;
disp(x);
end

Programul 2:
%a,b,c,d este sau nu o pregresie aritmetica
a=input('a=')
b=input('b=')
c=input('c=')
d=input('d=')
r=(b-a)
if(b-a==c-b&& c-b==d-c)
disp( 'a,b,c,d este o pregresie aritmetica' );
else
disp( 'a,b,c,d nu este o pregresie aritmetica');
end
Programul 3:
%Se poate forma un triunghi cu laturele a,b,c
a=input('a=')
b=input('b=')
c=input('c=')
if(a+b>c && b+c>a && a+c>b)
disp('a,b,c Poate forma un triunghi');
else
disp('a,b,c Nu poate forma un triunghi');
end

Programul 4:
%prog care calculeaza
suma elementelor aflate
pe pozitii impare intrun
sir de numere
a=input('a=');
n=size(a,2);
S=0;
for i=1:2:n
S=S+a(i);
end
disp(S);

Programul 5:
%sa se afiseze
elementele de pe
coloana a 2 a unei
matrici de n linii si m
coloane
clear
a=input('a=');
m=size(a,1);
for i=1:m
c(i)=a(i,2);
end;
disp (c);
Programul 6:
%sa se afiseze elementele de pe diagonala secundara
a=input('a=');
n=size(a,2);
m=size(a,1);
if (n==m)
for i=1:n
b(i)=a(i,n-i+1);
end
disp(b);
else
disp('textul nu e matrice patratica');
end;

Programul 7:
%sa se afiseze elementele de sub coloana principala
clear
a=input('a=');
n=size(a,1);
m=size(a,2);
for i=2:m
for j=1:(i-1)
b=a(i,j);
disp(b);
end
end

Programul 8:
%sa se inverseze elementele din prima si ultima coloana
clear
a=input('a=');
%b=input('b=');
n=size(a,1);
m=size(a,2);
%p=size(b,2);
for i=1:n
for j=1:m/2
aux=a(i,j);
a(i,j)=a(i,n-j+1)
a(i,n-j+1)=aux;
end
end
disp (a);
Programul 9:
%sa se realizeze prog care determina elementele maxime de
pe fiecare linie si calculeaza media lor aritmetica
a=input('a=');
n=size(a,1);
m=size(a,2);
S=0;
for i=1:n
for j=1:m-1
if a(i,j)> a(i,j+1)
nr.max=a(i,j);
else
nr.max=a(i,j+1);
end
end
S=S+nr.max;
end
Nr=i;
Ma=S/Nr;
disp (Ma);

Programul 10:
%sa se realiz prog care calc suma a
2 matrici c=a+b
a=input('a=');
b=input('b=');
n=size (a,1);
for i=1:n
c=a+b;
end;
disp(c);

Programul 11:
%sa se realiz prog care inverseaza linia 1 cu linia 2
a=input('a=');
n=size(a,1);
m=size(a,2);
aux=0;
for i=1:n
for j=1:m
aux=a(1,j);
b(i,j)=a(2,j);
a(2,j)=aux;
end
end
disp (b);
Programul 12:
%problema de transport cu sarcina variabila
clc;
clear;
a=load('C:\Users\coval\OneDrive\Desktop\Matlab\pclp.txt');
q0=input('q0=');
n=size(a,1)-1;
for i=1:n+1
q(i)=i;
end
q(2,:)=input('sarcinile pe noduri=');
qt=0;
for i=1:n+1
qt=qt+q(2,i);
end
a1=a;
sol(1,1)=1;
for i=1:n+1
a1(i,1)=intmax;
end
for i=1:n+1
a1(i,i)=intmax;
end
for i=1:n
[valmin,pozmin]=min(a1(sol(1,i),:));
sol(1,i+1)=pozmin;
for k=1:n+1
a1(k,pozmin)=intmax;
end
end
disp(sol(1,:));
c=0;
for i=1:n
c=c+(qt+q0)*a(sol(1,i),sol(1,i+1));
qt=qt-q(2,sol(1,i+1));
end
c=c+q0*a(sol(1,n+1),sol(1,1));
disp(c);
Programul 13:
%Programul care arata daca matricea este drept diagonala pe linie
a=input('a=');
n=size(a,1);
m=size(a,2);
k=1;
for i=1:n
S(i)=0;
for j=1:m
S(i)=S(i)+abs(a(i,j));
end
S(i)=S(i)-a(i,i);
if (a(i,i) < S(i))
k=0;
end
end
if(k==1)
disp('matricea este drept diagonala pe linie');
else
disp('matricea nu este drept diagonala pe linie');
end

Programul 14:
clc;
clear;
%metoda insertiei minimale pentru Circuit Hamiltonian de cost minim

%citirea matricei de costuri directe


a=load('C:\Users\coval\OneDrive\Desktop\MatLab\pclp1.txt');
n=size(a,1);

%fixarea nodurilor disponibile de asignat solutiei


for i=1:n
lista_noduri(i)=i;
end

%selectarea aleatoare a 2 noduri de start


n1=randi(n);
n2=randi(n);
while(n1==n2)
n2=randi(n);
end
sol=[lista_noduri(n1) lista_noduri(n2) lista_noduri(n1)];

%eliminarea nodurilor asignate solutie din lista de noduri disponibile


if(n1>n2)
lista_noduri(n1)=[];
lista_noduri(n2)=[];
else
lista_noduri(n2)=[];
lista_noduri(n1)=[];
end
n=n-2;

%formarea solutiei prin metoda insertiei minimale


nr_elem_sol=3;
while(n>0)

%selectarea aleatoare a unui nod din cele disponibile


n1=randi(n);
nod_selectat=lista_noduri(n1);
%introducerea nodului selectat in circuit
for i=1:nr_elem_sol-1
sol_i(i,:)=[sol(1:i),nod_selectat,sol(i+1:nr_elem_sol)];
end

%determinarea functiilor de cost


for j=1:i
cost(j)=0;
for f=1:nr_elem_sol-1
cost(j)=cost(j)+a(sol_i(j,f),sol_i(j,f+1));
end
end
%determinarea solutiei de cost minim
[cost_min,sol_min]=min(cost);
sol=sol_i(sol_min,:);

%stergere nod din lista;


lista_noduri(n1)=[];

%incrementarea numarului de elemente ale solutiei


nr_elem_sol=nr_elem_sol+1;

n=n-1;
%stergere solutie intermediara
clear sol_i;
end

disp('sol de cost minim este:');


disp(sol);
disp('costul solutiei este:');
disp(cost_min);

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