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

شنبه, ۱۲ بهمن ۱۳۹۲، ۰۸:۰۷ ب.ظ

      مسئله:برنامه ای بنویسید که اعدادی را از ورودی خوانده و تشخیص دهد که آیا اعداد مورد نظر کامل اند یا خیر؟(پس از بررسی هر عدد،برنامه باید از کاربر سوال کند که آیا می خواهد به کارش ادامه دهد یا خیر.) - در ضمن عددی که مجموع مقسوم علیه های آن به جز خودش برابر با آن عدد باشد،اول است.


      حل مسئله:

#include <stdio.h>
#include <conio.h>

int main()
{
    int x,sum;
   
    l1:sum=0;
    printf("\nEnter a number:");
    scanf("%d",&x);
    for(int i=1;i<x;i++)
       {
         if((x%i)==0)
           sum=sum+i;
       }
    if(sum==x)
      printf("\nYour number is complete.");
    else
      printf("\nYour number is not complete.");
    printf("\nDo you want continue?(y\\n)");
    if((getch())=='y')
      goto l1;
    else
    return 0;
       
}

     مکانیسم:این برنامه عددی را از کاربر در یافت می کند،با استفاده از حلقه ی for،باقی مانده تقسیم تک تک اعداد کوچکتر از عدد ورودی را بر عدد ورودی به دست می آورد و اگر باقی مانده ای صفر شد(بر عدد بخش پذیر بود)،آن عدد را با استفاده از متغیری نگه می دارد،پس از خروج از حلقه for در صورتی که محموع اعداد بخش پذیر با عدد ورودی برابر بودند،پیغامی مبنی بر کامل بودن عدد چاپ می کند واگر برابر نیودند پیغام کامل نبودن را چاپ می کند.در پایان هم از کاربر سوال می کند که آیا مایل به ادامه کار هست یا خیر،اگر مایل بود برنامه از اول اجرا می شود در غیر این صورت از برنامه خارج می شود.

     توضیحات:

  1. از ابتدا مقدار متغیر sum (که قرار است مجموع اعداد کمتر از عدد ورودی را که دارای باقیمانده صفر باشند را در خود نگه دارد.)صفر قرار دادیم تا در زمان استفاده خالی از مقدار باشد.
  2. در شرط for ، از علامت کوچکتر استفاده کردیم،زیرا اگر از علامت کوچکتر مساوی استفاده می نمودیم مقدار متغیر i به مقدار عدد ورودی می رسید و آن را بر عدد ورودی تقسیم می کرد که این خلاف قضیه ی یافتن اعداد کامل است.
  3. در قسمت پایانی که سوالی درباره ی ادامه دادن یا ندادن می شود،از تابع getch استفاده کردیم.کامپایلر یا اجرا کننده برنامه وقتی به این خط از کد می رسد،تابع getch شروع به کار می کند و منتظر فشردن کلیدی توسط کاربر می شود،که در اینجا اگر کاربر کلید y را بفشرد،دستورات شرط اجرا می شود و اگر نه دیگر دستوران مربوط به درست نبودن شرط اجرا می شود.
  4. در قسمت شرط پایانی برنامه از دستور goto استفاده شده است.دستور goto می تواند از قسمتی از برنامه به قسمتی دیگر از آن که در جلوی این دستور ذکر شده پرش دهد.در اینجا اگر شرط اجرا شود کامپایلر به قسمت ابتدای برنامه (l1) پرش می کند.
  5. کلمه روبه رو ی تابع goto را در قسمت ابتدای برنامه جایی قرار دادیم که دوباره مقدار متغیر sum را صفرکند و آن را برای نگه داری مقدار های جدید آماده کند.
  6. در بخش دستورات else در پایان برنامه هیچ عبارتی قرار ندادیم،زیرا عبارتی که بلافاصله بعد از آن آمده است return 0 است و اگر این دستور اجرا شود مقدار صفر را به برنامه اصلی باز می گرداند و برنامه خود به خود تمام می شود.البته در اینجا می توانستیم برای دستورات else از تابع exit استفاده کنیم.استفاده از این تابع به این صورت است که اگر آرگومان آن برابر صفر باشد برنامه را تمام کند.

     مسئله از کتاب "برنامه نویسی به زبان c" - تالیف مهندس جعفر نژاد قمی - صفحه 72 - تمرین 2

  • محمد مهدی ولی نژاد

برنامه نویسی به زبان سی

جعفر نژاد

نظرات  (۱)

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