PDA

View Full Version : سوال: اسنخراج عدد از یک رشته



m4n_ir
سه شنبه 19 خرداد 1394, 22:51 عصر
سلام
دوستان ما یه رشته داریم به عنوان مثال 21x=0
حالا من میخوام عدد 21 رو از این رشته استخراج کنم،نظر خاصی برای انجام این کار دارین؟
پ.ن:البته این کار رو باید بدون استفاده از توابع آماده String انجام بدم.
دوستان توجه کنین که به خود عدد نیاز دارم نه رشته عدد،میخوام روی اون عدد محاسبات انجام بدم.
:لبخندساده:

-Geek-
چهارشنبه 20 خرداد 1394, 13:29 عصر
از هیچ تابع دیگه ای هم نباید استفاده بشه برای پیدا کردن یا استخراج عدد ؟ :متفکر:

m4n_ir
چهارشنبه 20 خرداد 1394, 18:20 عصر
از هیچ تابع دیگه ای هم نباید استفاده بشه برای پیدا کردن یا استخراج عدد ؟ :متفکر:
اگه تابع ش رو خودمون بنویسیم،میشه استفاده کرد

حامد مصافی
چهارشنبه 20 خرداد 1394, 18:24 عصر
یکی یکی کاراکترهای رشته رو پیمایش کن. اونایی که عددی هستند (بوسیله بررسی کد اسکی) رو بریز تو یه رشته دیگه و در نهایت با تابع atoi (http://www.cplusplus.com/reference/cstdlib/atoi/) اونو تبدیل به عدد کن

m4n_ir
چهارشنبه 20 خرداد 1394, 22:33 عصر
یکی یکی کاراکترهای رشته رو پیمایش کن. اونایی که عددی هستند (بوسیله بررسی کد اسکی) رو بریز تو یه رشته دیگه و در نهایت با تابع atoi (http://www.cplusplus.com/reference/cstdlib/atoi/) اونو تبدیل به عدد کن
ممنون حامد جان فقط یه سوال دیگه
اگه بخواییم شرط پایان دریافت ورودی (داخل while یا do while) رو رفتن به خط بعدی بزاریم چکار باید بکنیم؟از شرط نات بودن n\ استفاده کردم اما جواب نمیده.

pbm_soy
پنج شنبه 21 خرداد 1394, 02:12 صبح
شما رشته را از قبل دیافت کردید یا میخواهید آنرا دریافت کنید؟
اگر رشته را قبلا دریافت کرده باشید خوب انتهای رشته با علامت '\0' بسته میشود حالا فرقی ندارد رشته را با چه دستور ورودی دریافت کرده باشید (cin , gets , scanf , cin.getline)


char str[80];
gets(str);
for(int i=0;str[i]!='\0';i++)
putchar(str[i]);


ویا اینکه رشته را میخواهید خودتان کاراکترها را تک تک دریافت کنید تا زمانیکه کاربر اینتر بزند (کد کلید اینتر 13 است)

pbm_soy
پنج شنبه 21 خرداد 1394, 02:17 صبح
ویا اینکه هم دریافت و نمایش را بدون توابع رشته ای انجام دهید بصورت زیر



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

void main()
{

char str[80];
char ch;
int j=0;
while(1)
{
ch=getche();
if(ch==13)
{
str[j]='\0';
break;
}
str[j]=ch;
j++;
}//while

putchar('\n');
putchar('\n');

for(int i=0;str[i]!='\0';i++)
putchar(str[i]);

getch();

}//main


فقط شما باید رشته را کاراکتر به کاراکتر باید پیمایش کنید و هر کاراکتر که در آن رقم استفاده شده باشد از عدد 48 کم کنید تا عدد حاصل شود
کد اسکی 0 عدد 48 و کد اسکی 1 عدد 49 و ...... کد اسکی 9 عدد 57 میباشد

m4n_ir
پنج شنبه 21 خرداد 1394, 05:51 صبح
ویا اینکه هم دریافت و نمایش را بدون توابع رشته ای انجام دهید بصورت زیر



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

void main()
{

char str[80];
char ch;
int j=0;
while(1)
{
ch=getche();
if(ch==13)
{
str[j]='\0';
break;
}
str[j]=ch;
j++;
}//while

putchar('\n');
putchar('\n');

for(int i=0;str[i]!='\0';i++)
putchar(str[i]);

getch();

}//main


فقط شما باید رشته را کاراکتر به کاراکتر باید پیمایش کنید و هر کاراکتر که در آن رقم استفاده شده باشد از عدد 48 کم کنید تا عدد حاصل شود
کد اسکی 0 عدد 48 و کد اسکی 1 عدد 49 و ...... کد اسکی 9 عدد 57 میباشد

ممنون بابت پاسخ کامل و جامع تون،فقط یه سوال؟
فرق ()getch با ()getche چیه؟و چرا وقتی از getch استفاده می کنیم رشته ای که در حال دریافت اون هستیم رو نشون نمیده(توی همین کد وقتی از getch استفاده میکنم ورودی رو نشون نمیده) ولی خروجی رو به درستی نشون میده.

zero_ox
پنج شنبه 21 خرداد 1394, 15:49 عصر
ممنون بابت پاسخ کامل و جامع تون،فقط یه سوال؟
فرق ()getch با ()getche چیه؟و چرا وقتی از getch استفاده می کنیم رشته ای که در حال دریافت اون هستیم رو نشون نمیده(توی همین کد وقتی از getch استفاده میکنم ورودی رو نشون نمیده) ولی خروجی رو به درستی نشون میده.

من خواستم توضیح بدم برات دیدم این لینک قشنگ همراه با مثال توضیح داده
http://geeksquiz.com/difference-getchar-getch-getc-getche/