فلوچارت و الگوریتم

تعریف الگوریتم:

الگوریتم یعنی مجموعه دستوراتی که برای روش حل یک مساله از شروع تا پایان در نظر میگیریم. میتوان گفت الگوریتم مهمترین بخش برنامه نویسی است. معمولاً برای نوشتن یک برنامه، ابتدا مساله را در ذهن خود حل میکنیم، سپس الگوریتم آن را به زبان روان و فارسی از شروع تا پایان مینویسیم. در انتها الگوریتم نوشته شده را به زبان برنامه نویسی تبدیل میکنیم…

مثال: الگوریتمی بنویسید که دو عدد را جمع کند و حاصل را نمایش دهد.

حل:

۱ – شروع

۲ – ابتدا عدد A را بگیر.

۳ – عدد B را بگیر.

۴ – عدد A و B را با هم جمع کن

۵ – حاصل جمع را در خروجی نمایش بده (حاصل جمع A و B)

۶ – پایان

توضیح: منظور از “عدد را بگیر” این است که عددی را از ورودی کیبورد رایانه دریافت کنیم. و منظور از “در خروجی نمایش بده” یعنی نمایش دادن در مانیتور است. حال میخواهیم این الگوریتم را به زبان ++C تبدیل کنیم. اعداد استفاده شده را اعداد صحیح در نظر میگیریم:

int A, B;
cin >> A;
cin >> B;
cout << A + B;

مثال: الگوریتم برنامه ای که میانگین سه عدد را بگیرد و نمایش دهد.

۱ – شروع

۲ – عدد A را بگیر

۳ – عدد B را بگیر

۴ – عدد C را بگیر

۵ – اعداد A و B و C را با هم جمع کن و حاصل را در D ذخیره کن.

۶ – عدد D را بر ۳ تقسیم کن و حاصل را در D ذخیره کن.

۷ – حاصل (D) را نمایش بده.

۸ – پایان.

برای تبدیل الگوریتم به زبان برنامه نویسی ++C بایست به این نکته توجه کنیم که در اینجا چون از تقسیم استفاده میکنیم عدد D را از نوع float تعریف میکنیم تا قابلیت ذخیره و نمایش اعشار را داشته باشد اما میتوانیم اعداد A و B و C را به صورت عدد صحیح (int) تعریف کنیم چون در صورت مساله از ما خواسته نشده که این اعداد قابلیت نمایش اعشار داشته باشند:

int A, B, C;
float D;
cin >> A;
cin >> B;
cin >> C;
D = A + B + C;
D = D / 3;
cout << D;

 مثال: الگوریتم برنامه ای که عددی را از ورودی بگیرد مشخص کند زوج است یا فرد.

حل: میدانیم که تفاوت عدد زوج و فرد زمانی مشخص میشود که عدد را بر ۲ تقسیم کنیم. اگر باقیمانده تقسیم صفر شد میفهمیم عدد زوج است و اگر باقیمانده ۱ شد یعنی عدد فرد است.

۱- شروع

۲- عدد A را از ورودی دریافت کن.

۳- عدد A را بر ۲ تقسیم کن و باقیمانده تقسیم را در B ذخیره کن.

۴- اگر B برابر با صفر بود در خروجی چاپ کن “زوج است” در غیر اینصورت چاپ کن “فرد است”

۵- پایان

برای تبدیل این الگوریتم به زبان ++C میبایست از دستور شرطی if و همچنین از عملگر باقیمانده تقسیم (%) استفاده کنیم:

int A, B;
cin >> A;
B = A % 2;
if (B == 0)
{
   cout << "Zoj Ast";
}
else
{
   cout << "Fard Ast";
}

رسم فلوچارت این برنامه به صورت زیر خواهد بود:

فلوچارت و الگوریتم


 مثال: الگوریتم برنامه ای که اعداد کوچکتر از ۱۰ را در خروجی چاپ کند.

حل: در اینجا نیاز به یک شمارنده داریم که از عدد ۱ تا ۹ را به صورت یکواحد به یکواحد شمرده و در خروجی نمایش دهد. باید یک شرط قرار دهیم که هر زمان این شمارنده از ۱۰ بزرگتر شد برنامه متوقف شود.

۱- شروع

۲- عدد A را برابر با ۱ قرار بده.

۳- عدد A را در خروجی چاپ کن.

۴- عدد A را با ۱ جمع کن و حاصل را در A ذخیره کن.

۵- اگر A کوچکتر از ۱۰ بود به مرحله ی ۳ برگرد.

۶- پایان.

دقت داشته باشید که در مرحله ۵ اگر A بزرگتر از ۱۰ باشد، برنامه به مرحله ۶ یعنی پایان میرود ولی اگر A کوچکتر از ۱۰ باشد به مرحله ۳ برمیگردد یعنی یک تکرار که به تکرار در برنامه نویسی در اصطلاح “حلقه” میگوییم. نمایش این برنامه (حلقه) به زبان ++C به این صورت است:

for (int A=1; A  < 10; A++)
{
   cout << A;
}

 مثال: الگوریتم برنامه ای که اعداد زوج کوچکتر از ۲۰ را در خروجی چاپ کند.

حل: ابتدا به یک شمارنده (A) نیاز داریم که بتواند اعداد ۱ تا ۱۹ تا بشمارد و اعداد زوج آن را در خروجی نمایش دهد. در مثال های قبلی دیدیم که وقتی باقیمانده تقسیم یک عدد بر ۲ برابر با صفر بود یعنی آن عدد زوج است. پس در اینجا یک عدد دیگر (B) تعریف میکنیم که بتواند باقیمانده تقسیم A بر ۲ را در خود ذخیره کند. اگر B برابر با صفر بود میفهمیم عدد زوج است.

۱- شروع

۲- عدد A را برابر با ۱ قرار بده.

۳- عدد A را با ۱ جمع کن و حاصل را در A ذخیره کن.

۴- عدد A را بر ۲ تقسیم کن و باقیمانده تقسیم را در B ذخیره کن.

۵- اگر A بزرگتر یا مساوی ۲۰ بود برو به مرحله ۸٫

۶- اگر B برابر با صفر بود در خروجی A را چاپ کن.

۷- برگرد به مرحه ۳٫

۸- پایان.

توجه داشته باشید که در مرحله ۵ تنها زمانی که هر دو شرط برقرار باشد یعنی هم B برابر با صفر باشد و هم A کوچکتر از ۲۰ باشد، عمل چاپ و رفتن به مرحله ۳ انجام میشود در غیراینصورت از مرحله ۵ گذر میکند و به مرحله ۶ یعنی پایان میرود.

int A, B;
for (A=1; A  < 20; A++)
{
   B = A % 2;
   if (B == 0)
   {
      cout << A;
   }
}

فلوچارت برنامه فوق به صورت زیر است:

فلوچارت و الگوریتم


 مثال: الگوریتم برنامه ای که عددی را از ورودی بگیرد و یکان آن را در خروجی چاپ کند.

حل: برای اینکه یکان یک عدد صحیح را بتوانیم مشخص کنیم، کافیست باقیمانده تقسیم آن عدد بر ۱۰ را بگیریم. برای مثال اگر عدد صحیح ۳۵۲ را در نظر بگیریم و آن را بر ۱۰ تقسیم کنیم خارج قسمت عدد ۳۵ و باقیمانده عدد ۲ میشود که همان یکان آن است.

۱- شروع

۲- عدد A را از ورودی دریافت کن.

۳- عدد A را بر ۱۰ تقسیم کن و باقیمانده تقسیم را در B ذخیره کن.

۴- عدد B را در خروجی چاپ کن.

۵- پایان.

 int A, B; 
cin >> A; 
B = A % 10; 
cout << B;
 

جهت شناخت بیشتر انواع داده ها آموزش داده ها و متغیرها را مطالعه کنید.


مثال: الگوریتم برنامه ای که اعداد کوچکتر از ۱۰ را با هم جمع کند و حاصل را نمایش دهد.

حل: نیاز به یک شمارنده داریم که اعداد ۱ تا ۹ را بشمارد (توسط یک حلقه تکرار) و همچنین نیاز به یک متغیر دیگر داریم که بتواند مجموع این اعداد را در خود ذخیره کند. نام شمارنده را A میگذاریم و حاصل جمع را B مینامیم.

۱- شروع

۲- مقدار ۱ را در عدد A قرار بده و مقدار ۰ را در B قرار بده.

۳- مقدار A را با B جمع کن و حاصل را در B ذخیره کن.

۴- عدد A را با ۱ جمع کن و حاصل را در A ذخیره کن.

۵- اگر A کوچکتر از ۱۰ بود برگرد به مرحله ۳٫

۶- عدد B را در خروجی نمایش بده.

۷- پایان.

int B = 0;
for (int A = 1; A  < 10; A++)
{
   B = A + B;
}
cout << B;

لطفاً توجه داشته باشید که ما مقدار اولیه ۰ را به B نسبت دادیم. دلیل این است که برای اولین بار که حلقه انجام میشود یعنی زمانی که دستور B=A+B میخواهد اجرا شود در سمت راست تساوی متغیر B باید دارای یک مقدار اولیه باشد تا بتواند در محاسبات ریاضی استفاده شود. به یاد داشته باشید که در کار با اعداد، سمت راست تساوی همیشه یک عملیات ریاضی است و در عملیات ریاضی تمام متغیرها باید دارای مقدار باشند.


 مثال: الگوریتم برنامه ای که ۱۰ عدد را از ورودی دریافت کند و میانگین آنها را محاسبه و حاصل را در خروجی چاپ کند.

حل: به یک حلقه نیاز داریم که ۱۰ بار تکرار شود. پس به یک شمارنده حلقه نیاز داریم که آن را A مینامیم. متغیری به نام B داریم که اعدادی که از ورودی میگیریم را در آن قرار میدهیم. به یک متغیر دیگر به نام C نیاز داریم که هر بار که عددی را از ورودی میگیرد آن را در C جمع کند تا در نهایت با استفاده از آن بتوانیم میانگین را حساب کنیم.

۱- شروع

۲- عدد A را برابر با ۰ قرار بده.

۳- عدد C را برابر با ۰ قرار بده.

۴- عدد B را از ورودی بگیر.

۵- عدد B را با C جمع کن و حاصل را در C ذخیره کن.

۶- عدد A را با ۱ جمع کن و حاصل را در A ذخیره کن.

۷- اگر A کوچکتر از ۱۰ بود برو به مرحله ۴٫

۸- عدد C را در خروجی نمایش بده.

۹- پایان.

int A, B, C=0;
for (A=0; A <10; A++) { cin >> B;
    C = C + B;
}
C = C / 10;
cout << C;

لطفاً توجه داشته باشید که در مثال فوق ما شمارنده A را از صفر شروع کردیم و در شرط حلقه A <10 را استفاده کردیم یعنی از 0 تا 9 که در مجموع میشود 10 عدد.


 مثال: الگوریتم برنامه ای که نمرات ۲۰ دانشجو را از ورودی دریافت و مشخص کند چه تعداد از آنها نمره قبولی را کسب کرده اند.

حل: به یک شمارنده برای ذخیره تعداد دانشجویان قبول شده نیاز داریم و به یک حلقه با تکرار ۲۰ بار نیاز داریم که در هر بار تکرار یک نمره از ورودی بگیرد و بررسی کند که آیا آن نمره ۱۰ یا بیشتر (نمره قبولی) بوده است یا خیر. شمارنده تعداد قبول شده ها را Count مینامیم و شمارنده حلقه را K و نمره ای که از ورودی میگیرد را Num نامگذاری میکنیم.

۱- شروع

۲- عدد Count را برابر با ۰ قرار بده.

۳- عدد K را برابر با ۰ قرار بده.

۴- عدد Num را از ورودی دریافت کن.

۵- اگر Num بزرگتر یا مساوی ۱۰ بود یکواحد به Count اضافه کن.

۶- یک واحد به K اضافه کن.

۷- اگر K کوچکتر از ۲۰ بود برو به مرحله ۴٫

۸- عدد Count را در خروجی نمایش بده.

۹- پایان.

میدانیم که نمرات درسی دارای اعشار هم هستند، پس متغیر Num را از نوع float تعریف میکنیم که قابلیت دریافت اعشار هم داشته باشد.

int Count = 0,
float Num;
for (int K=0; K  < 20; K++) { cin >> Num;
     if (Num >= 10)
     {
         Count = Count + 1;
     }
}
cout << Count;

 مثال: الگوریتم برنامه ای که عددی را از ورودی دریافت کند و صدگان آن را مشخص کند و در خروجی نمایش دهد.

حل: مطابق مثال های قبلی میدانیم که اگر یک عدد صحیح را بر ۱۰ تقسیم کنیم، باقی مانده تقسیم آن همان یکان آن عدد است. در اینجا ما صدگان عدد را نیاز داریم. پس ابتدا عدد را بر ۱۰۰ تقسیم میکنیم تا یکان و دهگان آن حذف شود سپس باقیمانده تقسیم بر ۱۰ میگیریم.

۱- شروع

۲- عدد A را از ورودی دریافت کن.

۳- عدد A را بر ۱۰۰ تقسیم کن و حاصل را در A ذخیره کن.

۴- باقی مانده تقسیم عدد A بر ۱۰ را در B ذخیره کن.

۵- عدد B را در خروجی نمایش بده.

۶- پایان.

int A, B;
cin >> A;
A = A / 100;
B = A % 10;
cout >> B;

برای مثال اگر عدد صحیح ۱۲۵۶ را در نظر بگیریم، میخواهیم صدگان آن یعنی عدد ۲ را در خروجی نمایش دهیم. حال اگر یکبار آن را بر ۱۰۰ تقسیم کنیم عدد ۱۲ باقی میماند. اگر باقیمانده تقسیم عدد ۱۲ بر ۱۰ را در نظر بگیریم، عدد ۲ باقی میماند که همان جواب مساله است. *واضح است که این برنامه فقط برای اعداد بزرگتر از ۱۰۰ (که دارای صدگان هستند) جواب میدهد.


 مثال: الگوریتم برنامه ای که عددی را از ورودی دریافت کند و مشخص کند چند رقمی است.

حل: در اینجا به یک شمارنده و یک حلقه نیاز داریم. شمارنده تعداد ارقام را مشخص میکند که در اینجا با نام Counter تعریف کرده ایم. میدانیم که با تقسیم هر عدد بر ۱۰ میتوانیم یکان آن عدد را حذف کنیم. در اینجا به کمک حلقه، عدد مورد نظر را n بار بر ۱۰ تقسیم میکنیم تا جایی که عدد صفر شود و با هر تقسیم یک واحد به شمارنده اضافه میکنیم.

۱- شروع.

۲- عدد A را از ورودی دریافت کن.

۳- عدد A بر ۱۰ تقسیم کن و حاصل را در A ذخیره کن.

۴- عدد Counter را با ۱ جمع کن و در Counter ذخیره کن.

۵- اگر A بزرگتر از صفر بود، برو به مرحله ۳٫

۶- عدد Counter را در خروجی نمایش بده.

۷- پایان.

int A, Counter=0;
while (A > 0)
{
    A = A / 10;
    Counter = Counter + 1;
}
cout << Counter;

 

—> قسمت دوم آموزش الگوریتم نویسی <---

لینک های مفید:

پروژه نرم افزار دیتابیس آفلاین Access

انجام پروژه های برنامه نویسی پذیرفته میشود
لینک کانال تلگرام : http://t.me/cproject

آموزش الگوریتم در برنامه نویسی (بخش اول)

35 thoughts on “آموزش الگوریتم در برنامه نویسی (بخش اول)

  • 08/25/2018 at 10:49
    Permalink

    سلام بر همه دوستان
    این الگوریتمی پاسخ مهمی دارد هرکسی که توان انجام آن را دارد پاسخ را اعلام کند…

    الگوریتمی بنویسید که آرایه ای به طول n را از ورودی بگیرد و آرایه ای به طول n تولید کند به نحوی که هر خانه خروجی برابر حاصلظرب تمامی خانه های ورودی به غیر از خانه متناظر باشد

    Reply
    • 08/26/2018 at 13:18
      Permalink

      با فرض اینکه n=10:

      int A[10];
      int B[10];
      for (int k=0;k<10;k++)
      {
            cin >> A[k];
      }
      for (int i=0; i<10;i++)
      {
            int multi = 1;
            for (int j=0;j<10;j++)
            {
                  if ( j != i )
                  {
                        multi = multi * A[j];
                  }
            }
            B[i] = multi;
      }
      for (int s=0;s<10;s++)
      {
            cout << B[s];
      }
      
      Reply
  • 08/25/2018 at 16:18
    Permalink

    دستور شمارنده با داشتن یک رقم اعشار میخواستم

    Reply
    • 08/31/2018 at 00:36
      Permalink

      لطفاً بیشتر توضیح بفرمایید

      Reply
  • 09/28/2018 at 16:30
    Permalink

    سلام
    لطفا این دوتا رو حل کنین
    الگوریتمی بنویسید که طول اضلاع یک مثلث را خوانده محیط و مساحت آن را حساب کنید.

    الگوریتمی بنویسید که طول زمانt برحسب ثانیه را به عنوان ورودی دریافت نمایدو مشخص نماید چند ساعت چند دقیقه و چند ثانیه است.

    Reply
    • 09/29/2018 at 18:29
      Permalink

      ۱- برنامه ای که محیط و مساحت مثلت را حساب کند (با فرض اینکه x قاعده و y ارتفاع مثلث باشد):

      int x, y, z;
      cin >> x >> y >> z;
      cout << "Mohit:" << x+y+z;
      cout << "Masahat: " << x*y/2;
      

      ۲- برنامه تبدیل ثانیه به ساعت، دقیقه و ثانیه

      int t;
      cin >> t;
      int H, M, Sec;
      H = t / 3600;
      M = (t / 60) % 60;
      Sec = t % 60;
      cout << H << ":" << M << ":" << Sec;
      
      Reply
  • 10/12/2018 at 14:14
    Permalink

    با سلام و خسته نباشید ببخشید میشه برنامه برعکس کردم یا مقلوب اعداد رو بگین خیلی ممنون میشم لازم دارم شدید

    Reply
  • 10/16/2018 at 00:27
    Permalink

    سلام ببخشید این الگوریتم روو میتونید بنویسید؟؟

    الگوریتمی بنویسید که بدون متغیر سومی محتویات دو متغیر را عوض کند!!

    Reply
    • 10/16/2018 at 18:17
      Permalink

      برنامه تغییر مقدار دو متغیر بدون کمک متغیر سوم:
      int A = 2;
      int B = 3;
      A = A + B;
      B = A – B;
      A= A- B;
      توضیح اینکه مقدار دو متغیر A و B را در ابتدا ۲ و ۳ در نظر گرفتیم که هر مقداری به دلخواه میتوانند باشند.

      Reply
  • 10/17/2018 at 22:35
    Permalink

    سلام لطفا اینو حل کنین
    برنامهای بنوسید که یک عدد را گرفته سپس حاصل جمع مقسوم علیههای آن را چاپ کند

    Reply
    • 10/18/2018 at 12:36
      Permalink

      برنامه حاصل جمع مقسوم علیه های یک عدد به زبان C++:

      int n;
      int sum = 0;
      cout <<" Enter Number :";
      cin >>n;
      for(int i = 1; i <= n ; i++)
      {
           if( n % i == 0 )
           {
                sum = sum + i;
           }
      }
      cout << sum;
      
      Reply
  • 10/18/2018 at 16:38
    Permalink

    سلام لطفا اینو به زبان فارسی حل کنین خیلی ممنون میشم

    برنامهای بنوسید که یک عدد را گرفته سپس حاصل جمع مقسوم علیههای آن را چاپ کند

    Reply
    • 10/18/2018 at 22:38
      Permalink

      برنامه حاصل جمع مقسوم علیه های یک عدد به فارسی:
      ۱- مقدار Sum را برابر صفر قرار بده
      ۲- مقدار n را از ورودی دریافت کن
      ۳- مقدار i را برابر با ۱ قرار بده
      ۴- اگر i کوچکتر یا مساوی n بود برو به مرحله ۵ در غیراینصورت برو به مرحله ۷
      ۵- اگر باقیمانده تقسیم n بر i برابر با صفر بود، مقدار قبلی sum را با i جمع کن و در sum ذخیره کن
      ۶- یکواحد به i اضافه کن و برو به مرحله ۴
      ۷- مقدار sum را در خروجی نمایش بده

      Reply
  • 10/19/2018 at 16:19
    Permalink

    سلام
    این دو الگوریتم چه فرقی با هم دارند

    *الگوریتمی بنویسید که تعداد ۵ عدد را از ورودی خوانده، اعداد زوج را در خروجی چاپ می کند

    *الگوریتمی بنویسید که ۵ عدد را از ورودی بگیرد و تعداد اعدادی که زوج هستند که را در خروجی چاپ کند

    Reply
    • 10/19/2018 at 16:35
      Permalink

      فرض کنید پنج عددی که از ورودی گرفته شده اینها هستند: ۱۰-۱۱-۱-۵-۸
      در الگوریتم اول در خروجی چاپ میشود: ۱۰-۸ که در واقع اعداد زوجی هستند که در بین این پنج عدد وجود دارد
      اما در الگوریتم دوم در خروجی چاپ میشود: ۲ که “تعداد” اعداد زوجی هستند که وجود دارند

      Reply
  • 10/20/2018 at 17:27
    Permalink

    سلام
    خیلی ممنون که لطف میکنین به سوالامون جواب میدین
    ببخشید چطور میتونم به نوشتن این برنامه ها و الگوریتم ها مسلط بشم و درست و حسابی یادشون بگیرم آخه من تو نوشتنشون خیلی مشکل دارم درکشون یه خورده برام سخته
    میشه راهکارشو بگین و اینکه یه منبع خوب معرفی کنین

    Reply
    • 10/20/2018 at 20:49
      Permalink

      خیلی عادیه که اولش براتون دشوار باشه.
      کمی تمرین فقط لازمه
      هر الگوریتم هرچقدر هم که ساده باشه رو بارها و بارها مرور کنید تا کامل درکش کنید.
      الگوریتم هایی که توی همین پست و پست بعدی (قسمت دوم) نوشتیم مثال های خوبی برای شروع و تمرین هستند. در پست های بعدی که میذاریم مثال های بیشتری رو توضیح میدیم
      بعد از مدتی تمرین، هر الگوریتم جدیدی هم که بخواید بنویسید با کمی فکر خودتون میتونید حل کنید
      و پیشنهاد میکنم به صورت عملی برنامه ها رو در Visual Studio پیاده سازی کنید.
      آموزش اجرای ویژوال استودیو در سایت ما هست، هر سوال دیگه ای در این رابطه داشته باشید بپرسید حتماً پاسخ داده میشه

      Reply
  • 10/20/2018 at 21:59
    Permalink

    ممنون از لطف بیش از اندازه اتان خدا خیرتان بدهد
    ممنون میشم اینم حل کنین و توضیح بدین منظورش از اعداد کامل چی هست البته به زبان فارسی
    برنامه ای بنوسید که۱۰۰ عدد را گرفته سپس تعداد اعدادی که کامل هستد را چاپ کند

    Reply
    • 10/20/2018 at 22:14
      Permalink

      منظور از عدد کامل، عددی است که برابر باشد با مجموع مقسوم علیه هایش به جز خودش. اولین عدد کامل، عدد ۶ است زیرا: ۶=۳+۲+۱ به طوریکه تمام اعداد ۳ و ۲ و ۱ مقسوم علیه های عدد ۶ هستند.
      حالا برای حل این مساله و نوشتن الگوریتم آن، همان الگوریتم قبلی که براتون نوشته بودم، یعنی: “برنامه ای که حاصل مجموع مقسوم علیه های یک عدد را چاپ کند” را با کمی تغییر به الگوریتم جدیدی تبدیل میکنیم.

      برنامه به زبان C++

      int A[100];
      for (int k=0; k < 100; k++)
      {
           int n;
           int sum = 0;
           cout <<" Enter Number :";
           cin >>n;
           for(int i = 1; i < n ; i++)
           {
                if( n % i == 0 )
                {
                     sum = sum + i;
                }
           }
           if (sum == n)
           {
                A[k] = n;
           }
      }
      for (int j=0; j<100; j++)
      {
           cout << A[j] << endl;
      }
      
      Reply
  • 10/20/2018 at 22:48
    Permalink

    خیلی عذر میخوام
    عدد کامل منظورم بود و اینکه میشه به زبان فارسی بنویسیدش چون هنوز اینجوری کار نکردیم
    واینکه زبان c با c++ فرقی داره؟

    Reply
    • 10/20/2018 at 23:01
      Permalink

      بله بنده هم عدد کامل رو نوشته بودم براتون، غلط املایی بود اصلاح شد.
      زبان C++ همان کامل شده زبان C هست. در حال حاضر زبان C تقریباً منسوخ شده و همه برنامه نویسان با C++ کار میکنند. ولی ایرادی هم نداره جهت یادگیری از C شروع کنید
      الگوریتم فوق به زبان فارسی:
      ۱- آرایه ای به نام A به طول ۱۰۰ تعریف کن.
      ۲- مقدار K را برابر صفر قرار بده
      ۳- اگر k کوچکتر از ۱۰۰ بود، برو به مرحله ۴ در غیر اینصورت برو به مرحله ۱۱
      ۴- مقدار sum را برابر صفر قرار بده و n را از ورودی دریافت کن
      ۵- مقدار i را برابر ۱ قرار بده
      ۶- اگر مقدار i کوچکتر از n بود برو به مرحله ۷ در غیر اینصورت برو به مرحله ۹
      ۷- اگر باقیمانده تقسیم n بر i برابر صفر بود، مقدار قبلی sum را با i جمع کن و در sum ذخیره کن
      ۸- یکواحد به i اضافه کن و برو به مرحله ۶
      ۹- اگر sum برابر با n بود، n را در خانه i ام آرایه A ذخیره کن.
      ۱۰- یکواحد به k اضافه کن و برو به مرحله ۳
      ۱۱- مقدار j را برابر صفر قرار بده
      ۱۲- اگر j کوچکتر از ۱۰۰ بود، برو به مرحله ۱۳ در غیراینصورت برو به مرحله ۱۵
      ۱۳- خانه j ام آرایه A را در خروجی نمایش بده
      ۱۴- یکواحد به j اضافه کن و برو به مرحله ۱۲
      ۱۵- پایان

      Reply
  • 10/22/2018 at 16:15
    Permalink

    من الگوریتم اعداد دو رقمی مضرب ۵ را می خواستم

    Reply
    • 10/22/2018 at 17:29
      Permalink

      الگوریتم اعداد دو رقمی مضرب ۵:
      برای حل این مساله، با کمک یه حلقه از ۱۰ تا ۹۹ تمام اعداد را بررسی میکنیم به اینصورت که هر عددی که باقیمانده تقسیمش بر ۵، برابر با صفر بود یعنی آن عدد بر ۵ بخش پذیر است بنابراین مضربی از ۵ است.
      ۱- شروع
      ۲- مقدار i را برابر ۱۰ قرار بده
      ۳- اگر i کوچکتر یا مساوی ۹۹ بود برو به مرحله ۴ در غیر اینصورت برو به مرحله ۶
      ۴- اگر باقیمانده تقسیم i بر ۵ برابر صفر بود، i را در خروجی نمایش بده.
      ۵- یکواحد به i اضافه کن و برو به مرحله ۳
      ۶- پایان

      برنامه به زبان C++:

      for (int i=10; i<=99; i++)
      {
          if (i % 5 = 0)
          {
              cout << i << endl;
          }
      }
      
      Reply
  • 10/27/2018 at 23:07
    Permalink

    سلام ببخشید من یه عکس توی ایمیلتون براتون فرستادم یه چندتا سواله
    میشه به زبان c حلشون کنین ممنون میشم واسه فردا لازمشون دارم

    Reply
    • 10/28/2018 at 00:21
      Permalink

      ایمیلی برای بنده ارسال نشده متاسفانه

      Reply
  • 10/28/2018 at 08:40
    Permalink

    سلام براتون فرستادمش
    اشتباهی واسه یه ایمیل دیگه فرستاده بودم
    میشه سریع حلشون کنین

    Reply
  • 11/02/2018 at 18:35
    Permalink

    سلام
    میشه این دوتا رو به زبان c حل کنین

    برنامه ای بنویسید که سه عدد A, B ,C را از کاربر دریافت کند و سپس کوچکترین عدد را چاپ کند.

    برنامه ای بنویسید که سه عدد A, B ,C را از کاربر دریافت کند و سپس بزرگترین عدد را چاپ کند

    Reply
    • 11/02/2018 at 18:56
      Permalink

      حل الگوریتم پیدا کردن ماکزیمم یا مینیمم اعداد:
      در ساده ترین روش، ما میتوانیم سه عدد A,B,C را ابتدا تعریف کنیم و از ورودی دریافت کنیم، سپس این اعداد را با یکدیگر مقایسه کنیم و بزرگترین یا کوچکترین آنها را نمایش بدیم. برای مثال الگوریتم پیدا کردن بزرگترین عدد بین سه عدد به صورت زیر خواهد بود:

      int A,B,C;
      cin >> A >> B >> C;
      if (A > B && A > C)
      {
          cout << A;
      }
      if (B > A && B > C)
      {
          cout << B;
      }
      if (C > A && C > B)
      {
          cout << C;
      }
      

      اما، به عنوان یک برنامه نویس واقعی، میبایست الگوریتم را به نحوی بنویسیم که در هر شرایطی کارکرد خود را از دست ندهد. مثلاً فرض کنید میخواهیم الگوریتم بزرگترین عدد بین ۱۰۰ عدد را محاسبه کنیم، واضح است که از روش بالا نمیتوان استفاده کرد زیرا مقایسه کردن ۱۰۰ عدد با یکدیگر نیازمند نوشتن صدها یا هزاران خط برنامه نویسی است. بنابراین از حلقه و آرایه برای این منظور استفاده میکنیم که به صورت زیر خواهد بود:

      ۱- الگوریتم پیدا کردن بزرگترین عدد بین چند عدد:

      int A[3];
      int max;
      for (int i=0; i< 3; i++)
      {
          cin >> A[i];
      }
      max = A[0];
      for (int j=0; j<3; j++)
      {
          if (A[j] > max)
          {
              max = A[i];
          }
      }
      cout << max;
      

      ۲- الگوریتم پیدا کردن کوچکترین عدد:

      int A[3];
      int max;
      for (int i=0; i< 3; i++)
      {
          cin >> A[i];
      }
      max = A[0];
      for (int j=0; j<3; j++)
      {
          if (A[j] < max)
          {
              max = A[i];
          }
      }
      cout << max;
      

      بنابراین، به کمک حلقه و آرایه الگوریتم را به نحوی نوشتیم که برای تعداد بیشتر از ۳ عدد نیز کاربرد داشته باشد. برای این منظور کافیست در الگوریتم فوق هرجا عدد ۳ باشد، را به تعداد جدید تغییر بدید مثلا اگر ۱۰۰ عدد دارید به جای ۳ بنویسید ۱۰۰ و تغییر دیگری در الگوریتم نیاز نیست

      Reply
  • 11/06/2018 at 23:36
    Permalink

    با سلام لطفا اگه میشه اینو حل کنین
    برنامه‌ای بنویسید که سه عدد صحیح مثبت را به عنوان ورودی از کاربر دریافت کند و در صورتی که امکان ساخت مثلث قائم الزاویه با طول اضلاع داده شده وجود داشته باشد YES و در غیر این صورت NO چاپ کند.

    Reply
    • 11/07/2018 at 17:18
      Permalink

      حل: بررسی امکان رسم مثلث قائم الزاویه با سه عدد دریافتی از ورودی.
      میدانیم که در مثلث قائم الزاویه طبق قضیه فیثاغورس، مربع وتر = مربع یک ضلع + مربع ضلع دیگر
      و همچنین میدانیم که وتر، بزرگترین ضلع است.
      بنابراین برای حل این مساله، میبایست:
      الف) اضلاع را شناسایی میکنیم (بزرگترین عدد وتر است و دو عدد دیگر اضلاع هستند)
      ب) با استفاده از قضیه فیثاغورس بررسی میکنیم که آیا امکان رسم مثلث وجود دارد یا خیر
      حل مساله به زبان C++:

      int A,B,C;
      int vatar, zel1, zel2;
      cin >> A >> B >> C;
      if (A > B && A > C)
      {
          vatar = A;
          zel1 = B;
          zel2 = C;
      }
      if (B > A && B > C)
      {
          vatar = B;
          zel1 = A;
          zel2 = C;
      }
      if (C > A && C > B)
      {
          vatar = C;
          zel1 = A;
          zel2 = B;
      }
      
      if (vatar*vatar == zel1*zel1 + zel2*zel2)
      {
          cout << "YES";
      }
      else
      {
          cout << "NO";
      }
      

      جهت تست برنامه سه عدد ۱۰و۲۴و۲۶ را به برنامه بدهید.

      Reply
  • 11/16/2018 at 23:21
    Permalink

    سلام ممکنه اینارو حل کنین:
    برنامه ای بنویسید که عدد n را دریافت کرده و حاصل سری زیر را چاپ کند: ۱ + ۳ – ۵ + ۷ – ۹ + ۱۱… – n

    برنامه ای بنویسید که عدد x را دریافت کرده و مجموع ارقام زوج و تعداد ارقام زوج را چاپ کند

    Reply
    • 11/18/2018 at 20:24
      Permalink

      سوال۱: برنامه ای که n را بگیرید و حاصل سری ۱+۳-۵+۷-۹+۱۱…n را چاپ کند:
      حل: به زبان C++

      int n;
      cin >> n;
      int sign = 0;
      int sum = 1;
      for (int i = 3; i <= n; i = i + 2)
      {
      	if (sign == 0)
      	{
      		sum = sum + i;
      		sign = 1;
      	}
      	else if (sign == 1)
      	{
      		sum = sum - i;
      		sign = 0;
      	}
      }
      cout << sum;
      

      توضیح: sign یک علامت مشخص کننده منفی یا مثبت است که هربار عوض میشود و باعث میشود اعداد یکی درمیان جمع یا تفریق شوند.

      سوال۲: برنامه ای که عدد x را از ورودی بگیرد، مجموع و تعداد ارقام زوج آن عدد را چاپ کند.
      حل: به زبان C++

      int x;
      cin >> x;
      int sum = 0, count = 0;
      while (x > 0)
      {
      	int temp = x % 10;
      	if (temp % 2 == 0)
      	{
      		count++;
      		sum += temp;
      	}
      	x /= 10;
      }
      cout << "Sum is:" << sum;
      cout << "Count is:" << count;
      

      توضیح: در یک حلقه while تا زمانی که x بزرگتر از صفر باشد، باقیمانده تقسیم آن عدد بر ۱۰ را میگیریم که همان یکان آن عدد است. سپس بررسی میکنیم که آیا باقیمانده تقسیم آن بر ۲ برابر صفر است یا خیر. اگر بله باشد، یعنی عدد زوج است و میبایست یکواحد به شمارنده (count) اضافه کنیم و همچنین آن عدد را در مجموع ارقام (sum) نیز جمع کنیم.

      Reply
  • 11/30/2018 at 13:23
    Permalink

    ۲ عدد دریافت کند و مشخص کند آیا آن اعداد بر هم بخش پذیرند یا خیر ؟
    ۲ عدد دریافت کند و از کوچک به بزرگ آن ها را نمایش دهد
    ۲ عدد از کاربر دریافت کند و اعداد صحیح بین آن ها را نمایش دهد
    ۱ عدد دریافت کند و مشخص کند چه مقسوم الیه هایی دارد
    اعداد ۱ تا ۱۰۰ را جمع کرده و حاصل آن را چپ کن
    ممنون میشم الگوریتم این ها رو فارسی جواب بدین با تشکر

    Reply
    • 11/30/2018 at 22:29
      Permalink

      ۱) برنامه ای که ۲ عدد دریافت کند و مشخص کند که آیا بر هم بخش پذیر هستند یا خیر.
      حل: میدانیم که وقتی دو عدد بر هم بخش پذیر باشند، یعنی باقیمانده تقسیم آنها برابر با صفر خواهد بود. در زبان C++ باقیمانده تقسیم را با علامت % محاسبه میکنیم:

      int a,b;
      cin >> a >> b;
      if (a%b==0 || b%a==0)
      cout << "Yes";
      else
      cout << "No";
      
      Reply

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سیزده − ده =