امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با cin
نویسنده پیام
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #1
مشکل با cin
سلام !

امروز مسابقه acm خیلی ها روی یکی از سوال ها یه مشکل عجیب داشتن !!

سوال خیلی ساده بود! ورودی اول یه عدد میده که تعداد تست کیس ها رو مشخص می کنه. بعد برای هر تست کیس دو خط رشته میده که رشته اول یه متن کد شده و رشته دوم کلید ! کلید 26 حرفه که به ترتیب حروف الفبا مشخص می کنه حروف تغییر داده شده چی هستن . . .

مشکل روی دریافت ورودی بود.
کد php:
#include <iostream>
#include <string>
using namespace std;

void main()
{
    
int n;
    
string s1,s2;
    
    
cin >> n;
    
//cin.ignore();

    
getline (cins1'\n');
    
getline (cins2'\n');

    
cout << s1 << endl;

    
cout << s2 << endl;


کد php:
#include <iostream>

using namespace std;

void main()
{
    
int n;
    
char s1[100],s2[100];
    
    
cin >> n;
    
//cin.ignore();

    
cin.getline (s1100'\n');
    
cin.getline (s2100'\n');

    
cout << s1 << endl;

    
cout << s2 << endl;


مثل اینکه اگه یه بار از cin استفاده کنیم، این cin روی getline بعدی اثر میذاره. \n از cin جا میمونه و میره برای getline بعدی . . . هر کی یه راه حلی می گفت. یکی می گفت از cin.ignore() استفاده کنید. یکی می گفت دوبار باید از getline استفاده کرد تا \n رد بشه . . . بعضی از روش ها جواب میداد ولی وقتی برنامه رو میفرستادیم قبول نمی کرد. اونطرف سیستم عامل لینوکس بود و کامپایلر gcc . داور می گفت آخر رشته ها بعضی وقت ها \r هست و بعضی وقت ها \n و بعضی وقت ها ترکیبی از این دوتا! به سیستم عامل مربوط میشه! می گفت نکته سوال اینه که ورودی رو یه جوری بگیرین که ربطی به آخر رشته نداشته باشه و به اون آخر حساسیت نشون نده !
ما برنامه رو 15 بار فرستادیم ! ولی آخرش نشد ! همه روش ها رو امتحان کردیم! بعضی وقتها با دوبار اینتر مشکل حل میشد . . . یکی از تیم هایی هم که حل کرده بود می گفت رو کامپیوتر خودشون جواب نمیداد ولی اونطرف برای داور جواب داده ! خلاصه این سال بالایی ها مشکل نداشتن !
شما می دونید باید چیکار کرد ؟

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۱۵-اسفند-۱۳۸۷, ۲۰:۳۶:۳۴
ارسال‌ها
پاسخ
amirjan آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,105
موضوع‌ها: 24
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 348
( 697 تشکر در 251 ارسال )
ارسال: #2
RE: مشکل با cin
حقیقتش دقیق نفهمیدم قضیه چی بوده و اونور چه اتفاقی میفتاده که میگی "قبول نمیکرد" . یعنی مثلا اون n اولی رو میگرفته یا نمی گرفته ؟ اون دو خط بعد چی ؟ میگرفته یا نمی گرفته ؟
اگه میگرفته ، خوب چرا با یه حلقه و find و replace هر چی n\ و r\ بود حذف نمی کردید؟ ...
یه چیز دیگه رو هم نمیفهمم .. تو لینوکس (و کلا یونیکس) کاراکتر سرخط n\ هست و توی ویندوز n\r\ ... حالا اینا چجوری اطلاعات رو وارد می کردن که یه بار r\ هم میشده ؟! ... (سیستم عاملی نمیشناسم کاراکتر سرخطش r\ باشه ...)

سید امیر حسین حسنینی

Human knowledge belongs to the world ...
۱۶-اسفند-۱۳۸۷, ۰۲:۲۹:۰۹
ارسال‌ها
پاسخ
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #3
RE: مشکل با cin
منم دیگه الان کد ها و روش هایی رو که امتحان کردیم ندارم که بخوام بیشتر توضیح بدم . . . قاتی کردم ! فقط همین یادمه که می گفت باید یه کاری کنید که به آخر رشته کاری نداشته باشه !!

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۱۷-اسفند-۱۳۸۷, ۰۰:۴۰:۲۳
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS