PDA

View Full Version : سوال: ارور در dev-c ++



miss.ati
چهارشنبه 11 آذر 1394, 12:25 عصر
ممکنه کمکم کنید که مشکل برنامم کجاست؟واسه چی ارور میده؟
#include <iostream.h>
#include <stdlib.h>

int main()
{
int f ;
int n ;
cin >> f ;
int start = 0 ;
int end = n-1 ;
while (start<=end)
{
int mid = (start+end) / 2 ;
if (int a[mid] == f)
cout << "found" << mid ;
else if(int a[mid] < f)
end = mid-1 ;
else
if (int a[mid]>f)
start = mid+1 ;
}
if (start>end)
cout << "not found" ;
system("PAUSE");
return 0;
}http://s5.picofile.com/file/8225908442/Untitled.png

mostafamd
چهارشنبه 11 آذر 1394, 12:53 عصر
سلام دوست عزیز این برنامه مشخص که داره جست و جو دودویی انجام میده اما برنامه ناقصه یعنی ارایه شما تعریف نشده که داخل اون سرچ کنه .

مثلا شما برای نگهداشتن اندیس خونه اخر ارایه N-1 رو در نظر گرفتی اما N-1 مشخص نیست چیه کل برنامه ایراد داره

اگه می خواد سرچ جست و جوی باینری رو داشته باشید باید ارایه شما مرتب باشه مشخص که این کد رو از یه سایت برداشتید برنامه و کامل استفاده کنید که صحیح میشه سوال دیگی بود در خدمتم
#include <conio.h>
#include <iostream.h>

main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
a[i]=rand()%50;
}


cout<<endl;

for(int i=0;i<n;i++) //sort
{
for(int j=0;j<n-1;j++)
{
if(a[j+1]>a[j])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}

for(int i=0;i<n;i++) //namayesh
{
cout<<a[i]<<" ";
}

int f;
cin>>f;
int start=0; //Binary search
int end=n-1;
while(start<=end)
{
int mid=(start+end)/2;
if(a[mid]==f)
{
cout<<"found at "<<mid;
break;
}
if(a[mid]<f)
end=mid-1;
else if(a[mid]>f)
start=mid+1;
}
if(start>end)
cout<<"Not found!";

getch();

}

miss.ati
چهارشنبه 11 آذر 1394, 14:45 عصر
#include <iostream.h>
#include <stdlib.h>

int main()
{
int x[10];
for(int i=0;i<10;i++)
x[i]=rand()%10;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(x[i]<x[j])
{int t=x[i];
x[i]=x[j];

int f ;
int n ;
cin >> f ;
int start = 0 ;
int end = n-1 ;
while (start<=end)
{
int mid = (start+end) / 2 ;
if(int a[mid] == f)
cout << "found" << mid ;
else if(int a[mid] < f)
end = mid-1 ;
else
if (int a[mid]>f)
start = mid+1 ;
}
if (start>end)
cout << "not found" ;
system("PAUSE");
return 0;
درسته حالا 10 تا عدد تصادفی تولید میکنه و مرتب میکنه اما دو تا ارور داره اروور اول از if(int a[mid] == f) و ارور دوم از آکولاد خط اخر

mostafamd
چهارشنبه 11 آذر 1394, 15:51 عصر
ارورش های یکی بخاطر تابع rand که باید کتابخانه stdlib رو بهش اضافه کنی ولی ارور دوم بخاطر این که طول ارایه رو از کاربر خواسته که اون بسته به نوع کامپایلر ممکنه فرق کنه برای این که وارد مسائل پیچیده نشیم و فقط کاربر جست وجوی دو دوی رو نشون بدیم بجای اینکه از کاربر بخواد طول ارایه رو بخواد خودت تعریف کن مثلا 20 تا یا ده تا کد زیریرو که برات میزارم خودم ادیت کردم و کار می کنه


=================
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>

main()
{
const int n=10;

int a[n];
for(int i=0;i<n;i++)
{
a[i]=rand()%50;
}


cout<<endl;

for(int i=0;i<n;i++) //sort
{ 
for(int j=0;j<n-1;j++)
{
if(a[j+1]>a[j])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}

for(int i=0;i<n;i++) //namayesh
{
cout<<a[i]<<" ";}

cout<<"\nloftan add khod ro baray serch vard konid\n";

int f;
cin>>f;
int start=0; //Binary search
int end=n-1;
while(start<=end)
{
int mid=(start+end)/2;
if(a[mid]==f)
{
cout<<"found at "<<mid;
break;
}
if(a[mid]<f)
end=mid-1;
else if(a[mid]>f)
start=mid+1;
}
if(start>end)
cout<<"Not found!";

getch();

}

mostafamd
چهارشنبه 11 آذر 1394, 15:54 عصر
فقط ممکنه کپی و جایگذاری کنی ارور متنی پیش بیاد پس مطابق همین کد بزن

miss.ati
چهارشنبه 11 آذر 1394, 18:07 عصر
اخه اینطوری ک شما نوشتید استادم میفهمه کار من نیست.اونی که من نوشتم از جزوه ای ک استادم درس داد هست.اگه ممکنه مثل همون بنویسیدش.ممنونتون میشم

mostafamd
چهارشنبه 11 آذر 1394, 20:08 عصر
اخه کدی که نوشتی خیلی ایراد داره می تونی بهم بگی استادتون دقیق ازتون چی خواسته ؟

صورت برنامه چی گفته یا همین کد رو ایراد هاش رو برات رو بگیرم ؟

miss.ati
چهارشنبه 11 آذر 1394, 20:50 عصر
اخه کدی که نوشتی خیلی ایراد داره می تونی بهم بگی استادتون دقیق ازتون چی خواسته ؟

صورت برنامه چی گفته یا همین کد رو ایراد هاش رو برات رو بگیرم ؟

برنامه ای بنویسید که یک ارایه ۱۰ عنصری را به صورت نزولی مرتب کرده و نمایش دهد:
یک مقدار را داخل این ارایه مشخص نموده و در صورت پیدا کردن ان اندیس ارایه را نمایش دهد
این صورت برنامس

[mr.mm]
چهارشنبه 11 آذر 1394, 22:01 عصر
آقا هر کی میتونه اینو جواب بده بخدا از صب تا حالا اسکل شدم:
توضیح سوال

به یک جدول n*m جدول بایندری می گوییم، اگر از اعداد صفر یا یک تشکیل شده باشد. به عبارت دیگر به جدولی که از صفر و یک تشکیل شده و n*m است، یک جدول باینری می گوییم .
و یا جدول دارای n سطر و m ستون را جدول باینری می گوییم، اگر و فقط اگر جز صفر و یک حاوی عدد دیگری نباشد. میله یک جدول باینری است که یک سطر یا یک ستون دارد و تنها حاوی صفر است. با عنایت به داستان بالا، شما باید بلندترین میله را در یک جدول باینری n*m بیابید.



ورودی

در سطر اول ورودی استانده به ترتیب دو عدد n و m می اید و سپس در n سطر بعد، در هرسطر mعدد (صفر یا یک ) آمده است. 1<=n,m<=1000
یعنی اول سطر و ستون رو وارد میکنیم بعد به تعداد همون سطر وستون 0و 1 میزاریم هر جور خواسیتم میزاریم


خروجی

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


ورودی نمونه
4 3
0 1 0
1 0 1
0 0 0
1 1 1
خروجی نمونه
الان طول بیشترین 0 ها رو به ما داد که 3 تا بود فقط باید پشت سر هم باشند و یا سطر و یا ستون را کامل کنند که اینجا سطر رو کامل کرد
3
ورودی نمونه 2
6 5
0 1 1 0 0
0 1 0 1 0
0 1 0 0 0
1 0 1 1 0
1 1 1 0 0
0 1 0 0 0
خروجی نمونه 2
الان طول بیشترین 0 ها رو به ما داد که 6 تا بود فقط باید پشت سر هم باشند و یا سطر و یا ستون را کامل کنند که اینجا ستون بود
6
خیلی به جوابش نیاز دارم هر کی حل کرد بده