PDA

View Full Version : Lập trình C Cách sử dụng hàm đếm số lượng kí tự được sử dụng trong chuỗi



vovietnghia
18-11-2010, 09:22 PM
6.2 Viết chương trình có sử dụng hàm thực hiện nhập một ký tự ch và một chuỗi ký tự từ bàn phím,
cho biết có bao nhiêu ký tự ch được sử dụng trong chuỗi ký tự này.
Yêu cầu:

-
-
-

Hàm nhapsl(ch,st), thực hiện nhập một chuỗi ký tự st và một ký tự ch.
Hàm demkytu(ch,st), thực hiện tính và trả về số lượng ký tự ch được sử dụng trong chuỗi st
Hàm inkq(ch,x), thực hiện in lên màn hình nội dung sau:

Có <x> ký tự <ch> được sử dụng trong chuỗi

#include"stdio.h"
#include"conio.h"
void nhap(char ch, char st[])
{
printf("nhap 1 chuoi ky tu:");
fflush(stdin);
gets(st);
printf("\nnhap 1 ky tu:");
fflush(stdin);
getchar();
}
int demkt(char ch, char st[])
{
int i,kq=0;
char t;
for (i=1; i<= leng(st);i++)
if (st[i] == 'ch')
t=ch;
kq=kq+1;
}
void inkq(char ch, int x)
{
printf("co %d ky tu %c duoc su dung trong chuoi",x,ch);

}
main()
{
char ch;
char st[50];
clrscr;
nhap(ch,st);
demkt(ch,st);
inkq(ch,x);
getch();
}
giải thích giúp mình nha0:)0:)

clamvn
19-11-2010, 04:18 AM
#include<string.h>
#include<stdio.h>

int main(){
char c;
char str[255];
printf("nhap ki tu :\n"); scanf("%c",&c);
printf("nhap chuoi :\n");
fgets(str,255,stdin);
char *pch=strchr(str,c);
int count=0;
while (pch){
count++;
pch=strchr(pch+1,c);
}
printf("so lan ki tu %c xuat hien trong %s là %d\n",c,str,count);
}

clamvn
19-11-2010, 04:27 AM
Nhiều xem có biết bao nhiêu lỗi


6.2 Viết chương trình có sử dụng hàm thực hiện nhập một ký tự ch và một chuỗi ký tự từ bàn phím,
cho biết có bao nhiêu ký tự ch được sử dụng trong chuỗi ký tự này.
Yêu cầu:

-
-
-

Hàm nhapsl(ch,st), thực hiện nhập một chuỗi ký tự st và một ký tự ch.
Hàm demkytu(ch,st), thực hiện tính và trả về số lượng ký tự ch được sử dụng trong chuỗi st
Hàm inkq(ch,x), thực hiện in lên màn hình nội dung sau:

Có <x> ký tự <ch> được sử dụng trong chuỗi

#include"stdio.h"
#include"conio.h"
void nhap(char ch, char st[])
{
printf("nhap 1 chuoi ky tu:");
fflush(stdin);
gets(st);
printf("\nnhap 1 ky tu:");
fflush(stdin);
getchar();
}
int demkt(char ch, char st[])
{
int i,kq=0;
char t;
for (i=1; i<= leng(st);i++) // Cái gì thế này ?
if (st[i] == 'ch') //(:-O)
t=ch; // để làm gì ?
kq=kq+1;
// ket qua return đâu ?
}
void inkq(char ch, int x)
{
printf("co %d ky tu %c duoc su dung trong chuoi",x,ch);

}
main()
{
char ch;
char st[50];
clrscr;
chapon(ch,st);
demkt(ch,st);
inkq(ch,x); // vô nghĩa
getch();
}
giải thích giúp mình nha0:)0:)

vovietnghia
19-11-2010, 09:07 AM
các anh có thể chỉnh sửa lại thành bài hoàn chỉnh giúp mình đi

boxboy9x90
19-11-2010, 09:49 AM
Viết chương trình có sử dụng hàm thực hiện nhập một ký tự ch và một chuỗi ký tự từ bàn phím,
cho biết có bao nhiêu ký tự ch được sử dụng trong chuỗi ký tự này.
Yêu cầu:
Hàm nhapsl(ch,st), thực hiện nhập một chuỗi ký tự st và một ký tự ch.
Hàm demkytu(ch,st), thực hiện tính và trả về số lượng ký tự ch được sử dụng trong chuỗi st
Hàm inkq(ch,x), thực hiện in lên màn hình nội dung sau:

Có <x> ký tự <ch> được sử dụng trong chuỗi



#include<stdio.h>
#include<conio.h>
#include<string.h>
void nhap(char ch, char st[])
{
fflush(stdin);
printf("nhap 1 chuoi ky tu:");
gets(st);
printf("\nnhap 1 ky tu:");
}
int demkt(char ch, char st[])
{
int i,kq=0;
for (i=1; i< strlen(st);i++)
if (st[i] == 'ch') kq++;
return kq;
}
void inkq(char ch, char st[])
{
printf("co %d ky tu %c duoc su dung trong chuoi",demkt(ch,st),ch);
}
main()
{
char ch;
char st[50];
clrscr; // trong DEV C hok co cai nay
nhap(ch,st);
demkt(ch,st);
inkq(ch,st);
getch();
return 0;
}

Chưa test thử nữa, có sai up lên tiếp ngen(:P)(:P)

clamvn
19-11-2010, 06:41 PM
Viết chương trình có sử dụng hàm thực hiện nhập một ký tự ch và một chuỗi ký tự từ bàn phím,
cho biết có bao nhiêu ký tự ch được sử dụng trong chuỗi ký tự này.
Yêu cầu:
Hàm nhapsl(ch,st), thực hiện nhập một chuỗi ký tự st và một ký tự ch.
Hàm demkytu(ch,st), thực hiện tính và trả về số lượng ký tự ch được sử dụng trong chuỗi st
Hàm inkq(ch,x), thực hiện in lên màn hình nội dung sau:

Có <x> ký tự <ch> được sử dụng trong chuỗi



#include<stdio.h>
#include<conio.h>
#include<string.h>
void nhap(char ch, char st[])
{
fflush(stdin);
printf("nhap 1 chuoi ky tu:");
gets(st);
printf("\nnhap 1 ky tu:");
}
int demkt(char ch, char st[])
{
int i,kq=0;
for (i=1; i< strlen(st);i++)
if (st[i] == 'ch') kq++;
return kq;
}
void inkq(char ch, char st[])
{
printf("co %d ky tu %c duoc su dung trong chuoi",demkt(ch,st),ch);
}
main()
{
char ch;
char st[50];
clrscr; // trong DEV C hok co cai nay
nhap(ch,st);
demkt(ch,st);
inkq(ch,st);
getch();
return 0;
}

Chưa test thử nữa, có sai up lên tiếp ngen(:P)(:P)
Sai bét nhè (:))
Lấy bài ở trên kìa.

vovietnghia
21-11-2010, 02:51 PM
in kết quả ra chưa đúng, cần sửa lại chỗ iin kết quả

clamvn
21-11-2010, 10:02 PM
thử lại xem

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

int main(){
char c;
char str[255];
printf("nhap chuoi :\n");
fgets(str,255,stdin);
printf("nhap ki tu :\n"); scanf("%c",&c);
char *pch=strchr(str,c);
int count=0;
while (pch){
count++;
pch=strchr(pch+1,c);
}
printf("so lan ki tu %c xuat hien trong %s là %d\n",c,str,count);
}

cfan
22-11-2010, 02:10 AM
các anh có thể chỉnh sửa lại thành bài hoàn chỉnh giúp mình đi

Theo tinh thần học tập của bạn, mình đã sửa lỗi cho bạn


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

void nhap(char *ch, char *st){
printf("\n Nhap 1 chuoi ky tu:");
fflush(stdin);
gets(st);
printf(" Nhap 1 ky tu:");
fflush(stdin);
*ch = getchar();
}

int demkt(char ch, char st[]){
int i, kq = 0;
for (i = 0; i < strlen(st);i ++)
if (st[i] == ch)
kq=kq+1;
return kq;
}

void inkq(char ch, int x){
printf("\n Co %d ky tu %c duoc su dung trong chuoi.", x, ch);
}
void main(){
char ch;
char st[50];
system("cls");
nhap(&ch, st);
inkq(ch, demkt(ch, st));
getch();
}

vovietnghia
26-11-2010, 09:10 PM
chương trinh dưới đây chạy chưa đúng hàm in kế quả không gọi được ham dếm ký tự
#include<stdio.h>
#include<conio.h>
#include<string.h>
void nhap(char ch, char st[])
{
fflush(stdin);
printf("nhap 1 chuoi ky tu:");
gets(st);
printf("\nnhap 1 ky tu:");
ch=getchar();
}
int demkt(char ch, char st[])
{
int i,kq=0;
for (i=1; i< strlen(st);i++)
if (st[i] == ch) kq++;
return kq;
}
void inkq(char ch, char st[])
{
printf("co %d ky tu %c duoc su dung trong chuoi",demkt(ch,st),ch);
}
main()
{
char ch;
char st[50];
nhap(ch,st);
demkt(ch,st);
inkq(ch,st);
getch();

}
các bạn chỉ cách khắc phục