سلام.
من کدهاتون رو به صورت زیر تغییر دادم :
سه خط اول برنامه، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب می باشد.
C همان بردار نهایی است که شما می خواهید داشته باشید. درون حلقه for ، با دستور if چک می کنیم که در چندمین عنصر بردار B ، مجموع عناصر از شماره 1 تا آن عنصر، بیش از عدد 840 می شود. هر وقت این اتفاق بیفتد، شماره یک عنصر قبل از آن (یعنی i-1) را در L ذخیره می کنیم و با دستور break از اجرای ادامه حلقه for جلوگیری می کنیم (برنامه از حلقه بیرون می آید).
با اجرای برنامه متلب بالا و دادن مقدار 50 به Nusers ، نتایج زیر در خروجی متلب نمایش داده شد :
مشاهده می کنید که طول بردار C برابر 19 می باشد و مجموع عناصر آن نیز کمتر از عدد 840 است.
موفق باشید.
من کدهاتون رو به صورت زیر تغییر دادم :
کد:
clear all
close all
clc
Nusers=input('Nusers=');
B=randi([4,80],1,Nusers);
L=Nusers;
for i=1:Nusers;
sigma=sum(B(1:i));
if (sigma>840)
L=i-1;
break
end
end
C=B(1:L)
C_length=length(C)
سه خط اول برنامه، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب می باشد.
C همان بردار نهایی است که شما می خواهید داشته باشید. درون حلقه for ، با دستور if چک می کنیم که در چندمین عنصر بردار B ، مجموع عناصر از شماره 1 تا آن عنصر، بیش از عدد 840 می شود. هر وقت این اتفاق بیفتد، شماره یک عنصر قبل از آن (یعنی i-1) را در L ذخیره می کنیم و با دستور break از اجرای ادامه حلقه for جلوگیری می کنیم (برنامه از حلقه بیرون می آید).
با اجرای برنامه متلب بالا و دادن مقدار 50 به Nusers ، نتایج زیر در خروجی متلب نمایش داده شد :
کد:
C =
Columns 1 through 15
46 41 72 65 60 7 9 10 65 76 56 14 59 12 13
Columns 16 through 19
53 29 54 61
C_length =
19
مشاهده می کنید که طول بردار C برابر 19 می باشد و مجموع عناصر آن نیز کمتر از عدد 840 است.
موفق باشید.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.