Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#61
ممنون می شم اگه سوال مطرح نکنید ، چون دارم یه سوال قشنگ ترجمه می کنم
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#62
قشنگ=سخت
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#63
سوال پنجم

[center:2be21e81db]4[/center:2be21e81db]
این سوال از مسابقات ACM سال 2007 دانشگاه کالیفرنیا انتخاب شده است. Sponsor این مسابقات google بوده است.
طریقه ی ورود و خروج اطلاعات توسط خودم آسان سازی شده است.

یک معمای قدیمی انگلیسی وجود دارد که به دنبال کلمه ای می گردد که بتوان بیشترین تعداد حرف را از آن حذف کرد به طوری که با معنی بماند. حذف حروف مرحله به مرحله انجام می شود و کلمه باید در همه ی این مراحل معنی دار باقی بماند. مثلا به سیر کلمه ی starting نگاه کنید:

[center:2be21e81db]
[/center:2be21e81db]

همانطور که می بینید همه ی این کلمات با معنی هستند.
برنامه ای بنویسید که از کاربر تعداد دلخواهی واژه به صورت string بگیرد و واژه ای را پیدا کند که بتوان از آن بیشترین تعداد حرف را کم کرد و همینطور مشخص کند که چند حرف می توان حذف کرد.
برای مثال اگر کلمات
ant
boy
a
car
an
cant
any
وارد شوند خروجی به این صورت است:
cant:3
یعنی از cant می توان بیشترین تعداد حرف را حذف کرد و این تعداد 3 تاست
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#64

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#65
[center:86877d0d64]
5


ببخشید؛ کلمه مطلوب باید از بین کلمات ورودی کاربر باشه؟؟!

[/center:86877d0d64]
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#66
[center:06e72aab08]5[/center:06e72aab08]
بله
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#67
مطمئن نیستم درسته یا نه؛ آخه توربو سی ام قاطی کرده کامپایلش نکردم

کد
#include<iostream.h>
#include<conio.h>
#include<string.h>
int mean(char st[],int ls,char s[][],int l[],int n)
{
int i,j,f,flag=0;
for(i=0;(i<n)&&(flag=0);i++)
{
f=1;
if(ls!=l[i])
f=0;
else
{
for(j=0;(j<ls)&&(f=1);j++)
if(st[j]!=s[i][j])
f=0;
}//else
if(f==1)
flag=1;
}//for
if(flag==1)
return 1;
else
return 0;
}
int maximum(char ch[],int lc,int n,char s[][],l[])
{
char str[100];
strcpy(str,char);
int i,m=0;max=0;
for(i=0;i<lc;i++)
{
for(j=i;j<lc-1;j++)
ch[j]=ch[j+1];
ch[l]=0;
lc--;
if(meaning(ch[100],lc,s[100][100],l[100],n)==1)
{
m++;
maximum(ch[100],lc,n,s[100][100],l[100])
}
if(m>max)
max=m;
strcpy(char,str);
}
return max;
}
main()
{
int n,i,j,l[100],max,maximum=0;
char s[100][100];
cout<<"enter n:";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"enter word #"<<i+1<<":";
gets(s[i]);
l[i]=strlen(s[i]);
}
for(i=0;i<n;i++)
{
max=maximum(s[i],l[i],n,s[100][100],l[100]);
if(max>maximum)
{
maximum=max;
j=i;
}
}
cout<<s[j]<<":"<<maximum;
getch();
}//main
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#68
[center:2c49a87949]5[/center:2c49a87949]این برنامه برای من اجرا نمی شه و Error میده . میگه باید اندازه ی آرایه ها را تعیین کنید. شما اول الگوریتم را بنویسید ، این چیزها خیلی مهم نیست
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#69
[center:9fa47e74e0]6[/center:9fa47e74e0]

اکنون ساعت 04:58:38 است.دونفر(نوپا و نویسنده) به این ترتیب باهم بازی میکنند:

نوپا به تعداد رقمهای فردی که ساعت نشان میدهد(مثلا اکنون ساعت ۲ رقم فرد ۳ و ۵ را نمایش میدهد) به نویسنده سکه میدهد و نویسنده ۴برابر تعداد صفرهایی که ساعت در هر مرحله نشان میدهد به نوپا سکه میدهد.هر مرحله یک ثانیه طول میکشد و عددی که ساعت نشان میدهد در هر مرحله تغییر میکند.برنامه ای بنویسید که مشخص کند بعد از چند مرحله تعداد سکه هایی که نویسنده دریافت کرده برابر با تعداد سکه هایی است که نوپا دریافت کرده است.


منبع: المپیاد کامپیوتر wonderland
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#70
کد
#include<iostream.h>
#include<conio.h>
#include<string.h>
main()
{
int i,nopa=0,writer=0,odd,ziro,a[7],s=0,flag=1;
a[1]=0;a[2]=4;a[3]=5;a[4]=8;a[5]=3;a[6]=8;
while(flag=1)
{
odd=0;
ziro=0;
for(i=1;i<=6;i++)
{
if(a[i]%2==1)
odd++;
if(a[i]==0)
ziro++;
}
nopa+=ziro-odd;
writer+=odd-ziro;
if(nopa==writer)
flag=0;
s++;
for(i=6;i>1;i-=2)
{
if(a[i]>9)
a[i-1]+=1;
a[i]%=10;
if(a[i-1]>5)
a[i-2]+=1;
a[i-1]=0;
}
if(h>23)
h=0;
}//while
cout<<s;
getch();
}//main
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#71
نمی دونم چرا بعضی i ها Capital شدن!! من همه رو کوچیک نوشته بودم
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#72
برنامه تون رو تست کرده اید؟
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#73
این هم کد من که طبق معمول برای کم کردن زمان اجرا و تعداد متغیرها ، خیلی طولانی شده
کد
#include <stdio.h>
#include <conio.h>
int main()
{
int hour=4,min=58,sec=37,nopa,nevisande,zaman=-1;
printf("\nHow many coins does nopa have at start?");
scanf("%d",&nopa);
printf("\nHow many coins does nevisande have at start?");
scanf("%d",&nevisande);
while(nopa!=nevisande)
{
zaman++;
//stepping the clock
sec++;
if(sec==60)
{
sec=0;
min++;
}
if(min==60)
{
min =0;
hour++;
}
if(hour==24)
{
hour = 0;
}
//end of stepping

//nopa gives some coins to nevisande
if(sec%2==1)
{
nopa--;
nevisande++;
}
if((sec/10)%2==1)
{
nopa--;
nevisande++;
}
if(min%2==1)
{
nopa--;
nevisande++;
}
if((min/10)%2==1)
{
nopa--;
nevisande++;
}
if(hour%2==1)
{
nopa--;
nevisande++;
}
if((hour/10)%2==1)
{
nopa--;
nevisande++;
}
//end of nevisande coins

//nevisande gives some coins to nopa
if(sec%10 == 0)
{
nevisande -=4;
nopa +=4;
}
if(sec/10 == 0)
{
nevisande -=4;
nopa +=4;
}

if(min%10 == 0)
{
nevisande -=4;
nopa +=4;
}
if(min/10 == 0)
{
nevisande -=4;
nopa +=4;
}


if(hour%10 == 0)
{
nevisande -=4;
nopa +=4;
}
if(hour/10 == 0)
{
nevisande -=4;
nopa +=4;
}

}//end of while
printf("\nThey would become equal in %d seconds.",zaman);
getch();
return 2010;
}
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#74

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#75
البته یه اشتباه کوچیک دارم... الآن ویرایش می کنم
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#76
فکرتون اشتباهه!
چون برنامه ی شما همون اول میگه با هم برابر شدند!!!!!
و ضمنا جالب اینه که به جای عملگر تساوی == از عملگر انتساب = استفاده کرده اید
چرا برنامه هاتون را debug نمی کنید؟
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#77
فکر نمی کنید ممکن است بیش از یک روز طول بکشد؟ در اون صورت تعداد 0 ها فرق می کنه!!
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#78
یادم رفته بود هر روز 24 ساعته، مبنای ساعت رو هم 60 تایی گرفته بودم
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#79
پست قبلی من رو هم در نظر بگیرید
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#80
Goharshady گفت
چرا برنامه هاتون را debug نمی کنید؟
یه مشکلی برای توربو سیم پیش اومده، include ها رو نمی خونه
بعدش هم همه ی خطوط برنامه رو ارور مده!!
 
بالا