واضح آرشیو وب فارسی:سایت ریسک: سی و سی پلاس- cout و printf همچنین cin و scanf aloo 23 بهمن 1386, 02:53وقتی می خوام برنامه رو اجرا کنم تو محیط توربو ارور می ده و می گه نمی تونه سر فایل رو باز کنه #include <stdio.h> این قسمت رو باید چیکار کنم من این برنامه رو تازه نصب کردم و نمی دونم ایا باید کارهایی می کردم قبلش یا الان باید تنظیمات رو تغییر بدم؟؟ من تو کامپیوتر دانشگاه همچین مشکلی نداشتم نمی دونم از کجاس؟ --------------------- شوال 2 در مورد cout من تازه رفتم فصل 2 کتاب در مورد آرایه cout موندم چیکار کنم استادمون از printf استفاده می کرد و هیچ وقت از cout استفاده نمی کرد اصلا cout یعنی همون print البته استاد ما c درس می داد و من دارم C++می خونم اقا بالاخره چی اصلا c همون c++ هست the_king 23 بهمن 1386, 05:26printf و cout هر دو در استاندارد ++C هستند ولی با توجه به نوع پیاده سازی cout که مختص برنامه نویسی شیء گرای ++C می باشد، اصولا جایگزین تابع قدیمی printf می شود که از C به یادگار مانده است. خب اول با یک نمونه شروع می کنیم تا مقایسه راحت تر بشه، برنامه محاسبه سری فیبوناچی : اول با استفاده از printf و scanf : #include "stdio.h" #include "conio.h" int fib(int n) { if (2>n) return n; return fib(n-1)+fib(n-2); } int main() { int n; clrscr(); printf ("Please enter n : "); scanf ("%d",&n); printf (" fibonacci(%d) = %d",n,fib(n)); printf (" Press any key to continue."); getch(); return 0; } حالا برنامه را با استفاده از cin و cout می نویسم : #include "iostream.h" #include "conio.h" int fib(int n) { if (2>n) return n; return fib(n-1)+fib(n-2); } int main() { int n; clrscr(); cout << "Please enter n : "; cin >> n; cout << endl << "fibonacci(" << n << ") = " << fib(n); cout << endl << "Press any key to continue."; getch(); return 0; } اولین تفاوت تو سطر اوله : بجای stdio.h از iostream.h استفاده شده که cin و cout تو اون تعریف شده اند. بقیه برنامه یکسانه تا به دستورات scanf و printf می رسیم. اینکه کدوم روش مورد استفاده قرار بگیره به سلیقه (شما نه، استادتون) بستگی داره مگر تو درس برنامه سازی پیشرفته که واسه مباحث برنامه نویسی شیء گرا اصولا از cin و cout استفاده می شه. وگرنه هر دو روش به راحتی قابل پیاده سازی هستند و فرق زیادی ندارند. خب حالا می خواهیم یک عبارت ثابت رو به خروجی بفرستیم، عبارتی که از هیچ متغیری داخلش استفاده نشده مثل Press any key. اول با Printf می نویسیم : printf ("Press any key"); و حالا با cout : cout << "Press any key"; فرق زیادی که نداشت؟ حالا اگه بخواهیم وارد سطر بعدی صفحه نمایش بشویم : printf (" "); که n باعث رفتن به سطر بعدی می شه. و حالا با cout : cout << endl; که endl باعث رفتن به سطر بعدی می شه. the_king 23 بهمن 1386, 05:28حالا اگه بخواهیم مقدار یک متغیر رو تو خروجی چاپ کنیم، اگر متفیر x صحیح باشد (فاقد اعشار مثل int) : printf ("%d",x); که d% به printf می فهمونه که با یک عدد صحیح طرفه. و اگه متغیر x اعشاری باشد : printf ("%g",x); که g% به printf حالی می کنه که عدد اعشاری است و معادل cout آنها : cout << x; توی این موارد cout راحت تره چون خودش با توجه به نوع متغیر در مورد نحوه نمایش اون تصمیم می گیره. the_king 23 بهمن 1386, 05:32حالا می رسیم به دستورات scanf و cin... اگه بخواهیم متغیر x رو که از نوع صحیح int است از ورودی دریافت کنیم : scanf ("%d",&x); این d% همونی است که تو printf استفاده شد و نشانگر صحیح بودن عدد است. علامت & که قبل از x وارد میشه نشون می ده که اطلاعات باید داخل متفیر x ذخیره بشه. اگه این علامت رو حذف کنیم به این مفهومه که داخل متفیر x آدرس یک خونه از حافظه ذخیره شده که مقدار عدد باید داخل اون خونه از حافظه ذخیره بشه (نه داخل خود x). خب طبیعی است که حالت دوم اصلا مورد نظر ما نیست پس علامت & فراموش نشه. حالا اگه عدد x اعشاری نوع float باشه : scanf ("%f",&x); و اگه عدد x اعشاری نوع double باشه : scanf ("%lf",&x); در مورد cin کار راحته و فقط یک قالب کلی وجود داره که واسه هر نوع داده برقراره : cin >> x; حالا یک مثال کلی، دو متفیر صحیح a و b رو داریم و می خواهیم نشون بدیم که : a + b = جمع دو مقدار می نویسیم : printf ("%d + %d = %d",a,b,a+b); و یا می نویسیم : cout << a << " + " << b << " = " << a+b; aloo 24 بهمن 1386, 00:52آقا ممنون و متشکرم از این جواب کاملت فقط یه چیزی . مطمئنا cout بهتر هستش آیا برای امتحان برنامه نویسی که گفتم استادمون از printf استفاده می کنه من بیام و از سر فایل iostream استفاده کنم و همچنین از cout .اصولا بازم درست هستش و نباید مشکلی داشته باشه.(منظورم از مشکل =جواب مسئله درست هست دیگه) و نمره هم تعلق می گیره دیگه فقط از یه روش دیگش :shock:
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2314]