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

gole-rose

عضو جدید
سلام من یه سوال دارم می تونی جواب بدی برنامه ای بنویسید که دو عدد دو رقمی را گرفته و ب.م.م و ک.م.م آن دو را محاسبه و بدست آورد



اول اینکه سعی کنید خودتون بنویسید
تمرین هایی که استاد می ده برای اینه که راه بیفتین، وقتی همین برنامه های ساده رو هم نتونین بنویسین چطوری می خواین مهندس کامپیوتر خوبی بشین؟؟

من کدش رو نمی گم، فقط توضیح می دم که چطور باید بنویسین

برای ب.م.م ، میایم توی یه حلقه ی while ، تا وقتی که باقیمانده ی دو عدد (a و b) صفر نبود (یعنی دو عدد بر هم بخشپذیر نبودند) باقیمانده رو به جای عدد کوچتر (b) ذخیره می کنیم
و عدد کوچکتر (b) رو هم به جای عدد بزرگتر (a) ذخیره می کنیم

آخرش هم عدد کوچکتر (b) همون ب.م.م ماست


برای ک.م.م هم همینقدر کافیه که بدونین ک.م.م یک عدد برابر است با ضرب دو عدد تقسیم بر ب.م.م

موفق باشید
 

"sama"

عضو جدید
سلام
من راجع به کتابخونه" stl" یه بار سوال پرسیدم اما راهنمایی هاتون نتیجه نداد
میشه یه خورده سلیس تر برام توضیح بدیم!!!!
چرا ازش استفاده میکنیم ؟
چطور ازش استفاده میکنیم؟
یه لیستی هم از کتابخونه ها وامکاناتی که داره برام بفرستید(لطفا!!!)
لطف کنید هر کی هرچی میدونست بهم بگه :cry:
بازم ممنون از همه
ببخشیدبالا اشتباه تایپی داشتم
 

e55v

عضو جدید
سلام
دوستان من اگر بخوام زبان c++ یه چند جمله ای مثل: x^4+3x+1 رو برام چاپ کنه باید متغیر x رو از چه نوعی تعریف کنم؟
یعنی میخوام x رو بزارم تو یه سری محاسبات بعد چیزی که برام چاپ میکنه یه چند جمله ای بر حسب x باشه!!
لطفا اگر میشه راهنمایی کنید
ممنون
 

H.r.Ghanbari

عضو جدید
Reply: C++ STL

Reply: C++ STL

سلام
من راجع به کتابخونه" stl" یه بار سوال پرسیدم اما راهنمایی هاتون نتیجه نداد
میشه یه خورده سلیس تر برام توضیح بدیم!!!!
چرا ازش استفاده میکنیم ؟
چطور ازش استفاده میکنیم؟
یه لیستی هم از کتابخونه ها وامکاناتی که داره برام بفرستید(لطفا!!!)
لطف کنید هر کی هرچی میدونست بهم بگه :cry:
بازم ممنون از همه
ببخشیدبالا اشتباه تایپی داشتم

خیلی ساده اگه بشه گفت!::surprised:
باید با مفاهیم ساختمان داده راحت باشی، ( پشته ، صف , لیست پیوندی , جداول درهم و مرتب سازی و درخت و ... )
حالا اگه در برنامه نیاز به مثلا لیستی از اشیا داشته باشی 2 راه داری :
1. می تونی خودت بنویسی و اون متد هایی که نیاز داری رو پیاده سازی کنی!
مثلا اگه برا میکروکنترلر 8051 با کامپایلر Keil C برنامه می نویسی دیگه اونجا STL نداری باید هر چیزی رو خودت پیاده سازی کنی!
2. در STL این ساختمان داده ها بصورت استاندارد تعریف شده می تونی از اینا استفاده کنی!
حداقل چند تا مفهوم پایه ای رو باید بدونی مثل Template, Iterator و ...
طو یکی از پست های قبلی هم یه مثال زدم.
لیست کاملشو هم در گوگل بنویس STL Tutorial واست بیاره;)
 
آخرین ویرایش:

H.r.Ghanbari

عضو جدید
Reply: Polynomial

Reply: Polynomial

سلام
دوستان من اگر بخوام زبان c++ یه چند جمله ای مثل: x^4+3x+1 رو برام چاپ کنه باید متغیر x رو از چه نوعی تعریف کنم؟
یعنی میخوام x رو بزارم تو یه سری محاسبات بعد چیزی که برام چاپ میکنه یه چند جمله ای بر حسب x باشه!!
لطفا اگر میشه راهنمایی کنید
ممنون

سوالت مبهم:surprised:
ولی کلا برای پیاده سای چند جمله ای ها با ید از یک ساختاری استفاده کنی که ضریب و توان نگه داره
مثلا:
کد:
typedef struct _Polynmial
{
    int power;
    float coefficient;
} Polynmial;

حالا مثلا یه جمله شو می تونی اینجوری به رشته تبدیل کنی:
کد:
Polynmial p;
char temp[512];
sprintf(temp, "(%f)X^(%d)",p.coefficient,p.power);
 

e55v

عضو جدید
سوالت مبهم:surprised:
ولی کلا برای پیاده سای چند جمله ای ها با ید از یک ساختاری استفاده کنی که ضریب و توان نگه داره
مثلا:
کد:
typedef struct _Polynmial
{
    int power;
    float coefficient;
} Polynmial;

حالا مثلا یه جمله شو می تونی اینجوری به رشته تبدیل کنی:
کد:
Polynmial p;
char temp[512];
sprintf(temp, "(%f)X^(%d)",p.coefficient,p.power);

ممنون واسه جوابتون
ببینید مثلا یه همچین کدی رو من تو متلب نوشتم
کد:
syms X
for i=1:n-1

    s=-(X-x(i+1))^3*m(i)/h(i)+(X-x(i))^3*m(i+1)/h(i)+c(i)*(X-x(i))+d(i);
    ss=char(s);
    disp(ss);
end

اینجا اومدم متغیر X رو از نوع syms یعنی symbol تعریف کردم بعد با یه سری عدد جمع و تفریقش کردم، بعد از نوع char معرفیش کردمو چاپش کردم
حالا همین کارو بخوام تو c++ انجام بدم باید چیکار کنم؟
بازم تشکر
 

shuresh

عضو جدید
سوال:

سوال:

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

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>

struct treenode{
int data;
int num;
treenode *next;
treenode *right;
treenode *left;
}*start=NULL,*end=NULL,*p;

struct code{
char bcode[12];
int ch;
}coding[256];

struct tree{
int data;
int num;
}atree[512];

int o=0;

int search(int i);
void insert(int i);
void insertm(struct treenode *l);
void sort();
void create();
void binary(struct treenode *n,char byte[],int i);
void tree(struct treenode *n,int i);
int numnode=0;
int numchar=0;
char filename[25];

void main()
{
clrscr();
FILE *fp1;

cout<<"\n Enter The Location And Name Of The Source File To Compress : ";
cin>>filename;
fp1=fopen(filename,"r+b");
if (fp1==NULL)
{
cout<<"\n Error In Open File...";
getch();
exit(1);
}
int i=getc(fp1);
while (i!=-1)
{
numchar++;
if (search(i)==-1)
insert(i);
i=getc(fp1);
}
fclose(fp1);
sort();
create();
char byte[20]={0};
binary(start,byte,0);
tree(start,1);
getch();
}

//*************************search******************************
int search(int i)
{
struct treenode *h;
h=start;
while(h)
{
if (h->data==i)
{
h->num=h->num+1;
return 0;
}
h=h->next;
}
return -1;
}
//**************************insert******************************
void insert(int i)
{
p=new treenode;
p->data=i;
p->num=1;
p->right=p->left=p->next=NULL;
if (start==NULL)
{
start=p;
end=p;
}
else
{
end->next=p;
end=p;
} }
//******************************Sort*******************
void sort()
{
struct treenode *h1,*h2,*n2,*right,*left;
int d,n;
n2=start;
while(n2)
{ h1=start;
h2=start->next;
while(h2)
{
if (h1->num > h2->num)
{
d=h1->data;
n=h1->num;
right=h1->right;
left=h1->left;
h1->data=h2->data;
h1->num=h2->num;
h1->right=h2->right;
h1->left=h2->left;
h2->data=d;
h2->num=n;
h2->right=right;
h2->left=left;
}
h1=h2;
h2=h2->next;
}
n2=n2->next;
} }
//****************Create*******************************
void create()
{
struct treenode *h;
while (start->next)
{
p=new treenode;
p->left=start;
p->right=start->next;
p->num=start->num+start->next->num;
p->data=-1;
p->next=NULL;
h=start;
start=start->next->next;
h->next->next=NULL;
h->next=NULL;
insertm(p);
sort();
}}
//********************Insertm****************************
void insertm(struct treenode *l)
{
if (start==NULL)
{
start=l;
end=l;
}
else
{
end->next=l;
end=l;
} }
//********************Binary****************************
void binary(struct treenode *n,char byte[],int i)
{
if (n->data==-1)
{
char b1[20]={0},b2[20]={0};
strcpy(b1,byte);
strcpy(b2,byte);
b1='1';
binary(n->right,b1,i+1);
b2='0';
binary(n->left,b2,i+1);
}
else
{
cout<<"Char :"<<(char)n->data<<" Byte : "<<byte<<"\n";
strcpy(coding[o].bcode,byte);
coding[o++].ch=n->data;
}
}
//*********************************************************
void tree(struct treenode *n,int i)
{
atree.data=n->data;
atree.num=n->num;
numnode=i;
if (n->left!=NULL)
tree(n->left,2*i);
if (n->right!=NULL)
tree(n->right,2*i+1);
}
 

شمیم کوهستان

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

Fateme Sepehri

عضو جدید
سلام
من تازه برنامه نویسی به زبان c رو شروع کردم و تقریبا هیچی بلد نیستم
میتونید کمکم کنید تا این تمرینهایی که استادم داده رو درست حلش کنم

1) الگوریتمی بنویسید که عددی را دریافت کن و تمامی اعاد فرد کوچکتر از آن را چاپ کند؟؟؟؟

2) الگوریتمی بنویسید که اعداد 200 و 80 را دریافت و جذر آنها را حساب کند؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
 

VGA

عضو جدید
تو این برنامه مشکل دارم ... لطفا کمکم کنین ...
کد:
[LEFT]#include<iostream>
using std::cout;
using std::cin;
using namespace std;
class math
    {
        public:
            void input();
            void max();
            void min();
            void average();
            void output();
        private:
            int arr[10],biger,lower,i,sum,x,y;
            float miangin;
    };
void math::input()
    {
        sum=0;
        for(i=0;i<10;i++)
        {
            cout<<"adad "<<i+1<<" ra vared konid: ";
            cin>>arr[i];
            sum+=arr[i];
        }
    }
void math::max()
    {
        x=0;
        if(arr[i]>arr[i-1])
            {
                x=arr[i-1];
                arr[i-1]=arr[i];
                arr[i]=x;
            }
        biger=arr[10];
    }
void math::min()
    {
        y=0;
        if(arr[i-1]>arr[i])
            {
                y=arr[i-1];
                arr[i-1]=arr[i];
                arr[i]=y;
            }
        lower=arr[0];
    }
void math::average()
    {
        miangin=sum/10;
    }
void math::output()
    {
        cout<<"\nMax: "<<biger<<"\tMin: "<<lower<<"\nAverage: "<<miangin<<"\n";
    }
int main()
    {
        math a;
        a.input();
        a.max();
        a.min();
        a.average();
        a.output();
        return 0;
    }
[/LEFT]
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
سلام
من تازه برنامه نویسی به زبان c رو شروع کردم و تقریبا هیچی بلد نیستم
میتونید کمکم کنید تا این تمرینهایی که استادم داده رو درست حلش کنم

1) الگوریتمی بنویسید که عددی را دریافت کن و تمامی اعاد فرد کوچکتر از آن را چاپ کند؟؟؟؟

2) الگوریتمی بنویسید که اعداد 200 و 80 را دریافت و جذر آنها را حساب کند؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

سلام

سوالا خیلی اسون هستن..... من چون دستورات زبان سی رو زیاد یادم نیست الگوریتم رو براتون میگم کد زدنش فک کنم خیلی راحت باشه....

1) کافیه ورودی رو از کاربر دریافت کنی بعد توی یه حلقه به ازای تمام اعداد کوچکتر از ورودی با یه شرط if چک کنی که اگر باقیمانده ی تقسیم عدد بر 2 مخالف صفر می شد اونوقت عدد را چاپ کنی....

2) خیلی راحت با استفاده از تابع sqrt (هدر math.h )می تونی جذر عدد رو حساب کنی...
 
آخرین ویرایش:

zahra1386

مدیر بازنشسته
کاربر ممتاز
تو این برنامه مشکل دارم ... لطفا کمکم کنین ...
کد:
[LEFT]#include<iostream>
using std::cout;
using std::cin;
using namespace std;
class math
    {
        public:
            void input();
            void max();
            void min();
            void average();
            void output();
        private:
            int arr[10],biger,lower,i,sum,x,y;
            float miangin;
    };
void math::input()
    {
        sum=0;
        for(i=0;i<10;i++)
        {
            cout<<"adad "<<i+1<<" ra vared konid: ";
            cin>>arr[i];
            sum+=arr[i];
        }
    }
void math::max()
    {
        x=0;
        if(arr[i]>arr[i-1])
            {
                x=arr[i-1];
                arr[i-1]=arr[i];
                arr[i]=x;
            }
        biger=arr[10];
    }
void math::min()
    {
        y=0;
        if(arr[i-1]>arr[i])
            {
                y=arr[i-1];
                arr[i-1]=arr[i];
                arr[i]=y;
            }
        lower=arr[0];
    }
void math::average()
    {
        miangin=sum/10;
    }
void math::output()
    {
        cout<<"\nMax: "<<biger<<"\tMin: "<<lower<<"\nAverage: "<<miangin<<"\n";
    }
int main()
    {
        math a;
        a.input();
        a.max();
        a.min();
        a.average();
        a.output();
        return 0;
    }
[/LEFT]

مشکلتون کجاست؟!
 

A.S.Roma

عضو جدید
کاربر ممتاز
تو این برنامه مشکل دارم ... لطفا کمکم کنین ...
کد:
[LEFT]#include<iostream>
using std::cout;
using std::cin;
using namespace std;
class math
    {
        public:
            void input();
            void max();
            void min();
            void average();
            void output();
        private:
            int arr[10],biger,lower,i,sum,x,y;
            float miangin;
    };
void math::input()
    {
        sum=0;
        for(i=0;i<10;i++)
        {
            cout<<"adad "<<i+1<<" ra vared konid: ";
            cin>>arr[i];
            sum+=arr[i];
        }
    }
void math::max()
    {
        x=0;
        if(arr[i]>arr[i-1])
            {
                x=arr[i-1];
                arr[i-1]=arr[i];
                arr[i]=x;
            }
        biger=arr[10];
    }
void math::min()
    {
        y=0;
        if(arr[i-1]>arr[i])
            {
                y=arr[i-1];
                arr[i-1]=arr[i];
                arr[i]=y;
            }
        lower=arr[0];
    }
void math::average()
    {
        miangin=sum/10;
    }
void math::output()
    {
        cout<<"\nMax: "<<biger<<"\tMin: "<<lower<<"\nAverage: "<<miangin<<"\n";
    }
int main()
    {
        math a;
        a.input();
        a.max();
        a.min();
        a.average();
        a.output();
        return 0;
    }
[/LEFT]
چقدر مختصر !
کجای برنامه رو مشکل دارید !؟
صورت مساله رو بنویسید.
 

VGA

عضو جدید
صورت مساله که تابلوه ... 10 تا عدد از کاربر میگیره و وارد آرایه میکنه ... تو اون 10 تا باید بگه کدوم کوچیکتر و کدوم بزرگترین عدد هست ... میانگین تمام اعداد رو هم بگیره
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
صورت مساله که تابلوه ... 10 تا عدد از کاربر میگیره و وارد آرایه میکنه ... تو اون 10 تا باید بگه کدوم کوچیکتر و کدوم بزرگترین عدد هست ... میانگین تمام اعداد رو هم بگیره

خب کد بدون خطا اجرا میشه !مشکل شما چیه؟!!
 

VGA

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

zahra1386

مدیر بازنشسته
کاربر ممتاز
چی شد ؟؟؟ چرا کسی جواب نمیده ؟؟؟

صبر داشته باشید!

مشکل شما توابع min و max هست ...من این توابع رو تغییر دادم درست شد:

کد:
void math::max()
    {
        x=0;
        for(i=0;i<10;i++)
        {
            if(arr[i]>x)
            {
                x=arr[i];
            }
        biger=x;
        }
    }
void math::min()
    {
        y=arr[0];
       for(i=1;i<10;i++)
        {
            if(arr[i]<y)
            {
                y=arr[i];
            }
       
        lower=y;
       }
    }
 

VGA

عضو جدید
درست شد ممنون ... ولی یه جورایی نگرفتم ... من برا اینکار عدد بزرگتر رو بردم به خانه ی آخر آرایه و کوچکتر رو به اولین خانه ... ولی نشد.
اینجا شما اومدی گفتی که اگه عدد بزرگتر از 0 بود بریزه تو x ... و اگه عدد کوچکتر از خانه ی اول آرایه باشه بریزه تو y ؟؟؟
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
درست شد ممنون ... ولی یه جورایی نگرفتم ... من برا اینکار عدد بزرگتر رو بردم به خانه ی آخر آرایه و کوچکتر رو به اولین خانه ... ولی نشد.
اینجا شما اومدی گفتی که اگه عدد بزرگتر از 0 بود بریزه تو x ... و اگه عدد کوچکتر از خانه ی اول آرایه باشه بریزه تو y ؟؟؟

خب اصلا لزومی نداره که ما محتویات ارایه رو دست کاری کنیم!ضمن این که این کار از نظر برنامه نویسی کار درستی نیست چون ممکنه بعدا به اعداد آرایه نیاز داشته باشیم و نباید تغییرشون بدیم...

روش های مختلفی برای پیدا کردن ماکسیمم و مینیمم وجود داره که من از ساده ترین راه استفاده کردم....

برای پیدا کردن ماکس من فرض کردم که همه ی اعداد از صفر بزرگترن و اعداد منفی نداریم پس x=0 قرار دادم و همه ی اعضای ارایه رو با اون مقایسه کردم تا نهایتا عدد بزرگتر پیدا بشه...حالا اگر اعداد منفی هم داشتیم می تونیم از همون روشی که برای پیدا کردن می نیمم به کار بردم استفاده کنیم...فقط کافیه علامت > رو به < تغییر بدیم...

برای یافتن مینیمم هم فرض کردم اولین عدد همون عدد مورد نظر باشه...حالا یکی یکی اعضای ارایه رو با اون مقایسه کردم و در صورتی که عضو دیگه ای کوچکتر بود اون انتخاب میشه...
 

kasga_92

عضو جدید
اگه دقت کرده باشین در c++ وقتی چند تا متغیر معمولی رو با چند تا متغیر آرایه ای رو داخل new , heap می کنیم بدون بستگی به ترتیب این کار (new کردن) اول متغیر های معمولی رو allocate می کنه بعد آرایه ها رو....یعنی اون عدد hex ی که pointer آرایه هارو توش گرفته از همه ی pointer متغیر ها بزرگتره توی heap ... چرا این اتفاق میافته و به ترتیب new کردن ما اونارو allocate نمی کنه...؟
 

HH2BN1990

کاربر فعال
مشاهده پیوست 86747
تا اینجارو میرم
بقیه اش نیست!!!!!!!!!!!!!

مشاهده پیوست 86748

داره میگه پروژه با اون اسمی که دارین می سازین تو Solution وجود داره ! اسمش رو عوض کنید ! چون شما Solution ساختی و می خوای داخلش پروژه اضافی کنید .
می تونی از منوی فایل گزینه ی Close Solution بزنی بعد دوباره از همون منوی فایل New Project کنید .
برای دیدن اینکه چه پروژه هایی تو Solution ساختی از منوی View گزینه ی Solution Explorer رو بزنی !
 

Similar threads

بالا