Hejka, mam wielką prośbę, poprawiłby mi ktoś ten kod, ponieważ nie wiem jak zrobić te konkretne podpunkty i czuję lekką depresję z tego powodu ;). Byłbym bardzo wdzięczny za pomoc, ponieważ nie ma kto mi pomóc ani wytłumaczyć a jest dla mnie bardzo ważne aby to zrozumieć. Jest to co prawda MatLab, ale jest chyba dosyć podobny do C, dlatego bardzo proszę o pomoc.
e) Uzupełnij kod programu tak aby kwadracik odbijał się nie tylko od poziomych krawędzi okna ale także od pionowych.
h) Dopisz pętlę FOR - aby po kliknięciu przycisku "Skok" kwadracik poruszał się sam (i wykonał 600 skoków).
clear; clc;
% ------ Definiowanie okna graficznego:
SZER=700; WYS=500;
f1=figure('position',[50,80,SZER,WYS]);
set(f1,'color',[0.5 0.5 0]);
%------- Definiowanie przycisku:
przycisk1=uicontrol('string','SKOCZ', 'Callback','przyrost');
%------- Definiowanie napisu
x=100; y=20; w=35; h=35;
napis1=uicontrol('Style','text', 'string','TUTAJ')
set(napis1,'position',[x,y,w,h]);
dx=10; dy=20; % to skok napisu do nowej pozycji
%------- Definiowanie suwaka:
suwak1=uicontrol('style','Slider', 'position',[20,50,20,140]);
set(suwak1,'Callback','kolor')
% ten podprogram zapisz do pliku „kolor.m”
bb=get(suwak1,'Value');
% set(f1,'Color',[1-sqrt(bb) bb bb^4]);
set(napis1,'BackgroundColor',[1-sqrt(bb) bb bb^4]);
% ten podprogram zapisz do pliku „przyrost.m”
x=x+dx; y=y+dy;
if y+h>=WYS | y<=0
dy=-dy; beep;
end
set(napis1,'position',[x,y,w,h]);
pause(0.1);
set(f1,'Color',[x/SZER 0.5 1-y/WYS]);
- Czy ten program będzie liczył (mnożył i dzielił?) Bo nie wiem jak dodać, aby nie dzielił przez zero a nie mam możliwości go przetestować :/.
% Program Kalkulatorek
clear; clc
F1=figure('Name','Kalkulatorek', 'Color',[0.6 0.6 1], 'Menubar','none'); % - to formatka
set(F1,'Units','characters');
% Okienka edycyjne:
e1=uicontrol('Style','Edit','Units','normalized','Position',[0.1, 0.6, 0.15, 0.05]);
e2=uicontrol('Style','Edit','Units','normalized','Position',[0.35, 0.6, 0.15, 0.05]);
% Przyciski:
b1=uicontrol('Style','Pushbutton','Units','normalized');
set(b1,'Position',[0.275, 0.65, 0.05, 0.05],'String','+','Callback','Dodaj');
b2=uicontrol('Style','Pushbutton','Units','normalized');
set(b2,'Position',[0.275, 0.55, 0.05, 0.05],'String','-','Callback','Odejmij');
% Tekst wynikowy:
t1=uicontrol('Style','Text','Units','normalized','Position',[0.6, 0.6, 0.15, 0.05]);
set(t1,'String',' = ');
% to jest podprogram "Dodaj" wywoływany przyciskiem "+"
x1 = str2double(get(e1, 'String'));
x2 = str2double(get(e2, 'String'));
y=x1*x2;
set(t1,'String',[' = ',num2str(y)]);
% to jest podprogram "Odejmij" wywoływany przyciskiem "-"
x1 = str2double(get(e1, 'String'));
x2 = str2double(get(e2, 'String'));
y=x1:x2;
set(t1,'String',[' = ',num2str(y)]);
- Program wyświetlający wielomian 3 stopnia W(x)=ax^3+bx^2+cx+d , a=1 c=2 a "b" oraz "d" ustalane przy pomocy suwaków. Zobaczyłby ktoś czego brakuje?
clear;clc
a=[1 b 2 d]; %-- co tutaj dać?
r=roots(a); %-- wyznaczamy pierwiastki i zapamiętujemy w wektorze r
xp=min(real(r)); xk=max(real(r)); dx=(xk-xp)/100;
x = xp-dx : dx : xk+dx;
f1=figure;
a1=axes('position',[0.06,0.06,0.5,0.85]);
%---- Tekst i suwak dla współczynnika b:
t1=uicontrol('style','text','units','normalized','position',[0.6,0.85,0.1,0.05]);
% Cecha POSITION(X,Y,SZER,WYS) - OKREŚLA POŁOŻENIE LEWEGO DOLNEGO ROGU I ROZMIARY
s1=uicontrol('style','slider','units','normalized','position',[0.71,0.85,0.28,0.05
]);
set(s1,'Min',-20,'Max',20,'Callback','nowe');
%---- Tekst i suwak dla wyrazu wolnego d (współrzędna y powinna być mniejsza o 5):
t2=....
s2=....
set(s2,'Min',-500,'Max',500,'Callback','nowe');
%---- Napis PIERWIASTKI
NAPIS=uicontrol('style','text','units','normalized','position',[0.6,0.65,0.2,0.04]);
set(NAPIS,'string','Pierwiastki:')
%---- Wyświetlanie wartości pierwiastków
t3=uicontrol('style','text','units','normalized','position',[0.6,0.60,0.2,0.04]);
t4=....
t5=....
rysuj;
% procedura rysuj
% wyznaczenie ciągu wartości wielomianu
% dla danego wektora wspolczynnikow a
% oraz ciągu wartości x wyznaczonego przez: x=linspace(xp,xk)
y=polyval(a,x);
plot(x,y); grid on
st=['W(x)=x^3+',num2str(a(2)),'x^2+',num2str(a(3)),'x+',num2str(a(4))
];
title(st);
set(t1,'string',['b=',num2str(a(2))]);
set(t2,'string',['d=',num2str(a(4))]);
set(t3,'string',['r1=',num2str(r(1))]);
set(t4,'string',['r2=',num2str(r(2))]);
set(t5,'string',['r3=',num2str(r(3))]);
% procedura nowe
a(2)=get(s1,'Value');
a(4)=get(s2,'Value');
r=roots(a); % wyznacza 3 pierwiastki (takze zespolone)
xp=min(real(r))-5; xk=max(real(r))+5;
x=linspace(xp,xk); % wyznacza ciąg 100 wartości x między xp xk
rysuj; % wywoluje procedure rysuj