مثال۲) برنامهای بنویسید که ۱۰ عدد را از ورودی گرفته و تعداد اعداد اول آنها را در n ذخیره کند و در ماتریس a نمایش دهد. همچنین سینوس آنها را برحسب رادیان محاسبه کرده و در ماتریس b ذخیره کند، اعداد بزرگتر از ۵ را در ماتریس c ذخیره کرده و معکوس تانژانت آنها را در ماتریس d ذخیره کند. نهایتا بزرگترین مقسوم علیه مشترک و کوچکترین مضرب مشترک بین آنها را مشخص کرده و به ترتیب در متغیر G و L ذخیره کند.
کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
% inp is a vector have 10 elements
inp = input(' inp = ');
% main code
z = find(isprime(inp) == 1);
n = length(z);
a = inp(z);
b = sin(a);
c = inp(find(inp > 5));
d = atan(c);
for i = 1:length(inp)
for j = 1:length(inp)
G(i,j) = gcd(inp(i),inp(j));
end
end
for i = 1:length(inp)
for j = 1:length(inp)
L(i,j) = lcm(inp(i),inp(j));
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
% inp is a vector have 10 elements
inp = input(' inp = ');
% main code
z = find(isprime(inp) == 1);
n = length(z);
a = inp(z);
b = sin(a);
c = inp(find(inp > 5));
d = atan(c);
for i = 1:length(inp)
for j = 1:length(inp)
G(i,j) = gcd(inp(i),inp(j));
end
end
for i = 1:length(inp)
for j = 1:length(inp)
L(i,j) = lcm(inp(i),inp(j));
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
تمرین۲) برنامهای بنویسید که مبلغ سپردهگذاری در یک بانک را همراه با مدت سپردهگذاری(به صورت ماه) از کاربر دریافت نموده، سپس اگر مبلغ سرمایهگذاری از ۵۰ میلیون ریال بیشتر باشد، سود سرمایهگذاری را با نسبت فرجه سوم تعداد ماههای سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای کل دوره سرمایهگذاری
محاسبه نماید. اگر مبلغ سرمایهگذاری بین ۵۰ تا ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت جذر تعداد ماههای سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. در نهایت اگر مبلغ سرمایهگذاری بیشتر از ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت تعداد ماههای
سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. (برای مثال اگر فردی ۱۰۰ میلیون ریال به صورت ۳ ماهه سرمایهگذاری کند، سود به ترتیب در ماههای اول، دوم و سوم برابر است با ۱ و ۱.۴۱ و ۱.۷۳ میباشد.) همچنین به ازای هر سال که از سرمایهگذاری میگذرد، در شروع سال جدید به سود آن ماه یک درصد هم اضافه میشود و این سود برای ماههای بعد هم باقی میماند و به ازای هر سال این
یک درصد اضافه میشود (به عنوان مثال، اگر سود در پایان سال اول ۱۲ درصد شود، و در سال جدید که ماه ۱۳م میباشد و سود باید ۱۳درصد باشد، یک درصد به آن اضافه میشود و تا پایان این سال این یک درصد اعمال میشود و در پایان ماه ۲۴م سود ۲۵ درصد خواهد بود. و در ماه ۲۵م که شروع سال سوم میباشد، و سود باید ۲۶ درصد باشد، یک درصد به آن اضافه میشود و ۲۷ درصد میشود. و این روند تا پایان زمان سپردهگذاری ادامه مییابد.)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
محاسبه نماید. اگر مبلغ سرمایهگذاری بین ۵۰ تا ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت جذر تعداد ماههای سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. در نهایت اگر مبلغ سرمایهگذاری بیشتر از ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت تعداد ماههای
سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. (برای مثال اگر فردی ۱۰۰ میلیون ریال به صورت ۳ ماهه سرمایهگذاری کند، سود به ترتیب در ماههای اول، دوم و سوم برابر است با ۱ و ۱.۴۱ و ۱.۷۳ میباشد.) همچنین به ازای هر سال که از سرمایهگذاری میگذرد، در شروع سال جدید به سود آن ماه یک درصد هم اضافه میشود و این سود برای ماههای بعد هم باقی میماند و به ازای هر سال این
یک درصد اضافه میشود (به عنوان مثال، اگر سود در پایان سال اول ۱۲ درصد شود، و در سال جدید که ماه ۱۳م میباشد و سود باید ۱۳درصد باشد، یک درصد به آن اضافه میشود و تا پایان این سال این یک درصد اعمال میشود و در پایان ماه ۲۴م سود ۲۵ درصد خواهد بود. و در ماه ۲۵م که شروع سال سوم میباشد، و سود باید ۲۶ درصد باشد، یک درصد به آن اضافه میشود و ۲۷ درصد میشود. و این روند تا پایان زمان سپردهگذاری ادامه مییابد.)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اعضای محترم کانال متلب توجه داشته باشید که تمریناتی که در کانال گذاشته میشود، به این منظور هست که آموزشهایی که فراگرفتید را به چالش بکشید. بنابراین تمرینات را به فرد دیگری واگذار نکنید که برای شما حل کند، بهتر است بارها و بارها تلاش کنید تا بالاخره پاسخ را بیابید. قطعا در تمریناتی که گذاشته میشود نکاتی وجود دارد که فقط با درگیرشدن برای حل تمرین میتوانید این نکات را بیابید.
در صورتی که میخواهید برنامهنویس حرفهای شوید، تمرینات را اگر ده بار هم نتوانستید حل نمایید، باز سعی کنید خودتان حل نمایید. در این کانال پاسخ تمرینات گذاشته نمیشود، اما جهت آشنایی با حل تمرینات، فقط کد تمرین ۱ در کانال گذاشته میشود، اما از این پس دیگر پاسخ هیچ تمرینی گذاشته نمیشود.
همچنین توجه داشته باشید، برای حل یک سوال ممکن است چندین راهحل باشد بنابراین اگر کدی را نوشتید و پاسخ صحیح دریافت نمودید، بنابراین کد صحیح میباشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
در صورتی که میخواهید برنامهنویس حرفهای شوید، تمرینات را اگر ده بار هم نتوانستید حل نمایید، باز سعی کنید خودتان حل نمایید. در این کانال پاسخ تمرینات گذاشته نمیشود، اما جهت آشنایی با حل تمرینات، فقط کد تمرین ۱ در کانال گذاشته میشود، اما از این پس دیگر پاسخ هیچ تمرینی گذاشته نمیشود.
همچنین توجه داشته باشید، برای حل یک سوال ممکن است چندین راهحل باشد بنابراین اگر کدی را نوشتید و پاسخ صحیح دریافت نمودید، بنابراین کد صحیح میباشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
PROGRAMMING - COMPUTER
تمرین1) برنامهای بنویسید که یک عدد طبیعی از کاربر دریافت نموده، سپس این عدد را به دو عدد تجزیه نماید، با این شرط که اعداد تجزیه شده به این صورت باشند که بیشترین نزدیکی را به هم داشته باشند. به عنوان مثال اگر عدد 25 را تجزیه نماییم، باید اعداد تجزیه شده…
کد تمرین۱)
n = input(' n = ');
for i = 1:n
if mod(n,i) == 0
x(i) = i;
y(i) = n/i;
elseif mod(n,i) ~= 0
x(i) = 0;
y(i) = n;
end
end
z = abs(x - y);
[a,b] = min(z);
w = [x(b),y(b)];
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
n = input(' n = ');
for i = 1:n
if mod(n,i) == 0
x(i) = i;
y(i) = n/i;
elseif mod(n,i) ~= 0
x(i) = 0;
y(i) = n;
end
end
z = abs(x - y);
[a,b] = min(z);
w = [x(b),y(b)];
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۳) یک ماتریس جادویی با ۶ سطر و ستون به نام a در نظر بگیرید. برای کل سطرها و ۵ ستون اول ماتریس، تک تک درایهها را به صورت جداگانه با یک عدد تصادفی در بازه (10,25-) جمع نمایید(توجه نمایید که نباید یک ماتریس از اعداد تصادفی ایجاد نمایید و سپس جمع کنید. بلکه باید درون حلقه تک تک درایهها را جداگانه با یک عدد تصادفی جمع نمایید). ماتریس جدید با ۶ سطر و ۵ ستون را b بنامید. سپس میانگین ماتریس b را به دست آورده و انحراف از میانگین تک تک درایهها از مقدار میانگین را محاسبه نموده و در ماتریس c ذخیره نمایید. سپس با ضرب درایه به درایه دو ماتریس b و c را در هم ضرب نموده و d بنامید. سپس دو ماتریس c و d را با هم مقایسه نموده و درایه هرکدام بزرگتر بود در ماتریس e ذخیره نمایید.
کد متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
a = magic(6);
for i = 1:6
for j = 1:5
b(i,j) = a(i,j) + 35*rand + (-10);
end
end
avg_b = mean(mean(b));
for i = 1:6
for j = 1:5
c(i,j) = b(i,j) - avg_b;
d(i,j) = b(i,j)*c(i,j);
if c(i,j) >= d(i,j)
e(i,j) = c(i,j);
else
e(i,j) = d(i,j);
end
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کد متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
a = magic(6);
for i = 1:6
for j = 1:5
b(i,j) = a(i,j) + 35*rand + (-10);
end
end
avg_b = mean(mean(b));
for i = 1:6
for j = 1:5
c(i,j) = b(i,j) - avg_b;
d(i,j) = b(i,j)*c(i,j);
if c(i,j) >= d(i,j)
e(i,j) = c(i,j);
else
e(i,j) = d(i,j);
end
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۴) برنامهای بنویسید که یک ماتریس مربعی به نام A از کاربر دریافت نمایید. سپس دترمینان ماتریس را محاسبه نموده، اگر دترمینان منفی باشد، یک ماتریس جدید به این صورت که ماتریس قبلی را از همان ماتریس قبلی که درایههای آن نصف شدهاند تفریق نماید و اینکار را آنقدر ادامه دهد تا دترمینان از عدد 6-1e -کمتر شود.
اگر دترمینان صفر شود، همان ماتریس را در خروجی نمایش دهد و اگر دترمینان مثبت شود، یک ماتریس جدید به این صورت که ماتریس قبلی را از همان ماتریس قبلی که درایههای آن نصف شدهاند تفریق نماید و اینکار را آنقدر ادامه دهد تا دترمینان از عدد 6-1e کمتر شود. در هر مرحله ماتریس خروجی را B بنامید.
کد این مثال به صورت زیر میباشد.
clear all
clc
%%
% A is a square matrix
A = input(' A = ');
determinan = det(A);
if determinan == 0
B = A;
elseif determinan < 0
i = 0;
while determinan < -1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
else
i = 0;
while determinan > 1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اگر دترمینان صفر شود، همان ماتریس را در خروجی نمایش دهد و اگر دترمینان مثبت شود، یک ماتریس جدید به این صورت که ماتریس قبلی را از همان ماتریس قبلی که درایههای آن نصف شدهاند تفریق نماید و اینکار را آنقدر ادامه دهد تا دترمینان از عدد 6-1e کمتر شود. در هر مرحله ماتریس خروجی را B بنامید.
کد این مثال به صورت زیر میباشد.
clear all
clc
%%
% A is a square matrix
A = input(' A = ');
determinan = det(A);
if determinan == 0
B = A;
elseif determinan < 0
i = 0;
while determinan < -1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
else
i = 0;
while determinan > 1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اعضای محترم کانال توجه نمایید که مثالها و تمریناتی که در کانال قرار داده میشود، هرکدام دارای نکات بسیار خوبی برای بهبود عملکرد برنامهنویسی میباشند. بیشترین نقطه ضعف برنامهنویسان مبتدی، استفاده از حلقهها میباشد به همین دلیل تمرکز بر روی این مسئله بسیار زیاد است. لطفا کدهای مثالها را به صورت خط به خط برای خود تحلیل نمایید و با استفاده از help نرمافزار متلب میتوانید کاربرد کامل یک دستور را مشاهده نمایید. در اکثر کتابها و جزوات مثالهای بسیار کمی و در حد بسیار ابتدایی درباره این مسائل وجود دارد، به همین دلیل برنامهنویسان در کاربرد حلقهها بیشترین مشکل را دارند.
لطفا در صورتی که کسانی را میشناسید که قصد یادگیری متلب را از پایه و به صورت گام به گام با مثالهای بسیار کاربردی دارند، کانال متلب را به آنها معرفی نمایید.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
لطفا در صورتی که کسانی را میشناسید که قصد یادگیری متلب را از پایه و به صورت گام به گام با مثالهای بسیار کاربردی دارند، کانال متلب را به آنها معرفی نمایید.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
تمرین۴) بردار a را از ورودی دریافت نمایید (a یک بردار است که دارای صفر تا ۳ درایه میباشد).
اگر این بردار تهی باشد، در خروجی یک پیغام خطا چاپ نمایید که بردار ورودی نباید تهی باشد (با دستور error میتوان خطا ایجاد نمود).
اگر a دارای یک عدد باشد، بردار ۱۰تایی b را به این صورت که عدد داخل a در اعداد یک تا ۱۰ ضرب شود، به دست آورید. سپس میانگین و انحراف معیار b را به دست آورید.
اگر a دارای دو عدد باشد، یک بردار به این صورت تعریف نمایید که میانگین بردار a را در بردار ۱۰۰تایی اعداد ۱ تا ۱۰۰ ضرب نموده و در ماتریس b ذخیره نماید. سپس سینوس این اعداد را بدست آورده و در ماتریس c ذخیره نماید. در نهایت مقادیر c را رسم نماید.
اگر a دارای سه عدد باشد، یک بردار به نام b به این صورت تعریف نمایید که میانگین بردار a را در بردار ۱۰۰تایی اعداد یک تا ۱۰۰ ضرب نماید، سپس یک بردار به نام c به این صورت تعریف نمایید که انحراف معیار a را در بردار
۱۰۰ تایی اعداد زوج بین ۱ تا ۲۰۰ ضرب نماید، سپس یک تابع سه بعدی به صورت زیر را رسم نماید.
𝑑 = log(𝑎𝑏^2)
در نهایت اگر تعداد اعضای a بیشتر از سه باشد یک پیغام خطا به این صورت که تعداد اعضای بردار ورودی نباید از ۳ بیشتر باشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اگر این بردار تهی باشد، در خروجی یک پیغام خطا چاپ نمایید که بردار ورودی نباید تهی باشد (با دستور error میتوان خطا ایجاد نمود).
اگر a دارای یک عدد باشد، بردار ۱۰تایی b را به این صورت که عدد داخل a در اعداد یک تا ۱۰ ضرب شود، به دست آورید. سپس میانگین و انحراف معیار b را به دست آورید.
اگر a دارای دو عدد باشد، یک بردار به این صورت تعریف نمایید که میانگین بردار a را در بردار ۱۰۰تایی اعداد ۱ تا ۱۰۰ ضرب نموده و در ماتریس b ذخیره نماید. سپس سینوس این اعداد را بدست آورده و در ماتریس c ذخیره نماید. در نهایت مقادیر c را رسم نماید.
اگر a دارای سه عدد باشد، یک بردار به نام b به این صورت تعریف نمایید که میانگین بردار a را در بردار ۱۰۰تایی اعداد یک تا ۱۰۰ ضرب نماید، سپس یک بردار به نام c به این صورت تعریف نمایید که انحراف معیار a را در بردار
۱۰۰ تایی اعداد زوج بین ۱ تا ۲۰۰ ضرب نماید، سپس یک تابع سه بعدی به صورت زیر را رسم نماید.
𝑑 = log(𝑎𝑏^2)
در نهایت اگر تعداد اعضای a بیشتر از سه باشد یک پیغام خطا به این صورت که تعداد اعضای بردار ورودی نباید از ۳ بیشتر باشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۵) برنامهای بنویسید که یک عدد از کاربر دریافت نموده، سپس اندازه آن را محاسبه نموده و جزء صحیح آن را به دست آورد (عدد ورودی ممکن است حقیقی یا مختلط نیز باشد). سپس در عدد بدست آمده بدون استفاده از دستورات داخلی متلب تمام اعداد اول از یک تا آن عدد را محاسبه نماید. سپس آنها را در خروجی نمایش دهد.
کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
inp = input(' inp = ')
a = abs(inp);
b = floor(a);
for i = 2:b
for j = 1:i
x(j) = mod(i,j);
end
y = find(x == 0);
z(1) = 0;
if length(y) == 2
z(i) = i;
else
z(i) = 0;
end
end
out = z(find(z ~= 0));
clc
out = [' ',num2str(out)];
disp(' out = '), disp(out)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
inp = input(' inp = ')
a = abs(inp);
b = floor(a);
for i = 2:b
for j = 1:i
x(j) = mod(i,j);
end
y = find(x == 0);
z(1) = 0;
if length(y) == 2
z(i) = i;
else
z(i) = 0;
end
end
out = z(find(z ~= 0));
clc
out = [' ',num2str(out)];
disp(' out = '), disp(out)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
تمرین۵) بدون استفاده از دستورات آماده متلب یک عدد از ورودی دریافت نموده، سپس تمام اعدادی را که جذر آنها کامل است و کمتر از آن عدد میباشند در خروجی نمایش دهید.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۶) برنامهای بنویسید که یک عدد دو رقمی شامل اعداد 2 تا 9 از ورودی دریافت نموده، سپس مطابق حروف لاتین روی شمارههای موبایل، تمام کلمههای دو حرفی که با ارقام یکان و دهگان این عدد ساخته میشود را در خروجی نمایش دهد (توجه داشته باشید حرف اول باید رقم دهگان و حرف دوم رقم یکان باشد).
کد این مثال به صورت زیر میباشد.
clear all
clc
%%
% inp is a number that digits between 2 & 9
% for example 22 or 75 or 94
num = input(' unmber = ');
a = mod(num,10);
b = (num - a)/10;
% x is a matrix that fit with rows show letters
% for example row 2 show 'A' , 'B' , 'C'
x = [0 0 0 0;'A' 'B' 'C' 0;'D' 'E' 'F' 0;'G' 'H'
'I' 0;...
'J' 'K' 'L' 0;'M' 'N' 'O' 0;'P' 'Q' 'R' 'S';...
'T' 'U' 'V' 0;'W' 'X' 'Y' 'Z'];
for i = 1:length(x(:,1))
if i == a
y = x(i,find(x(i,:) ~= 0));
end
if i == b
z = x(i,find(x(i,:) ~= 0));
end
end
for i = 1:length(z)
for j = 1:length(y)
w{i,j} = [z(i) y(j)];
end
end
[w1,w2] = size(w);
w = reshape(w,1,w1*w2);
out = w;
clc
disp(' all combinations are : ')
disp(out)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کد این مثال به صورت زیر میباشد.
clear all
clc
%%
% inp is a number that digits between 2 & 9
% for example 22 or 75 or 94
num = input(' unmber = ');
a = mod(num,10);
b = (num - a)/10;
% x is a matrix that fit with rows show letters
% for example row 2 show 'A' , 'B' , 'C'
x = [0 0 0 0;'A' 'B' 'C' 0;'D' 'E' 'F' 0;'G' 'H'
'I' 0;...
'J' 'K' 'L' 0;'M' 'N' 'O' 0;'P' 'Q' 'R' 'S';...
'T' 'U' 'V' 0;'W' 'X' 'Y' 'Z'];
for i = 1:length(x(:,1))
if i == a
y = x(i,find(x(i,:) ~= 0));
end
if i == b
z = x(i,find(x(i,:) ~= 0));
end
end
for i = 1:length(z)
for j = 1:length(y)
w{i,j} = [z(i) y(j)];
end
end
[w1,w2] = size(w);
w = reshape(w,1,w1*w2);
out = w;
clc
disp(' all combinations are : ')
disp(out)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top