PDA

View Full Version : نحوه نوشتن کد در codeforces



sa1378
پنج شنبه 24 مهر 1393, 17:22 عصر
سلام
من هرچی کد برای این سایت میفرستم سر یه سوال جواب اشتباه میده
مثلا این سوال ساده گفته دو تا رشته میگیریم اگه برابر بودن بنویس YES اگه نبودن بنویس NO
http://codeforces.com/problemset/problem/41/A
من کد های زیادی نوشتم و هی روی یه ورودی جواب اشتباه داد
آخری هم که نوشتم این بود که میگه روی خروجی 32 اشتباه جواب داده!!!
#include <iostream>

using namespace std;

int tool(char a[])
{
int p=0;
for(int i=0;a[i]!=0;i++)
p++;
return p;
}
int main() {

char a[100],b[100],c[100];
cin>>a>>b;
int t=tool(a);
int t2=tool(b);
for(int i=0;i<t;i++)
{
c[t-i-1]=a[i];
}
if(t!=t2)
cout<<"NO";
else if (t==t2)
{
int p=0;
for(int i=0;i<t;i++)
{
if(b[i]!=c[i])
{
p++;
break;
}
}
if(p==0)
cout<<"YES";
if(p!=0)
cout<<"NO";
}

return 0;
}

کجای این کد اشتباهه؟؟؟
لطفا کد دیگه ای ندید و اشکال اینو بگید

مسعود اقدسی فام
پنج شنبه 24 مهر 1393, 19:36 عصر
زمانی که از cin استفاده می‌کنید، فاصله خودش جدا کننده حساب می‌شه. مثلا:
salam man masoud hastam

با این کد شما a می‌شه salam و b می‌شه man. پس اگه رشته ورودی مساله فاصله داشته باشه استفاده از cin به درد نمی‌خوره و cin.getline مناسب هست.

راستی چرا از string‌ استفاده نمی‌کنید؟ اینطوری با عملگر == خیلی ساده برابری بررسی می‌شه. البته من سوال رو ندیدم که ببینم شرط خاصی داره یا نه.

rahnema1
پنج شنبه 24 مهر 1393, 20:56 عصر
به علت اینکه در انتهای رشته یه دونه صفر قرار می گیره باید طول رشته ها را 101 بگیرید
در ضمن لزومی نداره طول رشته ها را خودتون به دست بیارید با scanf میشه همزمان رشته موجود در یک خط را ذخیره کرد و طولش را به دست آورد
البته همین طور که دوستمون اشاره کردند اسپیس ها را باید در نظر گرفت
همچنین هدر string.h تابع جهت اندازه گیری طول رشته وجود داره

zero_ox
دوشنبه 28 مهر 1393, 07:25 صبح
این خط رو c[t-i-1]=a[i];
به این صورت تغییر بدید c[i]=a[i];

sa1378
چهارشنبه 30 مهر 1393, 19:17 عصر
این خط رو c[t-i-1]=a[i];
به این صورت تغییر بدید c[i]=a[i];

داریم رشته رو مثلا برعکسش میکنیم