Lỗi ở hàm to_string trong c++

dạ chào mn.
Câu hỏi
Em muốn hỏi vì sao lại bị lỗi ở hàm to_string và cách fix ạ
Sau đây em xin dẫn ** 2ví dụ bài của em**.
Vd1

Đề:
trên mặt bảng ghi số 1. Mỗi một lần biến đổi, Bờm thực hiện một trong hai phép toán sau đây đối với số viết trên bảng: hoặc là cộng thêm nó với 1, hoặc là đổi chỗ các chữ số của nó (không được để số 0 đừng đầu từ trái qua phải). sau đó xoá số đanng có trên bảng về viết kết quả thu được.
dữ liệu vào:

  • dòng đầu ghi số nguyên t - số lượng test
  • dòng thứ i trong t dòng tiếp theo chứa số nguyên Ni (2<=Ni<10^9, 1<=i<=T)

test
input:
3
2
955
21
output:

Code:

#include <iostream>
#include <bits/stdc++.h>
#include <string>
#include <fstream>
using namespace std;
long long a[10000];
long long n;
int traoso(int b) {
    string x;
    int s,i;
    x=to_string(b);
    s=x.size();
    sort(x+1;x+1+s);
    for (i=0;i<=s-1;i++) {
        if (x[i]=0) {
            swap(x[i],x[i+1]);
        }
    }
    b=atoi(x.ctr());
    return b;
}
int ktra(int b) {
    int x,c,i,dem;
    string y;
    x=abs(a-b);
    dem=0;
    while(b>=1) {
        traoso(b)
        y=to_string(b);
        c=y.size();
        b=b-1;
        dem++;
        for (i=0;i<=c-1;i++) {
            if ((y[i]>a[i+1]) && (y[i]!=0) && (y[i+1]!=0)) {
                traoso(y);
                dem++;
            }
        }
    }
    return dem;
}
main()
{
    cin>>n;
    for (i=1;i<=n;i++) {
        cin>>a[i];
    }
    for (i=1;i<=n;i++) {
        cout<<ktra(a[i])<<endl;;
    }

}

Giải thích thuật toán

Lấy ví dụ là số 85. số trên bảng là 3
đầu tiên là lấy x=/3-85/=82 - đây là giá trị cần phải biến đổi để 85 thành 3.

Ta áp dụng các 2 phương pháp sao cho x=0 thì oke. ( tổng số phương pháp cần làm cho quá trình này gọi là y)

Đầu tiên, đổi x thành xâu rồi sắp xếp nó cho số nhỏ lại thì 82 --> 28 ( ở thuật toán tên traoso)
Sau đấy thì lấy 28 trừ 1 cho đến khi nào mà số trước lớn hơn số sau ( ở đây là khi trừ 1 9 lần thì ta có 28-9=19 (số 1 bé hơn số sau nên ko cần biến đổi, còn nếu có thì biến đổi nó lại thành xâu rồi sắp xếp ))

Cừ làm như thế cho đến khi bằng 0 thì oke, mỗi lần trừ 1 và biến đổi thì y+1

vd2
đề: cho số nguyên t, biến nó thành xâu rồi in ra.
Code:

#include <iostream>
#include <bits/stdc++.h>
#include <string>
#include <fstream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    string s;
    s=to_string(t);
    cout<<s;
    return 0;
}

Ồ, đọc mãi mới tới cái to_string mà bạn nhắc ở tiêu đề, nhưng thất vọng! Bạn chả nói nó bị lỗi gì!

1 Like

sr nãy mình nhầm, cộng int với ‘0’ chỉ đúng cho trường hợp số từ 0 đến 9 thôi.

Ai bảo thế……. ???

Lần đầu mình nghe về vụ này .

Mình vẫn chạy được bthg từ code của b mà nhỉ
b nhập input đúng là số nguyên là được

Do std::to_string mới xuất hiện từ chuẩn C++11 nên có thể bạn thớt chưa compile code kèm flag -std=c++11. Bạn chạy code online thì có khi web compiler áp dụng chuẩn cao hơn rồi :smile:

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?