PDA

View Full Version : مشکل در یک الگوریتم با سی شارپ



setareh2013
چهارشنبه 14 خرداد 1393, 11:00 صبح
سلام
من یک الگوریتم ر و می خوام که تا وقتی کاربر کلید space رو نزده از ورودی عدد دریافت کنه و اونها رو جمع کنه . ولی نمی دونم چه طوری با حلقه ی while بگم اینکارو بکنه
کسی می تونه راهنماییم کنه ؟

CsharpNevisi
چهارشنبه 14 خرداد 1393, 11:38 صبح
int a = 0; while (true)
{
string b = Console.ReadLine();
if (b == " ")
break;
try
{
a += int.Parse(b);
}
catch(Exception Ex)
{
Console.WriteLine(Ex.Message);
break;
}
}
Console.WriteLine(a.ToString());
Console.ReadKey();

CsharpNevisi
چهارشنبه 14 خرداد 1393, 11:41 صبح
یا این

int a = 0;
string b = Console.ReadLine();
while (b != " ")
{
try
{
a += int.Parse(b);
}
catch(Exception Ex)
{
Console.WriteLine(Ex.Message);
break;
}
b = Console.ReadLine();
}
Console.WriteLine(a.ToString());
Console.ReadKey();

setareh2013
چهارشنبه 14 خرداد 1393, 13:29 عصر
یا این

int a = 0;
string b = Console.ReadLine();
while (b != " ")
{
try
{
a += int.Parse(b);
}
catch(Exception Ex)
{
Console.WriteLine(Ex.Message);
break;
}
b = Console.ReadLine();
}
Console.WriteLine(a.ToString());
Console.ReadKey();

با تشکر از شما
کد دومی که نوشتید فکر می کنم فقط یک عدد رو می خونه . درسته ؟

CsharpNevisi
چهارشنبه 14 خرداد 1393, 13:34 عصر
با تشکر از شما
کد دومی که نوشتید فکر می کنم فقط یک عدد رو می خونه . درسته ؟

نه ... یه عدد خارج از حلقه میگیره که مقدار b برای مقایسه در گام اول خالی نباشه ... بعدش در اخر حلقه باز ورودی میگیره ... !!

setareh2013
جمعه 16 خرداد 1393, 09:31 صبح
من به این صورت نوشتم
char b;

cin>>b;
while(b!=' ')
{
cin>>b;
{
cout<<"finish";
ولی وقتی دکمه فاصله رو میزنم اتفاقی نمیفته

CsharpNevisi
جمعه 16 خرداد 1393, 12:33 عصر
تا اونجایی که من میدونم تو سی پلاس پلاس کاراکتر اسپیس برای ورودی دریافت نمیشه ... !!!!
مثلا این کدو نگاه کن .. !!!

#include "stdafx.h"
#include <iostream>


using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
char b = 'A';
cin >> b;
while (b != 'x')
{
cin >> b;
}
cout << "Mohsen message : finish the program \n";
cin >> b;;
return 0;
}

اینو تست کنی درست کار میکنه ... !!!!
اینجا همه دات نت کارن و سی شارپ کار میکنن ... اگه میخوایی ب جواب برسی برو تو بخش مربوط به خودش (http://barnamenevis.org/forumdisplay.php?45-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%D8%B2%D8%A8%D8%A7%D9%86-C-%D9%88-C)

setareh2013
جمعه 16 خرداد 1393, 13:02 عصر
من فکر می کنم حتما باید یک راهی باشه برای تشخیص کلیک دکمه space در c++
چون این جزو پروژم هستش و سوال استاده

CsharpNevisi
جمعه 16 خرداد 1393, 13:06 عصر
من فکر می کنم حتما باید یک راهی باشه برای تشخیص کلیک دکمه space در C++‎
چون این جزو پروژم هستش و سوال استاده

مطمئن باش که هست ... من حتی چند دقیقه پیش با کد اسکی پیادش کردم ولی جواب نگرفتم ... !!!
احتمال این که تو بخش C# جواب بگیری کمه ... !!!
برو تو بخش c++ اونجا به احتمال زیاد به جوابت برسی ... !!!

aliagamon
جمعه 16 خرداد 1393, 13:35 عصر
والا سی ++ خودکار همه ی space هارو چشم پوشی میکنه ازشون .... از noskipws استفاده کنید :
http://www.cplusplus.com/reference/ios/noskipws/

setareh2013
دوشنبه 26 خرداد 1393, 09:36 صبح
ممنون از همه ی شما
مشکل در تاپیک زیر حل شد
http://barnamenevis.org/showthread.php?455366-مشکل-در-تشخیص-کلید-space-در-ورودی
باید از تابع getch در سی پلاس پلاس استفاده کرد
char c = getch();
if(c == ' ')
puts("Space entered!");