PDA

View Full Version : ايراد اين كد چيست؟



m-taheri
یک شنبه 13 اردیبهشت 1388, 22:01 عصر
ايراد اين كد چيست؟



#include <iostream>
#include <conio>

main()
{
char s1[20];
char s2[20];
int z;

cout << "please enter an integer : ";
cin >> z;
cout << " please enter string 1 : ";
cin.getline(s1,20);
cout << " please enter string 2 : ";
cin.getline(s2,20);

getch();

}

mabbaszadegan
یک شنبه 13 اردیبهشت 1388, 22:30 عصر
از چه کامپایلری استفاده میکنی؟
اگه از ++vc استفاده میکنی هدر فایلت باید اینطوری بشه:

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

SamaPic
یک شنبه 13 اردیبهشت 1388, 22:42 عصر
با سلام.
دوست من شما ایراد کد خود را بیان نکرده اید.اگر گفته بودید خیلی بهتر بود.
ولی با توجه به تجربه احتمال می دهم که مشکل شما با گذاشتن یک get.line پس از cin اول برطرف شود.یعنی :





string A;
cin>>z; getline (cin,A);




اگر مشکل شما بر طرف نشد ، ایراد برنامه را بیان کنید.
خدانگهدار.

Salar Ashgi
یک شنبه 13 اردیبهشت 1388, 23:33 عصر
سلام ، كد شما مشكل خاصي نداره ! مشكل اصلي بر مي گرده به تابع main ، بالاخره يه تابع است بايد يه

مقداري رو برگردونه ، در صورتي كه شما هيچ مقداري رو نذاشتين !!!

حالا ميتونيد كدتون رو به int main يا void main و ... تغيير بديد !!!

m-taheri
دوشنبه 14 اردیبهشت 1388, 18:23 عصر
اینجوری باید درست بشه :

#include <iostream.h>
#include <conio.h>
int main()
{
char s1[20];
char s2[20];
int z;
cout << "please enter an integer : ";
cin >> z;
cout << " please enter string 1 : ";
cin.getline(s1,20);
cout << " please enter string 2 : ";
cin.getline(s2,20);
getch();
return 0;
}



بازم همون مشكل پا برجاست
شما يه بار ران كن متوجه ميشيد

m-taheri
دوشنبه 14 اردیبهشت 1388, 18:32 عصر
اینجوری باید درست بشه :

#include <iostream.h>
#include <conio.h>
int main()
{
char s1[20];
char s2[20];
int z;
cout << "please enter an integer : ";
cin >> z;
cout << " please enter string 1 : ";
cin.getline(s1,20);
cout << " please enter string 2 : ";
cin.getline(s2,20);
getch();
return 0;
}


بازم همون مشكل پا برجاست
شما يه بار ران كن متوجه ميشيد

m-taheri
دوشنبه 14 اردیبهشت 1388, 19:50 عصر
آقا يون مديرا نظر نميدن؟

m-taheri
دوشنبه 14 اردیبهشت 1388, 22:18 عصر
با سلام.
دوست من شما ایراد کد خود را بیان نکرده اید.اگر گفته بودید خیلی بهتر بود.
ولی با توجه به تجربه احتمال می دهم که مشکل شما با گذاشتن یک get.line پس از cin اول برطرف شود.یعنی :





string A;
cin>>z; getline (cin,A);



اگر مشکل شما بر طرف نشد ، ایراد برنامه را بیان کنید.
خدانگهدار.





اين برنامه اصولا بايد يك int و دو تا string بگيره :


cout << "please enter an integer : ";
cin >> z;
cout << " please enter string 1 : ";
cin.getline(s1,20);
cout << " please enter string 2 : ";
cin.getline(s2,20);
ولي برنامه string اول رو نميگيره.

من رو چند تا كامپايلر تست كردم . شما هم روي pc خودتون ران كنيد متوجه ميشيد.


اگه ميشه دليلش رو هم بگيد .

SamaPic
دوشنبه 14 اردیبهشت 1388, 22:26 عصر
با سلام.
دوست من کاری را که من گفتم را انجام ندادی.:عصبانی:
cin وقتی عمل می کند به آخر خط رسیده و سپس به ادامه ی برنامه می پردازد.
وقتی شما getline می کنید در واقع برای اولین بار داری NULL آخر خط اول که اینتیجر است را می گیری .بنابراین در متغییر s1 شما مقدار NULL ذخیره می شود.( یا ادامه ی خط که خالی است در متغییر قرار می گیرد.)
راه حل مشکل شما این است که پس از cin اول یک بار getline انجام بدهی .من خودم در ابتدای کار با string ها همیشه با این مشکل رو برو بودم.
شما یک بار پس از cin ، قبل از گرفتن مقدار s1 ، یکبار getline کنید تا مشکل کاملا بر طرف شود.
باز هم اگر مشکل بر طرف نشد بیان کنید.
خدانگهدار.

Keyhan Clever
دوشنبه 14 اردیبهشت 1388, 23:03 عصر
اینجوری باید درست بشه :

#include <iostream.h>
#include <conio.h>
int main()
{
char s1[20];
char s2[20];
int z;
cout << "please enter an integer : ";
cin >> z;
cout << " please enter string 1 : ";
cin.getline(s1,20);
cout << " please enter string 2 : ";
cin.getline(s2,20);
getch();
return 0;
}