PDA

View Full Version : اشکال در برنامه اعداد زوج



forogh68
جمعه 30 بهمن 1394, 13:53 عصر
سلام. وقت بخیر.
ببخشید خطای این کد کجا هست؟
می خوام برنامه ای بنویسم که اعداد زوج را یکی یکی محاسبه کند وچاپ کند.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
i=10;
printf("%d\n", i);
i=i+2;
if (i<=98){
printf("%d", i);
}
return 0;
}

fool66
جمعه 30 بهمن 1394, 16:30 عصر
این چیزی که شما نوشتی فقط 10 و 12 رو چاپ میکنه براتون
اگه میخوای اعداد زوج بین 10 تا 98 رو چاپ کنید از این کد استفاده کنید

#include <iostream>
using namespace std;
int main()
{
for (int i = 10; i <= 98; i++)
{
if (i%2==0)
{
cout << i << endl;
}
}
return 0;
}

موفق باشید

forogh68
جمعه 30 بهمن 1394, 17:14 عصر
این چیزی که شما نوشتی فقط 10 و 12 رو چاپ میکنه براتون
اگه میخوای اعداد زوج بین 10 تا 98 رو چاپ کنید از این کد استفاده کنید

#include <iostream>
using namespace std;
int main()
{
for (int i = 10; i <= 98; i++)
{
if (i%2==0)
{
cout << i << endl;
}
}
return 0;
}

موفق باشید

مچکرم .. ولی فقط می خوام از if استفاده بشه!

fool66
جمعه 30 بهمن 1394, 19:51 عصر
از if استفاده شده دقت کن

if (i%2==0)

forogh68
شنبه 01 اسفند 1394, 05:16 صبح
از if استفاده شده دقت کن

if (i%2==0)



بله ممنونم. کاملا درسته ..
در کل منظورم اینه که for داخلش نباشه و فقط از if در این مساله استفاده شود.

Poores
شنبه 01 اسفند 1394, 10:33 صبح
بله ممنونم. کاملا درسته ..
در کل منظورم اینه که for داخلش نباشه و فقط از if در این مساله استفاده شود.

در c++ برنامه (از تابع main شروع میشه و )خط به خط اجرا میشه.
احتمالا شما میخواهید اعداد زوج رو از 10 تا 100 نمایش بدین و ظاهرا این کار رو بدون حلقه میخواین انجام بدین.

خوب حالا دقت کنید که کار حلقه چی هست؟
حلقه یک سری دستور رو که داخل بدنه حلقه تعریف شده ، در صورت برقراری شرط حلقه تکرار میکنه ، مثلا ما میخوایم اعداد زوج 10 تا 100 رو پیدا کنیم با یک حلقه تعریف میکنیم که اگر عدد i زوچ بود چاپ بشه و یکی به i اضافه بشه (بدنه حلقه)، این حلقه تا وقتی ادامه پیدا کنه که i کوچک تر از 100 باشه (شرط حلقه)
در واقع وقتی ما بخواهیم یک عمل ثابتی رو به دفعات تکرار کنیم از حلقه استفاده میکنیم.


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

int i =10;
printf("%d",i);
i+=2;
printf("%d",i);
i+=2;
printf("%d",i);
i+=2;
printf("%d",i);
i+=2;
printf("%d",i);
i+=2;




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

شما باید توجه داشته باشید که در c++ برنامه به صورت خط به خط اجرا میشه و با رسیدن به انتهای تابع main برنامه تموم میشه (یعنی بعد از انجام دستور return 0;) دیگه برنامه تموم شده و به خط 9 بر نمیگرده که i به اضافه 2 بشه و مجدد چاپ بشه

forogh68
سه شنبه 04 اسفند 1394, 07:01 صبح
ممنونم.
عذر می خوام خالا اگه بخوام یک عدد بگیره و بعد اعداد فرد کوچکتر از عدد ورکدی رو محاسبه کنه چکار کنم؟

kavehmj
سه شنبه 04 اسفند 1394, 07:05 صبح
از این دستور بروید:


#include <iostream>
using namespace std;
int main()
{
int i=10;
lbl:
if (i<=98)
cout << i << endl;
i+=2;

goto lbl;



return 0;
}




منتهی در این کد از دستور goto استفاده شده است.

Poores
سه شنبه 04 اسفند 1394, 14:18 عصر
ممنونم.
عذر می خوام خالا اگه بخوام یک عدد بگیره و بعد اعداد فرد کوچکتر از عدد ورکدی رو محاسبه کنه چکار کنم؟

در برنامه قبلی که نوشته بودین ، اعداد زوج بین 10 تا 100 رو حساب میکرد ، کافیه کف و سقف رو تغییر بدین ، کف میشه 1 ، سقف عدد دریافتی
واضح تر بگم باید با یک حلقه از 1 تا عدد دریافت شده حرکت کنین و اعداد فرد رو این بین چاپ کنین


از این دستور بروید:


#include <iostream>
using namespace std;
int main()
{
int i=10;
lbl:
if (i <= 98)
cout << i << endl;
i+=2;

goto lbl;



return 0;
}




منتهی در این کد از دستور goto استفاده شده است.

شرط توقف برای برنامه وجود نداره ، هرچند دستور goto پیشنهاد نمیشه اما اینطوری بهتره


#include <iostream>
using namespace std;
int main()
{
int i = 10;
lbl:
cout << i << endl;
i += 2;

if (i<100)
goto lbl;



return 0;
}

pbm_soy
سه شنبه 04 اسفند 1394, 17:38 عصر
ببخشید دخالت میکنم میتوانید خط شرط اول را حذف کنید یعنی خط if(i<=98) را حذف کنید و فقط cout , i+=2 را بگذارید و شرط دوم کارش را انجام میدهد