10
Универзитет у Београду Основе програмирања у MatLab-у Грађевински факултет © Наташа Прашчевић, мај 2020. 1 Вежбе: потпрoграми први део 1) а) Написати потпрограм којим се рачуна факторијел броја N. б) Написати главни програм у коме се за дате бројеве N и I штампа )! ( ! ! I N I N C - = Потпрограм function f=faktor(n) f=1; for i=2:n f=f*i; end return Главни програм n=input('Unesi broj n '); i=input('Unesi broj i '); c=faktor(n)/faktor(i)/faktor(n-i); disp (c); или

Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 1

Вежбе: потпрoграми – први део

1) а) Написати потпрограм којим се рачуна факторијел броја N.

б) Написати главни програм у коме се за дате бројеве N и I штампа )!(!

!

INI

NC

=

Потпрограм

function f=faktor(n) f=1; for i=2:n f=f*i; end return

Главни програм

n=input('Unesi broj n '); i=input('Unesi broj i '); c=faktor(n)/faktor(i)/faktor(n-i); disp (c);

или

Page 2: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 2

2) а) Написати потпрограм за множење два броја К и М.

б) Написати главни програм у коме се коришћењем написаног потпрограма штампа таблица множења

у Декадном систему.

Потпрограм

function a=proizvod(k,m) a=k*m; return

Главни програм

fprintf(1,' 1 2 3 4 5 6 7 8 9 10 \n'); for i=1:10 fprintf(1,'%2d',i); for j=1:10 a=proizvod(i,j); fprintf(1,'%4d',a); end fprintf(1,'\n'); end

Page 3: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 3

3) а) Написати потпрограм којим се за учитане величине X и Y рачуна вредност X*Y.

б) Написати главни програм којим се учитава реална променљива А и природан број N. Коришћењем

написаног потпрограма срачунати AN.

Главни програм

a=input('Unesi broj a '); n=input('Unesi stepen n '); b=1; for i=1:n b=proizvod(a,b); end fprintf(1,'Broj %3d na stepen %2d iznosi %5d',a,n,b);

4) а) Написати потпрограм којим се рачуна сума елемената низа X дужине М.

б) Написати главни програм у коме се за дати низ X дужине N штампа вредност 1

)(

1

2

=

=

N

XX

N

i

i

σ

где је N

X

X

N

i

i=

=1

Потпрограм

function s=suma(n,x); s=0; for i=1:n s=s+x(i); end return

Главни програм

fid=fopen('podaci.txt'); n=fscanf(fid,'%d',1); x=fscanf(fid,'%f',n); fclose(fid); xsr=suma(n,x)/n; for i=1:n y(i)=(xsr-x(i))^2; end sd=sqrt(suma(n,y)/(n-1)); fprintf(1,'SD=%10.4f',sd);

Датотека podaci.txt

10 2 3 5.5 -1 4 6.5 10 8 0 -10

Page 4: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 4

5) а) Написати потпрограм којим се испитује да ли је број М прост број. Ако јесте потпрограм треба да

врати вредност 1 у супротном 0.

б) Написати главни програм у коме се коришћењем написаног потпрограма штампају сви прости

бројеви од 1 до 1000.

Потпрограм

function ok=prost(m) ok=0; for i=2:m/2 if rem(m,i)==0 return end end ok=1; return

Главни програм

fprintf(1,'Prosti brojevi od 1 do 1000 \n'); for i=1:1000 if prost(i)==1 fprintf(1,'%3d \n',i); end end

6) а) Написати функцијски потпрограм којим се испитује да ли је број М прост број. Ако јесте потпрограм

треба да врати вредност 1 у супротном 0.

б) Написати главни програм којим се штампа сума свих двоцифрених простих бројева.

Page 5: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 5

7) а) Написати потпрограм којим се одређује растојање између две тачке задате Декартовим

координатама.

б) Написати главни програм којим се врши учитавање N тачака задатих Декартовим координатама.

Тачке одређују N-тоугао у равни XoY. Одредити дужину најдуже странице N-тоугла као и између

којих тачака се она налази.

Потпрограм

function d=rast(xa,ya,xb,yb) d=sqrt((xa-xb)^2+(ya-yb)^2); return

Датотека podaci_zad7.txt

4 0 0 3 2 2.5 5.5 -2.5 5

Главни програм

fid=fopen('podaci_zad7.txt'); n=fscanf(fid,'%d',1); for i=1:n x(i)=fscanf(fid,'%f',1); y(i)=fscanf(fid,'%f',1); end fclose(fid); dmax=rast(x(1),y(1),x(n),y(n)); t1=1; t2=n; for i=1:n-1 d=rast(x(i),y(i),x(i+1),y(i+1)); if d>dmax dmax=d; t1=i; t2=i+1; end end fprintf(1,'Najduza stranica je izmedju tacaka %3d i %3d i iznosi %10.3f',t1,t2,dmax);

Page 6: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 6

8) а) Написати потпрограм којим се одређује сума елемената низа X дужине N.

б) Учитати матрицу А димензија MxN. Коришћењем написаног потпрограма формирати низ V чији су

чланови једнаки суми одговарајућих врста матрице А.

Датотека podaci_zad8.txt

3 4 1 1 1 1 2 2 2 2 3 3 3 3

Главни програм

fid=fopen('podaci_zad8.txt'); m=fscanf(fid,'%d',1); n=fscanf(fid,'%d',1); a=fscanf(fid,'%f',[n,m])'; fclose(fid); for i=1:m v(i)=suma(n,a(i,:)); end fprintf(1,'Sume po vrstama matrice A \n'); fprintf(1,'%7.3f',v);

Page 7: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 7

9) а) Написати потпрограм којим се за број М налази сума цифара.

б) Дат је низ A дужине N. Коришћењем написаног потпрограма формирати низ К чији је елемент

једнак збиру цифара одговарајућег елемента низа A.

Потпрограм

function s=sumacif(m) k=abs(m); s=0; while 1==1 c=rem(k,10); s=s+c; k=fix(k/10); if k==0 return end end

Главни програм

fid=fopen('podaci_zad8.txt'); m=fscanf(fid,'%d',1); n=fscanf(fid,'%d',1); a=fscanf(fid,'%f',[n,m])'; fclose(fid); for i=1:m v(i)=suma(n,a(i,:)); end fprintf(1,'Sume po vrstama matrice A \n'); fprintf(1,'%7.3f',v);

Датотека podaci_zad8.txt

3 4 1 1 1 1 2 2 2 2 3 3 3 3

10) а) Написати потпрограм којим се испитује да ли је број једнак збиру кубова својих цифара

(Армстронгов број). Ако јесте потпрограм треба да врати вредност 1 у супротном 0.

б) Написати главни програм којим се за учитани низ X дужине N штампају сви Армстронгови бројеви.

11) а) Написати потпрограм којим се испитује да ли су бројеви X и Y пријатељски. (Број X једнак је збиру

цифара броја Y).

б) Написати главни програм којим се за дате низове К и L дужине N штампају сви парови пријатељских

бројева.

Page 8: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 8

12) а) Написати потпрограм којим се за дати број I формира низ од нетривијалних делитеља броја I.

б) Написати главни програм у коме се учитава низ X дужине N. Коришћењем написаног потпрограма

одштампати све нетривијалне делитеље сваког елемента низа X.

Потпрограм

function [m,d]=nd(k) m=0; d=[]; for i=2:abs(k)/2 if rem(k,i)==0 m=m+1; d(m)=i; end end return

Датотека podaci_zad12.txt

5 333 -555 463 -1257 12

Главни програм

fid=fopen('podaci_zad12.txt'); n=fscanf(fid,'%d',1); x=fscanf(fid,'%d',n); fclose(fid); fprintf(1,'Broj Netrivijalni delioci \n') for i=1:n [m,y]=nd(x(i)); fprintf(1,'%5d',x(i)); fprintf(1,'%5d',y); fprintf(1,'\n'); end

Page 9: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 9

13) а) Написати потпрограм којим се низ X дужине N сортира у неопадајући редослед.

б) Написати главни програм у коме се учитава матрица А реда М. Сортирати главну и споредну

дијагоналу матрице А.

Потпрограм

function x=opadajuci(n,x) for i=1:n-1 for j=i+1:n if x(i)<x(j) pom=x(i); x(i)=x(j); x(j)=pom; end end end return

Датотека podaci_zad13.txt

4 1 3 2 5 7 -1 12 0 -3 9 12 96 0 34 57 9

Главни програм

fid=fopen('podaci_zad13.txt'); m=fscanf(fid,'%d',1); a=fscanf(fid,'%f',[m,m])'; fclose(fid); fprintf(1,'Matrica A \n'); for i=1:m fprintf(1,'%7.2f',a(i,:)); fprintf(1,'\n') x(i)=a(i,i); y(i)=a(i,m-i+1); end x=opadajuci(m,x); y=opadajuci(m,y); fprintf(1,'Transformisana matrica A \n') for i=1:m a(i,i)=x(i); a(i,m-i+1)=y(i); fprintf(1,'%7.2f',a(i,:)); fprintf(1,'\n') end

Page 10: Вежбе потпр oграми први · 2020-05-24 · fprintf(1, 'Prosti brojevi od 1 do 1000 \n' ); for i=1:1000 if prost(i)==1 fprintf(1, '%3d \n' ,i); end end 6) а) Написати

Универзитет у Београду Основе програмирања у MatLab-у

Грађевински факултет

© Наташа Прашчевић, мај 2020. 10

14) а) Написати општи потпрограм којим се низ X дужине N сортира у нерастући редослед.

б) Написати главни програм којим се учитава матрица А димензија MxN. Сортирати врсте матрице А

у нерастући редослед..