Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Help Me!

23 views
Skip to first unread message

Khổng anh thắng

unread,
May 10, 2012, 10:43:20 AM5/10/12
to int2202ap
Các bạn ơi Chỉ cho mình lỗi sai của bài sau là vì sao vậy:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main () {
vector<unsigned char> a;
string s;
int k,i,n,c; i = 0; k = 0;
cout << "nhap xau :";
getline (cin, s);
n = s.length ();
if (n%2 == 0)
c = n/2;
else
c = n/2 + 1;
do {
a.push_back(s.substr (k, 2));
k += 2;
}while (k < n);
for (int j = 0; j < c; j++)
cout << a[j]<< endl;
cin.ignore (80, '\n');
cin.get();
return 0;
}
Chú ý :
Bài trên khi tớ viết a.push_back( s[i] ) thì lại đúng ko
hiểu bài trên sai vì đâu?
Có phải s.substr (k, 2) và s[i] là cùng 1 kiểu ko vậy?

Việt Dũng

unread,
May 10, 2012, 1:43:26 PM5/10/12
to int2202ap

Nó sai đơn giản vì substr trả về kiểu (string) khác với (unsigned
char), còn nó khác thế nào thì tớ chịu, muốn tìm hiểu kĩ đã có google.

Sửa: thay "s.substr(k, 2)" bằng (s[k] - '0')*10 + (s[k + 1] - '0') <--
(*)
ví dụ: "123456" => string - "12" với substr
=> unsigned char - 12 với (*)
// nhưng đoạn code kia chỉ chạy đúng với n chẵn /;-d

À quên nữa, nhớ ép kiểu int, short,... a[j] trước khi in.

Khổng anh thắng

unread,
May 11, 2012, 5:48:44 AM5/11/12
to int2202ap
bạn ơi thế thêm cái '0' vao làm j , chỉ để s[k]*10 thôi
Reply all
Reply to author
Forward
0 new messages