PDA

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



nokhodi
شنبه 23 آذر 1392, 14:14 عصر
برای اینکه از یک رشته(ارایه از کراکترها) اعداد بصورت زیر بیاریم بیرون چی راه حلی رو پینهاد میکنید
A= ab32cf456a9
که اعدا اینطوری جدا بشن:
32
456
9

برای اینکه بفهمم کدوم عدد هستن که میتونم از یه سرچ خطی استفاده کنم که کراکتر به کراکتر اعداد رو بفهمه
اما اینکه چطوری 4و5و6 رو 456( چهارصدوپنحاه و شش) بفمه چیکار میتونم انجام بدم؟

مصطفی ساتکی
شنبه 23 آذر 1392, 15:44 عصر
شما می تونید به صورت رشته ای ذخیرش کنید و بعد به عدد تبدیلش کنید.برای تبدیل رشته به عدد و بر عکس اینجا (http://www.7khatcode.com/41/%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B1%D8%B4%D8%AA%D9%87-%D8%A8%D9%87-%D8%B9%D8%AF%D8%AF-%D9%88-%D8%B9%D8%AF%D8%AF-%D8%A8%D9%87-%D8%B1%D8%B4%D8%AA%D9%87?show=62#a62)توضیح داده شده.

راه دیگرش هم اینه که یک متغیر در نظر بگیرید به نام sum و اولین بار با صفر مقداردهیش کنید. هر بار توی حلقه sum را در 10 ضرب کنید با عدد فعلی جمع کنید و بعد حاصل جمع رو دوباره توی sum قرار بدید

int sum =0;
int ch;
while (cin >> ch){
int value = ch - 48;
sum = sum * 10 + value;
}

hadi0x7c7
شنبه 23 آذر 1392, 22:46 عصر
اینم یه کد که به ذهن من رسید:

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
string s = "ab32cf456a9";

char c;
int n;

stringstream ss(s);
while(ss >> c) {
if(isdigit(c)) {
ss.putback(c);
ss >> n;
cout << n << endl;
}
}
}

nokhodi
شنبه 23 آذر 1392, 22:51 عصر
شما می تونید به صورت رشته ای ذخیرش کنید و بعد به عدد تبدیلش کنید.برای تبدیل رشته به عدد و بر عکس اینجا (http://www.7khatcode.com/41/%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B1%D8%B4%D8%AA%D9%87-%D8%A8%D9%87-%D8%B9%D8%AF%D8%AF-%D9%88-%D8%B9%D8%AF%D8%AF-%D8%A8%D9%87-%D8%B1%D8%B4%D8%AA%D9%87?show=62#a62)توضیح داده شده.

راه دیگرش هم اینه که یک متغیر در نظر بگیرید به نام sum و اولین بار با صفر مقداردهیش کنید. هر بار توی حلقه sum را در 10 ضرب کنید با عدد فعلی جمع کنید و بعد حاصل جمع رو دوباره توی sum قرار بدید

int sum =0;
int ch;
while (cin >> ch){
int value = ch - 48;
sum = sum * 10 + value;
}


بابت راه اول که نه ...بدون استفاده از اون دستورات باید باشه...
و اما راه حل دوم

این کد هم فک کنم به همه ی اعداد از اول تا اخر ضریب 10 رو اضافه میکنه
اما این مثال اینطوری نیست
وقتی 32 رو محاسبه کرد اگر به کراکتر حرفی خورد 32 اونجا تموم میشه بعو میشه 456 و بعد از اون 9

و در نهایت قرار این اعداد رو باهم جمع کنه که مقدارش میشه : 497

بهروز عباسی
یک شنبه 24 آذر 1392, 07:47 صبح
در این مواقع بهترین راه خل استفاده از RegEx ها است در این مورد تحقیق کنید.