PDA

View Full Version : سوال: مشکل سته شدن پنجره



sitetheme
سه شنبه 21 مهر 1394, 10:02 صبح
عزیزان
من تازه وارد هستم دارم یک برنامه آزمایشی بسیار ساده مینویسم، مشکلم دقیقا همین بسته شدن آنی پنجره بعد از اجرای فایل EXE هست، جالبه که توی Run خود کامپایلر برنامه بسته نمیشه.
تمامی کد هایی هم که دوستان پیشنهاد دادن رو امتحان کردم اما فایده نداره getch(); رو هم که میذارم خطای :
[Error] 'getch' was not declared in this scope
رو میده لطفا یک راه اصولی برای اینکه پنجره رو تا خودمون نبستیم بسته نشه معرفی کنید
از برنامه Dev C++‎‎‎ استفاده میکنم و کدی که تا بحال وارد کردم:


1
2
3
4
5
6
7
8
9
10
11

<pre class="brush: cpp;" style="direction:ltr;">
#include<stdio.h>
main()
{
int a=2,b=3,s=a+b;
printf("%d",s);
getch();
}


</pre>







در ضمن اگر کد رو طوری تغییر بدم که از کاربر مقداری رو درخواست کنه برنامه باز میمونه اما این درخواست مقدار چطور صورت میگیره؟ چون سوالی نمیپرسه!
راستی یک سوال دیگر هم دارم! main int با main چه فرقی میکنه؟ اخه تو کتاب دانشگاهی ما با main شروع کرده ولی تو برنامه نویسی های داخل اینترنت دیدم که از main int استفاده میکنند؟
ممنون از دوستان

ehsan_faal
سه شنبه 21 مهر 1394, 10:20 صبح
سلام.
اینو امتحان کن:
#include <iostream>
using namespace std;

int main(){
int a = 2,b = 3,s = a+b;
cout<<s<<endl;
system("pause");
return 0;
}


راستی الان که تست کردم دیدم برای کامپایل این برنامه باید از سوییچهای مربوط به استاندارد 1y استفاده کنید در غیر اینصورت باید کد رو اینجوری تغییر بدید:

#include <iostream>
#include <cstdlib>
using namespace std;

int main(){
int a = 2,b = 3,s = a+b;
cout<<s<<endl;
system("pause");
return 0;
}



در مورد تفاوت main هم تفاوت توی استانداردهاست(البته اگه اشتباه نکنم) مدل اولی که توی کتابتون هست با استانداردهای قبلی سازگاره.

sitetheme
سه شنبه 21 مهر 1394, 10:45 صبح
سلام.
اینو امتحان کن:
#include <iostream>
using namespace std;

int main(){
int a = 2,b = 3,s = a+b;
cout<<s<<endl;
system("pause");
return 0;
}


راستی الان که تست کردم دیدم برای کامپایل این برنامه باید از سوییچهای مربوط به استاندارد 1y استفاده کنید در غیر اینصورت باید کد رو اینجوری تغییر بدید:

#include <iostream>
#include <cstdlib>
using namespace std;

int main(){
int a = 2,b = 3,s = a+b;
cout<<s<<endl;
system("pause");
return 0;
}



در مورد تفاوت main هم تفاوت توی استانداردهاست(البته اگه اشتباه نکنم) مدل اولی که توی کتابتون هست با استانداردهای قبلی سازگاره.
ممنون از شما !
کدی که دادید رو کامپیال کردم و درست بود! یعنی پنجره بسته نمیشه اما خوب دستوراتی که بکار بردید احتمالا از مبتدی سطح خیلی بالاتره و احتمالا فعلا مجبورم با دستورات پایه شروع کنیم در اینصورت دستورات سادتری هم وجود داره؟ اگر خیر پس لطفا اگر امکان داره دستورات خط 2و 3 و 8 و 9 رو توضیح بدید
فکر میکنم تنها راه عملی فعلا استفاده از scanf هست تا برنامه منتظر دریافت مقدار باشه.

hamedBB
سه شنبه 21 مهر 1394, 14:37 عصر
ممنون از شما !
کدی که دادید رو کامپیال کردم و درست بود! یعنی پنجره بسته نمیشه اما خوب دستوراتی که بکار بردید احتمالا از مبتدی سطح خیلی بالاتره و احتمالا فعلا مجبورم با دستورات پایه شروع کنیم در اینصورت دستورات سادتری هم وجود داره؟ اگر خیر پس لطفا اگر امکان داره دستورات خط 2و 3 و 8 و 9 رو توضیح بدید
فکر میکنم تنها راه عملی فعلا استفاده از scanf هست تا برنامه منتظر دریافت مقدار باشه.

خط 2 : کتابخونه ای که شما برای فراخوانی دستورات سیستمی نیاز دارید (برای مثال همون کد خط 8)
خط 3 : پاسخ به این سوالت میتونه 1000تا سوال دیگه برات ایجاد کنه اگر بخوام کامل بگم ولی در این حد بدون که اگر این فضای نام std رو اضافه نکنی در خط 7 برنامه به جای cout باید بنویسی std::cout
خط 8 : ای بابا اینم سخته که :لبخند: اینطوری بهت بگم که تابع system یک دستور سیستم عاملی رو دریافت و اجرا می کنه. در واقع این دستور روی سیستم عامل شما اجرا میشه و برای مثال دستور pause که توسط این تابع اجرا شده پروسه ی صدا زننده ی این دستور رو به صورت موقت متوقف می کنه (در واقع به خواب می بره) میدونم سخت شد ولی راه ساده تری برای توضیحش وجود نداشت.
خط 9 : هر برنامه ای زمانی که میخواد اجرا بشه یک تابع main داره که در ابتدای اجرا برنامه این تابع هست که فراخوانی میشه حالا اگه به خط 5 برنامت دقت کنی این تابع main از نوع int هست که این نوع تابع نیاز به یک مقدار بازگشتی داره که return 0 یعنی مقدار برگشتی به صورت فرمالیته 0 در نظر گرفته میشه که چیز مهمی نیست. شما میتونی در خط 5 برنامت به جای int از void استفاده کنی و خط 9 رو حذف کنی. void مقدار بازگشتی نداره.