Nhập vào một chuỗi gồm chữ và số, lấy các giá trị số và xuất ra theo dạng xx.xxx.xxx

Viết chương trình C++ nhập vào một chuỗi gồm chữ và số. Yêu cầu lấy các giá trị số và xuất ra theo dạng xx.xxx.xxx.
Ví dụ:
Nhập : a123b456
Xuất : 123.456

Phần lấy giá trị số thì mình làm được, chỉ còn phần dịnh dạng là mình đã thử tự làm nhưng không được. Ai đó giúp mình với. Thanks

Bạn nói rõ ngôn ngữ mình dùng ra, và tại sao không dùng for ??

1 Like
#include <stdio.h>
#include <string.h>
void nhap(char A[]);
void doichuoithanhso(char A[], char B[]);
void duyetmangB(char B[]);
void xoadauchamdaumang(char B[], int n, int &l);
void xuat(char B[]);
void main()
{
	char A[100];
	nhap(A);
	char B[100];
	doichuoithanhso(A,B);
	xuat(B);
}
void nhap(char A[])
{
	gets(A);
}
void doichuoithanhso(char A[], char B[])
{
	int l=strlen(A);
	int n=0;
	for(int i=0;i<l;i++)
		if(A[i]>='0' && A[i]<='9')
			B[n++]=A[i];
		else
			B[n++]='.';
	B[n]='\0';
	duyetmangB(B);
}
void duyetmangB(char B[])
{
	int l=strlen(B);
	int n=0;
	while(B[n]=='.')
	{
		xoadauchamdaumang(B,n,l);
		n++;
	}
	n=l-1;
	while(B[n]=='.')// xoakituchamcuoi
	{
		B[n]='\0';
		n--;
	}
}
void xoadauchamdaumang(char B[], int n, int &l)
{
	for(int i=n;i<l-1;i++)
		B[i]=B[i+1];
	l--;
	B[l]='\0';
}
void xuat(char B[])
{
	printf("%s", B);
}

Bạn có thể tham khảo code mẫu của mình…

1 Like

Mình cảm ơn. Nhưng chương trình mình cần là xóa hết các ký tự trong chuỗi, sau đó định dạng chuỗi số đó theo dạng xx.xxx.xxx
chứ không phải chuyển ký tự thành dấu chấm.

Ví dụ: Nhập a12b4567c8998
Xuất 1.245.678.998

#include <iostream>;
#include <string>;
using namespace std;

int main()
{
    string input;
    cout << "Nhap chuoi can dinh dang:" << endl;
    cin >> input;

    string output = "";
    for (char c : input)
    {
        if (isdigit(c))
        {
            output.push_back(c);
            continue;
        }

        if (output.size() == 0)
            continue;

        if (isdigit(output[output.size() - 1]))
            output.push_back('.');
    }

    cout << endl << "Chuoi da dinh dang:" << endl << output;

    cin.ignore();
    cin.get();
    return 0;
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?