سئوالات و مشکلات برنامه نویسی به زبان C و ++C

shoonisht

عضو جدید
کاربر ممتاز
سوالش اینه ها...
عددی را از کاربر دریافت و به کمک حلقه whileهمه ارقام آن عدد را چاپ کنید.
من برنامم درسته فقط قسمت cout ش اشتباهه برنامه رو که اجرا میکنم هر عددی بهش میدم جوابو صفر میده بهم..میخام بدونم چی باید چاپ کنم
بنه من با ++TC مینویسم

سلام
ببخشید اشتباه متوجه شده بودم .
برای نمایش خروجی باید یک حلقه For یا while به تعداد خانه های آرایه a بنویسید و در هر بار a را چاپ کنید .
می توانید با دستور endl در چاپ هر رقم را در یک خط چاپ کنید .
برای مثال :
کد:
for(int t=0;t<4;t++)
{
   cout << a[i] << endl;
}
این کد ابتدا یکان و سپس دهگان و ... را هر کدام در یک خط چاپ می کند .
کد:
int t=3;
while(t>=0)
{
   cout << a[t] << "\n";
   t--;
}

این کد ابتدا هزارگان و سپس صدگان و ... را هر کدام در یک خط چاپ می کند .
به تفاوت مقادیر t توجه کنید تا اشتباه رخ ندهد . t باید از 0 تا 3 را بشمارد .

معمولا اساتید برای درس های گرافیک کامپیوتری از TC استفاده می کنند و برای درس برنامه سازی مقدماتی بیشتر از Visual استفاده می کنند . برای همین پرسیده بودم .
در خصوص سوال بعدی هم بنده چیزی نفهمیدم . احتمالا کد هدر فایل عکس لود شده . یا شاید سیستم من مشکل داره ؟؟؟!!!!؟
با تشکر
 
آخرین ویرایش:

masome sa

عضو جدید
اگه یه کمبو با یه فیلد نوع int پر شده باشه حالا بخوایم مقدار اون آیتمی که از کمبو انتخاب میشه ،به همون صورت int دریافت کنیم باید چکار کنیم؟
 

taranombaran

عضو جدید
ممنون از پاسختون
اون یکی هم سوالمو ویرایش کردم لینک عکسو گذاشتم ممنون میشم اگه میتونید جوابمو بدید
 

SHRP

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

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
اگه یه کمبو با یه فیلد نوع int پر شده باشه حالا بخوایم مقدار اون آیتمی که از کمبو انتخاب میشه ،به همون صورت int دریافت کنیم باید چکار کنیم؟
مقدار رشته ای دریافتی از اونو با استفاده از تابع Convert.Toint32 به عدد تبدیل کن... البته این برای سی شارپ است..
 

taranombaran

عضو جدید
یه شرط هم برای صفر و پایین تر از اون بذار شاید عدد همون لحظه اول فراخوانی از یک کوچیکتر بشه و این مشکل پیش بیاد...

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

SHRP

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

shoonisht

عضو جدید
کاربر ممتاز
http://8pic.ir/images/yoanftocqdwxx18653yq.png

بچه ها کسی میدونه این مشکل چیه؟؟؟؟برنامم درسته ولی وقتی عددی وارد میکنم این پیغامو میده

با سلام
دوست عزیز
فیبوناچی با دو جمله قبل کار داره و برنامه نوشته شده شما وقتی به یک می رسه با مشکل مواجه میشه .
برای مثال عدد ورودی 3 باشه fibo(2) و fibo(1) رو محاسبه میکنه و بر میگردونه که جواب هست .
ولی همینجا برای fibo(2) با مشکل مواجه میشه و بایستی fibo(1) , fibo (0) رو محاسبه کنه که توی fibo(0) به دور باطل مبتلا میشه و گیر میکنه و این مشکل Runtime Error میده که مواجه هستید .
حالا همین برنامه رو با شرط زیر بنویسید و نتیجه رو قرار بدید تا ببینیم درست میشه یا نه ؟
کد:
if (n<2)
{
return 1;
}
return (fibo(n-1) + fibo(n-2));

ضمنا دقیقا توی دستور فیبوناچی دو عدد اول این دنباله 1 هست.
امیدوارم مشکلتون رفع بشه .
با تشکر - سیستم 32
 
آخرین ویرایش:
  • Like
واکنش ها: SHRP

shoonisht

عضو جدید
کاربر ممتاز
http://8pic.ir/images/utduupbx6aq8eid9oskm.png
کسی میتونه مشکل اینو بگه؟؟؟نمیفهمم چی میگه

با سلام
دوست عزیز
مشکل اصلی که همین شروع کار گیر کرده جنس تابع Search است که با Boolean تعریف کرده اید .
بنده با int تعریف کرده ام و جواب صحیح گرفته ام .
دوم اینکه در تابع main دستور Cin >> n هنوز n را تعریف نکرده اید که احتمالا به اشتباه x تعریف کرده اید .
سوم اینکه چرا در زیر تابع Search مقدار 0 را بازگشت می دهید . این مورد هم اشتباها به جای b تایپ شده است .
ضمنا اگر در Search جنس b را از int تعریف کنید و در زمان Return قصد استفاده از آن به صورت Boolean را دارید مقدار صفر برابر false و هر مقدار دیگر برابر true می باشد .
کد زیر اصلاح شده همین سوال شما است .
امیدوارم مفید واقع شود .

کد:
#include <iostream.h>
#include <conio.h>

int search(int a[5], int x)
{
 int b=0;
 for(int i=0;i<5;i++)
 {
  if (a[i]==x)
  b=1;
 }
return b;
}


void main()
{
 clrscr();
 int c[5] = {3,5,6,9,15}, n;
 cout << "Enter a number";
 cin >> n;
 if (search(c,n))
  cout << "found";
 else
  cout << "Not found";
 getch();
}

با تشکر - سیستم 32
 
آخرین ویرایش:

taranombaran

عضو جدید
سلام میشه مشکل اینو بهم بگیییییییییید
#include<stdlib.h>
#include<string.h>
int main()
{
char n[7][30];
for(int i=0;i<7;i++)
{
cout<<"enter names"<<i+1<<"\n";
cin>>n;
}
for(i=1;i<=6;i++)
for(int j=0;j<6;j++)
if(strcmp(const n[j],const n[j+1]>0))
{ char temp[30];
strcpy(temp,n[j]);
strcpy(n[j],n[j+1]);
strcpy(n[j+1],temp);
}
for(i=0;i<7;i++);
cout<<"\n"<<n;
getch();
return 0;



اینم مشکلاتی که میگیره
http://8pic.ir/images/r8u2x3q18h3zk5l3dq5y.png
 
آخرین ویرایش:

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
سلام میشه مشکل اینو بهم بگیییییییییید
#include<stdlib.h>
#include<string.h>
int main()
{
char n[7][30];
for(int i=0;i<7;i++)
{
cout<<"enter names"<<i+1<<"\n";
cin>>n;
}
for(i=1;i<=6;i++)
for(int j=0;j<6;j++)
if(strcmp(const n[j],const n[j+1]>0))
{ char temp[30];
strcpy(temp,n[j]);
strcpy(n[j],n[j+1]);
strcpy(n[j+1],temp);
}
for(i=0;i<7;i++);
cout<<"\n"<<n;
getch();
return 0;



اینم مشکلاتی که میگیره
http://8pic.ir/images/r8u2x3q18h3zk5l3dq5y.png


کد:
#include <iostream.h>
#include <conio.h>
#include<stdlib.h>
#include<string.h>


int main()
{
char n[7][30];
for(int i=0;i<7;i++)
{
cout<<"enter names"<<i+1<<"\n";
cin>>n[i];
}
for(i=1;i<=6;i++)
for(int j=0;j<6;j++)
if(strcmp(n[j], n[j+1])>0)
{ char temp[30];
strcpy(temp,n[j]);
strcpy(n[j],n[j+1]);
strcpy(n[j+1],temp);
}
for(i=0;i<7;i++);
cout<<"\n"<<n[i];
getch();
return 0;
}
دوتا از هدرها رو تعریف نکرده بودید و نحوه استفاده از ثابت ها اشتباه بود
 

taranombaran

عضو جدید
نه اینا نیس مشکلش الان بازم جواب نمیده که
اونا اشتباهه کلی بود بدون اون اشتباها هم جواب نمیده
 

taranombaran

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

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

chipset

عضو جدید
سلام... نه من واسه ترم مهر دارم میخونم چون ترم یک چیزی یاد نگرفتم ترم 2 هم چون از پایه ضعیف بودم درسشو حذف کردم بخاطر همین دارم میخونم ترم مهر کم نیارم
معلومه خوب پیشرفت کردید. چون برنامه هایی که مینویسید نسبتا سطح بالا هستند.
راستی یه سوال ؟
چرا بجای cin و cout از scanf و printf استفاده نمیکنید ؟
مزیت و معایب هر کدوم چیه ؟
با تشکر
 

taranombaran

عضو جدید
معلومه خوب پیشرفت کردید. چون برنامه هایی که مینویسید نسبتا سطح بالا هستند.
راستی یه سوال ؟
چرا بجای cin و cout از scanf و printf استفاده نمیکنید ؟
مزیت و معایب هر کدوم چیه ؟
با تشکر

نه بابا پیشرفت کجا بود تا بخام برسم به کلاسها و شی گرایی هنوز کار زیاد دارم
ما چون از اول از اینا استفاده کردیم دیگه عوضش نمیکنم
دقیق نمیدونم مزایا و معایبش چیه فک کنم هدراش فرق میکنه
شما خودتون یاد دارید ++c???
 

chipset

عضو جدید
نه بابا پیشرفت کجا بود تا بخام برسم به کلاسها و شی گرایی هنوز کار زیاد دارم
ما چون از اول از اینا استفاده کردیم دیگه عوضش نمیکنم
دقیق نمیدونم مزایا و معایبش چیه فک کنم هدراش فرق میکنه
شما خودتون یاد دارید ++c???
بنده بخاطر علاقه و ارتباط کارم دوس دارم یاد بگیرم.
تا فصل ساختار تصمیم اومدم جلو . با مرجع جعفر نژاد قمی دارم یاد میگیرم. بنظرم خوب گفته . چون باهاش راحتم و خوب یاد میگیرم.
بعد از این میخام برم C# .
 

SHRP

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

chipset

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

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
نه اینا نیس مشکلش الان بازم جواب نمیده که
اونا اشتباهه کلی بود بدون اون اشتباها هم جواب نمیده
اون علامت ; رو از جلوی for برداری درست می شه.... فقط دستورات ; نیاز دارن .
کد:
for(i=0;i<7;i++)
cout<<"\n"<<n[i];
 

shoonisht

عضو جدید
کاربر ممتاز
با سلام
دوستان گرامی که علاقه وافر به برنامه نویسی دارید و مثل بنده با حداقل دانش هستید ؛
پیشنهاد می کنم از این لینک فیلم های آموزش اصول برنامه نویسی زبان C ، تدریس کیارش بازرگان در دانشگاه صنعتی اصفهان (فکر کنم سال 86) رو دانلود کنید و ببینید و همراه ایشون برنامه ها رو بنویسید .
چند قسمتی رو که دیدم فوق العاده بود .
پیشنهاد می کنم برنامه هایی که توضیح میدن رو بنویسید و هر جا متوجه منظور نمیشید بپرسید .
سعی کنید به صورت نرمال روزی یک قسمت از ویدئو آموزشی رو نگاه کنید و تمرین کنید .

اون علامت ; رو از جلوی for برداری درست می شه.... فقط دستورات ; نیاز دارن .
كد:

for(i=0;i<7;i++)
cout<<"\n"<<n;

دوست عزیز
ذزخصوص این گفته شما فکر کنم حرف شما کامل نباشه . چون به هر حال بع از پاسان هر دستور در زبان C++ از علامت ; استفاده میشه . با توجه به اینکه دستور تهی (اصطلاحا در نظریه زبان ها Lambda یا همون لاندا) در زبان C++ وجود داره و اگر انتهای while یا for بدون نوشتن دستور داخل حلقه علامت ; قرار بدید تعداد دفعات حلقه انجام میشن ولی دستوری در هر بار اجرا نمیشه . برای ساخت حلقه های انتظار مشغول استفاده میشه .
امیدوارم جسارت بنده رو به بزرگواری خودتون ببخشید .
با تشکر - سیستم 32
 

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
با سلام
دوستان گرامی که علاقه وافر به برنامه نویسی دارید و مثل بنده با حداقل دانش هستید ؛
پیشنهاد می کنم از این لینک فیلم های آموزش اصول برنامه نویسی زبان C ، تدریس کیارش بازرگان در دانشگاه صنعتی اصفهان (فکر کنم سال 86) رو دانلود کنید و ببینید و همراه ایشون برنامه ها رو بنویسید .
چند قسمتی رو که دیدم فوق العاده بود .
پیشنهاد می کنم برنامه هایی که توضیح میدن رو بنویسید و هر جا متوجه منظور نمیشید بپرسید .
سعی کنید به صورت نرمال روزی یک قسمت از ویدئو آموزشی رو نگاه کنید و تمرین کنید .


دوست عزیز
ذزخصوص این گفته شما فکر کنم حرف شما کامل نباشه . چون به هر حال بع از پاسان هر دستور در زبان C++ از علامت ; استفاده میشه . با توجه به اینکه دستور تهی (اصطلاحا در نظریه زبان ها Lambda یا همون لاندا) در زبان C++ وجود داره و اگر انتهای while یا for بدون نوشتن دستور داخل حلقه علامت ; قرار بدید تعداد دفعات حلقه انجام میشن ولی دستوری در هر بار اجرا نمیشه . برای ساخت حلقه های انتظار مشغول استفاده میشه .
امیدوارم جسارت بنده رو به بزرگواری خودتون ببخشید .
با تشکر - سیستم 32
ممنون از توضیحات شما... دقیقا حرف شما درسته و البته حرف من رو هم نقض نمی کنه...وقتی حلقه انتظار می سازیم در اصل مشابه یه دستور عمل کردیم و از کامپایلر یه درخواست داشتیم در صورتی که در حالتهای معمول دستورات در ادامه حلقه یا شرط ذکر می شه...
 

porya.ap

عضو جدید
سلام میخواستم بدونم زبان c بهتر است یا ++c و تفاوت این دو زبان در چیست؟
 

Similar threads

بالا