PDA

View Full Version : مبتدی: سوال: جدا کردن سه رقم سه رقم یک عدد!



EBiN3M
سه شنبه 27 تیر 1391, 01:40 صبح
آقا من هر کاری می کنم این کد رو هیچی به ذهنم نمیرسه! این کدی که هست هیچی نداره البته اینی که نوشتم:گیج: قبلا این کد بهتر بود :دی :لبخند: اعصابم خراب شد همشو پاک کردم! جان من کمکم کنین !
آقا من میخام یه عدد بگیرم بریزمش تو یه رشته و یه شرط بزارم تا از راست سه تا سه تا با کاراکتر "," عددا رو از هم جدا کنه!
هر کاری می کردم این ارور منطقی میداد! این کد بهتر بود ولی اینطور شد حالا! جان من یه کد بنویسین :دی
ورودی اگه عدد 41203214باشه خروجی باید اینطور باشه! 41,203,214
اگه میشه بصورت یک تابع بنویسید :دی

#include<iostream>
#include<conio.h>
#define MAX 12
using namespace std;
void main()
{
long int n;
int i=0,j,k=0;
cout<<"Enter number:(12 digits max)";
cin>>n;
int a[MAX],b[MAX];
while(n>10)
{
a[i]=n%10;
n/=10;
i++;
}
a[i+1]=n;

for(j=i+1;j>=0;j--)
{a[j]=b[k];
k++;}
for(int x=0;x<=k;x++)
cout<< b[x];
getch();
}

mehdi.mousavi
سه شنبه 27 تیر 1391, 11:54 صبح
سلام.
اگر از C++ 11 استفاده کنید، می تونید بدین شکل عمل کنید:


string input = "12345678";
regex pattern("(\\d)(?=(\\d{3})+(?!\\d))");
string output = regex_replace(input, pattern, string("$0,"));

در غیر اینصورت، می تونید از boost (http://www.boost.org/) استفاده کنید (که چنین functionality ای در اختیارتون قرار میده).

موفق باشید.

پاورقی: در ویندوز می تونید از GetNumberFormatEx (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318113%28v=vs.85%29.aspx) نیز استفاده کنید.

EBiN3M
سه شنبه 27 تیر 1391, 19:04 عصر
سلام.
اگر از C++ 11 استفاده کنید، می تونید بدین شکل عمل کنید:


string input = "12345678";
regex pattern("(\\d)(?=(\\d{3})+(?!\\d))");
string output = regex_replace(input, pattern, string("$0,"));

در غیر اینصورت، می تونید از boost (http://www.boost.org/) استفاده کنید (که چنین functionality ای در اختیارتون قرار میده).

موفق باشید.

پاورقی: در ویندوز می تونید از GetNumberFormatEx (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318113%28v=vs.85%29.aspx) نیز استفاده کنید.

من خیلی مبتدی ام ... از ویژوال استودیو هم استفاده می کنم! اگه میشه یه کد کامل بنویسین ! فکر نکنم از 20 خط تجاوز کنه! ... شرمنده ولی چیزی از این نفهمیدم!

hadi0x7c7
چهارشنبه 28 تیر 1391, 02:42 صبح
اینم لقمه ای تا حدودی اماده :شیطان:

#include <stdio.h>
#include <string.h>

#define MAX 20

void reverse(char s[]) {
int i, j;
for (i = strlen(s) - 1, j = 0; j <= i; j++, i--) {
int t = s[i];
s[i] = s[j];
s[j] = t;
}
}

int main() {

long int n;
char out[MAX - 1];
int j = 0;

scanf("%ld", &n); // cin >> n
int digit;
int count = 1;
do {
digit = n % 10;
if (count == 3) {
out[j++] = digit + '0'; //converts digit to a char !
out[j++] = ',';
count = 1;
} else {
out[j++] = digit + '0';
count++;
}
n /= 10;

} while (n > 0);
// handles cases with len 3,6,9,....
if (out[--j] == ',')
out[j] = '\0';
else
out[++j] = '\0';

reverse(out);
printf("%s", out); // aka cout !
}