PDA

View Full Version : جمع چندجمله ای



sa1378
جمعه 20 تیر 1393, 11:02 صبح
سلام
من این برنامه رو برای جمع کردن و ساده کردن اعضای یک چند جمله ای نوشتم:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int size=10;
int pow[size]={30,27,21,18,16,16,5,3,3,2};
int of[size]={3,43,23,43,12,16,3,4,2,10};
for{int i=0;i<=size-1;i++}
{
if (pow[i]==pow[i+1])
{
of[i]=of[i]+of[i+1]
for{int j=0;j<=size-1;j++}
{
if(j<=size-2)
pow[j]=pow[j+1]

else if (j==size-1)
size=size-1;
}
}
}
cout<<pow<<" "<<of<<endl;
for{int k=0;k<=size-1;k++}
{
cout<<pow[k]<<" "<<of[k]<<endl;
}


system("PAUSE");
return EXIT_SUCCESS;
}

ولی این برنامه این همه ارور میده
چیکار باید کنم؟
121024

emadrezvani
جمعه 20 تیر 1393, 11:37 صبح
برای رفع خطاها باید کدتون رو بصورت زیر ویرایش کنید. اما حالا کد درست کار میکنه یا نه با خودتون. احساس میکنم کدتون از نظر اجرایی مشکل داره ولی خطا نداره.

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int size=10;
int pow[10]={30,27,21,18,16,16,5,3,3,2};
int of[10]={3,43,23,43,12,16,3,4,2,10};
for(int i=0;i<=size-1;i++){
if (pow[i]==pow[i+1]){
of[i]=of[i]+of[i+1];
for(int j=0;j<=size-1;j++){
if(j<=size-2)
pow[j]=pow[j+1];
else
if (j==size-1)
size=size-1;
}
}
}
cout<<pow<<" "<<of<<endl;
for(int k=0;k<=size-1;k++)
{
cout<<pow[k]<<" "<<of[k]<<endl;
}


system("PAUSE");
return EXIT_SUCCESS;
}

sa1378
جمعه 20 تیر 1393, 11:49 صبح
من چرا فکر کردم بعد for باید {} گذاشت؟؟:متفکر:
ارور ها رفع شد ولی کد درست کار نمیکنه و خروجیش اشتباهه
اگه کسی میتونه اصلاح کنه
خودمم دارم روش کار میکنم ببینم چیش غلطه

sa1378
جمعه 20 تیر 1393, 11:56 صبح
میشه درست debug کردن رو بگید جوریه؟
من میخوام مقدار یکی از اعضای آرایه رو در طول برنامه ببینم(اینجا [ pow[ 0 هست.)

hosseinam1370
جمعه 20 تیر 1393, 12:03 عصر
بیا یکم برات تو دستورات ، ردیفش کردم .
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
const int size = 10;
int sizee = 10;
int pow[size]={30,27,21,18,16,16,5,3,3,2};
int of[size]={3,43,23,43,12,16,3,4,2,10};
for(int i=0;i<=size-1;i++)
{
if (pow[i]==pow[i+1])
{
of[i]=of[i]+of[i+1];
for(int j=0;j<=size-1;j++)
{
if(j<=size-2)
pow[j]=pow[j+1];
else if (j==size-1)
sizee=size-1;
}
}
}
cout<<pow<<" "<<of<<endl;
for(int k=0;k<=size-1;k++)
cout<<pow[k]<<" "<<of[k]<<endl;

system("PAUSE");
}

hosseinam1370
جمعه 20 تیر 1393, 12:07 عصر
ببین حالا که رفع کردیش ، میشه کدش رو بزاری ! تا ببینم چجوری اون sizee رو مساوی با size - 1 قرار دادی ، بدونه اینکه متغییری معرفی کنی.
برا منم جالب شده.

sa1378
جمعه 20 تیر 1393, 12:29 عصر
ببین حالا که رفع کردیش ، میشه کدش رو بزاری ! تا ببینم چجوری اون sizee رو مساوی با size - 1 قرار دادی ، بدونه اینکه متغییری معرفی کنی.
برا منم جالب شده.




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

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int size=10;
int pow[10]={30,27,21,18,16,16,5,3,3,2};
int of[10]={3,43,23,43,12,16,3,4,2,10};
for(int i=0;i<=size-1;i++){
if (pow[i]==pow[i+1]){
of[i]=of[i]+of[i+1];
for(int j=0;j<=size-1;j++){
if(j<=size-2)
pow[j]=pow[j+1];
else
if (j==size-1)
size=size-1;
}
}
}
cout<<pow<<" "<<of<<endl;
for(int k=0;k<=size-1;k++)
{
cout<<pow[k]<<" "<<of[k]<<endl;
}


system("PAUSE");
return EXIT_SUCCESS;
}


همین کدی که ایشون دادن رو زدم دیگه
ارور هاش رفع شد

sa1378
جمعه 20 تیر 1393, 12:33 عصر
خروجی برنامه الان اینه:
121026
کار برنامه اینه که ببینه اگه دو تا توان برابرند اونارو یکی کنه و ضریب هاشونو جمع کنه و چاپشون کنه
باید اولین عدد توی خروجی توان 30 باشه
ولی اینجا 16 هست و کلا کد از بیخ اشکال داره