PDA

View Full Version : Code kiểm tra xem một xâu có bao nhiêu từ bằng C. Nếu xâu có nhiều dấu cách liền nhau thì sai?



mrloveht
30-10-2010, 04:03 PM
các bác cho em hỏi đoạn code của em sai chỗ nào mà chạy bị sai kết quả thế nhỉ hjzz.

các bác thử xem :
ví dụ như gõ :"hanh hanh hanh" thì bình thường nhưng gõ thêm vào giữa các từ mấy dấu cách liên tiếp thì kết quả sai



/*Nhap xau .kiem tra xem xau co bao nhieu tu.Kiem tra xem tu` vua nhap xuat hien bao nhieu lan trong xau
.CHuan hoa xau*/
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char xau[50];
char kt;
int s,i,dem;
printf("Nhap vao xau ky tu : ");
gets(xau);
//kiem tra so tu co trong xau
s= strlen(xau);
for (i=1;i<=s;i++)
{
if (xau[i]==' ')
{
s=s-1;
}
}
printf("\nSo tu trong xau la : %d",s);
printf("\nNhap tu can kiem tra : ");
scanf("%c",&kt);


dem=0;
for (i=0;i<=s;i++)
{
if (xau[i]==kt)
{
dem=dem+1;
}
}
printf("\nTu ,%c, xuat hien %d lan trong xau ",kt,dem);
getch();
}

hienclubvn
30-10-2010, 04:14 PM
cái này để làm gì bạn?


for (i=1;i<=s;i++)
{
if (xau[i]==' ')
{
s=s-1;
}
}

mrloveht
30-10-2010, 04:24 PM
cái này dùng để đếm số từ có trong xau loại bỏ dấu cách ra.

13thang08
30-10-2010, 04:53 PM
Lỗi sai của bạn là để biến i chạy từ 1 và s bị thay đổi trong quá trình chạy vòng lặp
Bạn sửa lại thành


int k=s;
for (i=0;i<s;i++)
{
if (xau[i]==' ')
{
k=k-1;
}
}
printf("so ki tu trong xau la:%d",k) ;

dehin
30-10-2010, 08:54 PM
Ko hiểu bạn đinh đếm số từ như trong tiêu đề topic hay số kí tự trong xâu đây.
Mà khi chuẩn hóa xâu đó rồi thì có thể đếm từ= số dấu cách+1

quyen1991
31-10-2010, 12:54 AM
chi ma dai thế
bác dùng cái hàm isalpha trong ctype la được mà

mrloveht
31-10-2010, 08:04 AM
thank các bạn nhé.tớ đã sửa đc lỗi rồi.:D

changkhocodon
21-12-2010, 03:48 PM
đề ôn tập học kì 1 năm nhất của mình cũng có câu này nhưng mình học C++,thôi thì cứ viết ra đây cho mọi người xem, mình test thử roài chuẩn lun:d :


#include<iostream.h>
#include<math.h>
#include<conio.h>
int main(){
char s[50];
int dem=0,i;
gets(s);
for(i=0;s[i]!='\0';i++)
if (s[i]==' '&&s[i+1]!=' ') dem++;
cout<<"so tu` cua xau la: ";
if (s[0]==' ') cout<<dem;
else cout<<dem+1;
cout<<endl;
}