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

tito11

عضو جدید
سلام
کسی میتونه بفهمه مشکل این برنامه چیه؟
این برنامه ی مازه.فک کنم از اولین else تو main شروع به ایراد گرفتن می کنه.با اشاره گر درست کار نمی کنه.
ممنون
PHP:
#include <cstdlib>
#include<iostream>
#include<conio.h>
#include<time.h>
using namespace std;
class stack
{ private:
int *a;
int top;
int maxsize;
public:
                stack(int);
                ~stack();
                void push(int);
                int *pop();
                int isempty();
                int isfull();
    friend void srand();
    };
stack::stack(int n)
{maxsize=n;
a=new int[n];
top=-1;};
stack::~stack()
{delete[]a;};
void stack::push(int x)
{if(isfull())
{cout<<"stack is full\n";
                return;}
                a[++top]=x;};
                int*stack::pop()
                {if(isempty())
                {cout<<"stack is empty\n";
                return 0;}
                return &a[top--];};
                int stack::isfull()
                {return top==maxsize-1;};
                int stack::isempty()
                {return top==-1;};
  
  
  
  
     int main()
     { int * i,* j,m[4][4],g,h;
     stack s(20);
     i=&g;
     j=&h;
     unsigned int number;
     srand(time(0));
     {for(g=1;g<=4;g++)
     {for(h=1;h<=4;h++)
     {m[g][h]=rand()%2;
     cout<<m[g][h];}
     cout<<'\n';}}
      if(m[1][1]==1||m[4][4]==1||(m[1][1]==1&&m[4][4]==1))
     {cout<<"\n\n\n\n rahi vojud nadarad\n\n\n\n";}
   else
           {m[1][1]=8;
                      for(g=1;g<=4;g++)
               {for(h=1;h<=4;h++)
                   {
                     if(m[* i][(* j)+1]==0)// right
                     {m[* i][(* j)+1]=8;
                         s.push((* j)+1);
                           (* j)=(* j)+1;
                             s.push(* i);
                                (* i)=(* i);}
    
     else if(m[(* i)+1][(* j)]==0)// down
     {m[(* i)+1][* j]=8;
     s.push(* j);
     *j=*j;
     s.push((* i)+1);
    * i=(* i)+1;
     }
     else if(m[* i][(* j)-1]==0)// left
     {m[* i][(* i)-1]=8;
     s.push((* j)-1);
     * j=(* j)-1;
     s.push(* i);
     * i=* i;
     }
     else if(m[(* i)-1][* j]==0)// up
     {m[(* i)-1][* j]=8;
     s.push(* j);
     * j=* j;
     s.push((* i)-1);
     * i=(* i)-1;
     }
     if(s.isempty())
     {m[* i][* j]=1;
     cout<<"rahi vojud nadarad\n\n\n\n";
     }
     if(!s.isempty())
     {m[* i][* j]=1;
          * i=*s.pop();
     * j=*s.pop();}}}}
if(m[4][4]==8)
{cout<<"yek rah peida shod";}
    
     for(g=1;g<=4;g++)
     {for( h=1;h<=4;h++)
     {cout<<m[g][h];}
     cout<<'\n';}
     getch();
     return 0;}
 

جفنگ نگو

عضو جدید
سلام
کسی میتونه بفهمه مشکل این برنامه چیه؟
این برنامه ی مازه.فک کنم از اولین else تو main شروع به ایراد گرفتن می کنه.با اشاره گر درست کار نمی کنه.
ممنون
PHP:
#include <cstdlib>
#include<iostream>
#include<conio.h>
#include<time.h>
using namespace std;
class stack
{ private:
int *a;
int top;
int maxsize;
public:
                stack(int);
                ~stack();
                void push(int);
                int *pop();
                int isempty();
                int isfull();
    friend void srand();
    };
stack::stack(int n)
{maxsize=n;
a=new int[n];
top=-1;};
stack::~stack()
{delete[]a;};
void stack::push(int x)
{if(isfull())
{cout<<"stack is full\n";
                return;}
                a[++top]=x;};
                int*stack::pop()
                {if(isempty())
                {cout<<"stack is empty\n";
                return 0;}
                return &a[top--];};
                int stack::isfull()
                {return top==maxsize-1;};
                int stack::isempty()
                {return top==-1;};
  
  
  
  
     int main()
     { int * i,* j,m[4][4],g,h;
     stack s(20);
     i=&g;
     j=&h;
     unsigned int number;
     srand(time(0));
     {for(g=1;g<=4;g++)
     {for(h=1;h<=4;h++)
     {m[g][h]=rand()%2;
     cout<<m[g][h];}
     cout<<'\n';}}
      if(m[1][1]==1||m[4][4]==1||(m[1][1]==1&&m[4][4]==1))
     {cout<<"\n\n\n\n rahi vojud nadarad\n\n\n\n";}
   else
           {m[1][1]=8;
                      for(g=1;g<=4;g++)
               {for(h=1;h<=4;h++)
                   {
                     if(m[* i][(* j)+1]==0)// right
                     {m[* i][(* j)+1]=8;
                         s.push((* j)+1);
                           (* j)=(* j)+1;
                             s.push(* i);
                                (* i)=(* i);}
    
     else if(m[(* i)+1][(* j)]==0)// down
     {m[(* i)+1][* j]=8;
     s.push(* j);
     *j=*j;
     s.push((* i)+1);
    * i=(* i)+1;
     }
     else if(m[* i][(* j)-1]==0)// left
     {m[* i][(* i)-1]=8;
     s.push((* j)-1);
     * j=(* j)-1;
     s.push(* i);
     * i=* i;
     }
     else if(m[(* i)-1][* j]==0)// up
     {m[(* i)-1][* j]=8;
     s.push(* j);
     * j=* j;
     s.push((* i)-1);
     * i=(* i)-1;
     }
     if(s.isempty())
     {m[* i][* j]=1;
     cout<<"rahi vojud nadarad\n\n\n\n";
     }
     if(!s.isempty())
     {m[* i][* j]=1;
          * i=*s.pop();
     * j=*s.pop();}}}}
if(m[4][4]==8)
{cout<<"yek rah peida shod";}
    
     for(g=1;g<=4;g++)
     {for( h=1;h<=4;h++)
     {cout<<m[g][h];}
     cout<<'\n';}
     getch();
     return 0;}
باید برنامه رو خط به خط تریس کنید و مشکل رو پیدا کنید

برنامه های مثل اینکه شما نوشته اید رو فقط خودتان میتوانید بخوانید چون متغییرها رو h ,k ,i . . . در نظر گرفته ای که فقط برای نویسنده دارای مفهوم است دیگران نمیتوانند مشکل شما رو حل کن مگر اینکه برنامه رو بصورتی بنویسید که دیگران نیز بتوانند ان را درک کنند

درضمن توضیحی در مورد کدت بده ببینیم چی هست هر قسمت داره چه کارهایی انجام میده حتی دو خط کامنت هم میتواند کمک بزرگی در درک بهتر برنامه بکند
 

Farnaz1373

عضو جدید
فرناز خانوم سلام :

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

راه خودمو بهت پیشنهاد میدم ببین به دردت میخوره:

اولای کار از ساده ترین چیزها (جمع دو تا عدد )شروع کن بعد روالی که تو ذهنت واسه حل مسئله هس رو کاغذبنویس بعد مثل چیزی که نوشتی رو کد نویسی کن بعد همین مسئله رو بسط بده و کمی بزرگترش کن(اعداد رو بیشتر کن ضرب و جمع و تفریق رو هم واسسش بنویس بعد با یه ترکیب کردن کوچولو یه ماشین حساب ساده درس کن )

یه چندتا اینطوری که کد بزنی روال کار دستت میاد .

هر جایی هم گیر کردی پست بذار تا دوستان هم کمکت کنن.:)

موفق باشی;)

salam dastetun dard nakone maam daghighan moshkelam in bud ke kudum dastur o bara kudum masale be kar bebaram
man felan un rahe hali ke shoma goftin ro anjam midam omidvaram betunam!
mer30!
 

tito11

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

برنامه های مثل اینکه شما نوشته اید رو فقط خودتان میتوانید بخوانید چون متغییرها رو h ,k ,i . . . در نظر گرفته ای که فقط برای نویسنده دارای مفهوم است دیگران نمیتوانند مشکل شما رو حل کن مگر اینکه برنامه رو بصورتی بنویسید که دیگران نیز بتوانند ان را درک کنند

درضمن توضیحی در مورد کدت بده ببینیم چی هست هر قسمت داره چه کارهایی انجام میده حتی دو خط کامنت هم میتواند کمک بزرگی در درک بهتر برنامه بکند
این برنامه میاد یه ماتریکس 4*4 با اعداد تصادفی 0 و 1 تولید می کنه.باید از خونه ی اول سمت چپ تا اخر سمت راست راهیو پیدا کنه(خونه های 1 یعنی بلاک و 0 یعنی میتونه تو اون خونه بره و راه باز است)
برنامه میگه اگه خونه ی اول یا اخر 1 بود بگو راهی وجود ندارد وگرنه میاد شرط های main رو چک میکنه که خونه های بغل 0 هستند یا نه اگه آره به یک سمتی میره و شماره ی اون خونه رو در استک ذخیره می کنه.اگر رهی نبود با توجه به استک برمی گرده و خونه ها رو 1 می کنه.g سطر ارایه و h ستون است.از اشاره گر i و j به خاطر اینکه روی g و h اثر بذاره استفاده کردم. در اخر ماتریکسو چاپ بکنه.(منظور از 8 تو برنامه مثلا یه موشه و در اخر هر جا 8 هست یعنی اون مسیر و درست رفته)
برنامه error نمیده اما موقع اجرا میگه یه مشکلی هست که نمیشه اجرا کنم.اگه میشه شما با کامپایلرتون اجرا کنید ببینید اجرا میشه یا نه.من با dev نوشتم اذیت می کنه.ممنون
 

ASILTASH

عضو جدید
salam void chei? chi kar mikone?

سلام
اگه منظورت تو تابع هاس اگه void بنویسی یعنی تابع مقدار عددی بر نمیگردونه ولی اگه int باشه یعنی مقدار برمیگردونه.
مثلا تو خود main اگه int main بنویسی باید اخرش هم بنویسی return0 .
ولی اگه نخوای return0 رو اخرش بنویسی یا باید بذاری (int main(void یا بذاری void main .
تو فراخوانی ها هم اگه تابع فراخوانی شده مقداری رو به تابع اصلی برگردونه باید int نوشته بشه و در غیر اینصورت void.:)
 

Farnaz1373

عضو جدید
سلام
اگه منظورت تو تابع هاس اگه void بنویسی یعنی تابع مقدار عددی بر نمیگردونه ولی اگه int باشه یعنی مقدار برمیگردونه.
مثلا تو خود main اگه int main بنویسی باید اخرش هم بنویسی return0 .
ولی اگه نخوای return0 رو اخرش بنویسی یا باید بذاری (int main(void یا بذاری void main .
تو فراخوانی ها هم اگه تابع فراخوانی شده مقداری رو به تابع اصلی برگردونه باید int نوشته بشه و در غیر اینصورت void.:)
age meghdare adadi nemide pas chera asan minevisim ? man to gheyre tabe ham didam mizaran ! chera?
 

ASILTASH

عضو جدید
age meghdare adadi nemide pas chera asan minevisim ? man to gheyre tabe ham didam mizaran ! chera?

منظورم از مقدارعددی اینه که یه همچین دستوری رو فرض کن که داری :
;()int a = func

که تو تابع اصلیت یه متغییر از نوع عدد صحیح داری که برای فهمیدن مقدارش باید تابعfunc اجرا بشه و تو retun اش باید جواب بدست اومده رو به تابع اصلی برگردونی تا بتونی بقیه کاراتو انجام بدی.
حالا این تابع func باید از نوع int باشه .
ولی اگه فقط تابع فراخوانی شدت یه سری کارهارو باید انجام بده و مثل اولی لازم نیس که چیزی رو برگردونه باید void تعریفش کنمی.



 

hanipurelove

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

شهریاری 2

کاربر فعال تالار اسلام و قرآن
کاربر ممتاز
سلام من دو تا سوال دارم که تقریبا میفهمم چی میگه اما نمیدونم چطوری بنویسم خیلیم سادس اما اگه میشه کمکم کنین...
برنامه ای در c++ بنویسید که مقادیر یک ارایه صدعضوی را از ورودی خوانده سپس مقداری را که بیش از بقیه تکرار شده را مشخص کنید؟
برنامه ای بنویسید که ارایه ای را از ورودی خوانده و عناصر ارایه را بدون تکرار چاپ کند؟

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

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

hanipurelove

عضو جدید
سلام
برا اولی میتونی روی کاغذ ببینی باید کامپیوتر چکارایی انجام بده که این خروجی مسئله تو بهت بده!
ببین توی برنامه نویسی باید از یه جایی شروع کنی بعد کم کم نواقص برنامه تو برطرف کنی!
دومی یه کم وقت میبره که بازم اسون هستو اگه اولی رو با موفقیت به پایان برسونی میتونی با تمام لذتی که از حل مسئله اولی بردی، دومی رو هم حل کنی.

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


یعنیی وااااقعا ازت ممنونم خیییییییییییییییییییلیییییییییییییییی کمک کردییی ...
 

شهریاری 2

کاربر فعال تالار اسلام و قرآن
کاربر ممتاز
یعنیی وااااقعا ازت ممنونم خیییییییییییییییییییلیییییییییییییییی کمک کردییی ...

مسخره میکنی؟؟!
خب چکار کنم ،نمیتونم لقمه آماده روبزارم تو دهنت که !
باید یادت بدم که برنامه رو خودت بنویسی تا هر برنامه سختی رو که بهت دادن، خودت با دستای خودت بنویسی و افتخار کنی که خودت میتونی گلیمتو از آب بکشی بیرون.

بعدم این سوالتو که گفتی ، خیلی کلی بود.باید اشکال سوالتو بگی تا اون قسمتشو راهنمایی کنن.
 

ASILTASH

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

سلام :
این برنامه سوال اولت هس .مشاهده پیوست Max_Score.txt

موفق باشی;)
 

maede92

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

some1

عضو جدید
کاربر ممتاز
سلام
#include<iostream.h>
class string
{
public:
char s[100];
int len;
void init (char a[]);

void string :: concat(string m);
} ;
void main()
{
string x;
char a[4]={'a','l','i','\0'} ;
x.init(a);
string y;
char b[7] = { 'r' , 'a' , 'h' , 'i' , 'm' , 'i' , '\0'};
y.init(b);
}
void string::init(char f[])
{
int i=0;
while (f!='\0')
{
s=f;
i++;
}
s='\0';
len=i;
}
void string :: concat(string m)
{
int i = 0;

while ( m.s != '\0')
{
s [ len+i] = m.s;
i++;
}
s[ len +i] = '\0';
len = len + m.len;

}

void string :: print (string m )
m.print


این برنامه ی رشته
چه جوری میتونم کلاس find رو بهش اضافه کنم؟
 

A.S.Roma

عضو جدید
کاربر ممتاز
سلام:smile:
میخواستم یکی این برنامه رو برام توضیح !!؟
من قبلا با سی پلاس پلاس کار کردم اما نمیدونم چرا اینجا از :: استفاده کرده!!
این برنامه پشته هستش.
http://programmervisualc.persiangig.com/other/stack.cpp
در ++C اگر از خواض Object Oriented بخواهید بهره ببزید باید از :: استفاده کنید.
برای تعریف بدنه methodها باید از :: استفاده کنید.
 

narges z

عضو جدید
سلام
بچه ها من میخوام برنامه turbo c رو روی ویندوز 7 نصب کنم ولی نمیشه البته برنامه dos box رو هم نصب کردم ولی اول باید turbo رو نصب کرد تا از طریق dos box بشه اجراش کرد؟
موقعه نصب وقتی روی setup یا install.exe کلیک میکنم پیغام the version of this file is not comptible with the version of window...
درضمن پوشه های bin و... رو هم نداره
ممکنه لینک دانلودش مشکل دار بوده باشه؟
 

Farnaz1373

عضو جدید
سلام من 2 تا سوال دارم
برنامه ای بنویسید که تشخیص دهد عدد متقارن است یا نه ! ( عدد متقارن مثل 36763 )
برنامه ای بنویسید که تشخیص دهد عدد چند رقمی است !
میشه یه راهنمایی کنید ؟
 

RIG

متخصص C#.net
سلام من 2 تا سوال دارم
برنامه ای بنویسید که تشخیص دهد عدد متقارن است یا نه ! ( عدد متقارن مثل 36763 )
برنامه ای بنویسید که تشخیص دهد عدد چند رقمی است !
میشه یه راهنمایی کنید ؟
دومی که باید طولش رو بگیری .
اولی متقارن یعنی چی؟
 

shady sh

عضو جدید
سلام من 2 تا سوال دارم
برنامه ای بنویسید که تشخیص دهد عدد متقارن است یا نه ! ( عدد متقارن مثل 36763 )
برنامه ای بنویسید که تشخیص دهد عدد چند رقمی است !
میشه یه راهنمایی کنید ؟
برنامه 2:
int a; cin>>a;
int count=0;
int tmp,r,b;
while (b>0)
{
r=a%10;
b=a/10;
count++;
a=b;
}
cout<<count;
برای برنامه اول میتونی عدد بریزی توی آرایه،وسط آرایه رو پیدا کنی وخونه قبل و بعد روباهم مقایسه کنی
 

software eng

کاربر حرفه ای
کاربر ممتاز
سلام دوستان.من برنامه تبدیل عبارت infix به prefix رو میخواستم بدون پرانتزگذاری.با پرانتزگذاریشو نوشتیم استاد قبول نکرد.گفت برید تو نت سرچ کنید روز امتحان میانترم بیارید!!منم هرچقدر سرچ کردم با پرانتزگذاریش هست.اگه میشه کمکم کنید.باید سه شنبه هفته دیگه(7/9/91)تحویل بدم.:(
 

ramin63007

عضو جدید
سلام دوستان
میخوام برنامه ای بنویسم که این خروجی رو چاپ کنه!!
*
***
*****
*******
*********
از صبح دارم هی مینویسم پاک میکنم:confused:
لطفا کمکم کنید
:heart:
 

soma.d.e

عضو جدید
سلام اگه میشه این دوتا برنامه رو برام بنویسید به زبان ++C
1.برنامه ای بنویسید که سال و ماه تولد شما را پشت سر هم از ورودی بگیرد وسپس سال را از ماه جدا کند و هر دورا چاپ کند
2.برنامه ای بنویسید که عدد صحیح nرا از ورودی بگیرد واولین مربع کامل بزرگتر ازnرا چاپ کند
خواهشا لازم دارم
 

halogen

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

استاد ما یک تمرین داده که با استفاده از عملگر putch یک عبارت چاپ کنیم! یعنی مثل printf به نظر شما چه طوری میشه؟؟؟؟؟؟
 

Similar threads

بالا