30/09/2018, 20:01

Làm thế nào để đếm được kí tự giống nhau trong dãy số

cho dãy 40;41;42;43;44;45;46;47;48;49;50;51 kết quả có 10 ký tự số 4.
bác nào cho em hướng giải quyết đếm ký tự số 4 trên dãy kia với ah

Ngô Doãn Tuấn viết 22:12 ngày 30/09/2018

Sao bài này quen thế nhỉ ?
Mình vừa rep rồi mà nhỉ ?
Bạn lại up lại bài phải không nhỉ ?
Bài này bạn cho dãy là chuỗi
Sau đó bạn duyệt từng phần tử, kiểm tra phần tử có chưa kí tự ‘4’ thì sẽ tăng biến đếm lên.

Phượng Lê viết 22:12 ngày 30/09/2018

lúc nảy nhà mình mất mạng .bạn ơi cho mình hỏi thêm khi chuyển sang chuổi nó duyệt đến phần tử 44 biến đếm se tăng lên 2 lần mà

Ngô Doãn Tuấn viết 22:18 ngày 30/09/2018

bạn dùng hàm kiểm tra nếu có kí tự mình cần thì nó báo về có
tùy theo từng ngôn ngữ bạn sử dụng
Không thì bạn có thể xây dựng hàm đó

viết 22:17 ngày 30/09/2018

Mình nghĩ thì bạn cho quét dãy a[0] > a[n]
Lặp cái biến count; Nếu chỉ giới hạn ở 2 chữ số thì:
Với a[i] %10 == 4 count++; (int)a[i] = a[i]/10 == 4 count++;
Còn nếu không giới hạn số chữ số thì dùng vòng while.

Phượng Lê viết 22:08 ngày 30/09/2018

Cho 1<=A<=B<=100000000
A, B la so nguyen.
hay viet chuong trinh dem so 4.
vidu: 1 ->9 thi co 1 so.
40 ->50 thi co 10 so .
Bài toan không dừng ở 2 số bạn ah .

Khanh Tran viết 22:10 ngày 30/09/2018

không biết đây có phải là chuỗi không.
nếu là chuỗi thì:
tạo một mãng string[] rồi split(chuoi) đó vào với ký tự ‘;’ (dấu chấm hỏi)

sau đó chạy vòng lặp xét từng phần tử trong mãng.

trong mãng ép từ phần tử đó về array char[];

rồi xét ký tự đầu phải ‘4’ không >> nếu phải thì tăng count lên.

Ngô Doãn Tuấn viết 22:13 ngày 30/09/2018

ký tự đầu phải ‘4’ không

Nếu nó không phải ở đầu thì sao hehe

Khanh Tran viết 22:12 ngày 30/09/2018

ồ không biết mình có hiểu nhầm đề bài không ta.
mà cũng dễ thôi nếu cứ có 4 thì đếm thì dễ rồi.

viết 22:12 ngày 30/09/2018

Vậy tức đề là:
Input: A, B
Output: Số số 4 giữa A và B?!
Vậy thì bạn cho vòng lặp cho i từ A đến B, với mỗi giá trị i bạn cho dòng while để chiết từng số ra (phép chia lấy dư) kiểm tra như mình nói ở trên ấy

Phượng Lê viết 22:11 ngày 30/09/2018
int dem (int A,int B) 
{ 
	int i;
	int count=0;
	for (i=A;i<=B;i++) 
    {    
    	while( i/10 == 4 )
    	{
    	count++;
        }
        
    } 
    return (count);
    
     
} 



int main()
{
	int m,n;
     
    cout<<" Nhap n=:"; 
    cin>>n; 
    cout<<"nhap m=:"; 
    cin>>m;
    cout<<dem(n,m)<<" ptu\n"; 
    
    getch(); 
    return 0; 
}

em lam theo cach cua bac gia tri tra ve bang 0

Ngô Doãn Tuấn viết 22:12 ngày 30/09/2018

Bạn test trong khoảng nào vậy ?

Phượng Lê viết 22:05 ngày 30/09/2018
int dem (int A,int B) 
{ 
	int i;
	int count;
    for (i=A;i<=B;i++) 
    {    
    	while(i/10 == 4 )
    	{
    	count++;
    	
        }
        
    } 
    return (count);
    
     
}

đây bác

Ngô Doãn Tuấn viết 22:01 ngày 30/09/2018

while(i/10 == 4 )

Cái này của bạn nó bị lặp vô hạn ở đoạn này
Thay while = if

Phượng Lê viết 22:15 ngày 30/09/2018

bác ơi em thay if vào rồi nó vẫn ko được ra kết quả như mong đợi
ví dụ A=1 và B=9
thì đếm không bằng 1.

Ngô Doãn Tuấn viết 22:13 ngày 30/09/2018

A=1 và B=9

thì 4\10=0 tất nhiên là không được

Phượng Lê viết 22:07 ngày 30/09/2018

em thử A=40 và B=50 cũng ko đc bac

Ngô Doãn Tuấn viết 22:08 ngày 30/09/2018
#include <iostream>

using namespace std;

int dem (int a,int b)
{
int i;
int count=0;
for (i=a;i<b;i++)
{
if( i/10 == 4 )
{
count++;
}

}
return count;
}

int main()
{
int m,n;

cout<<" Nhap n=:";
cin>>n;
cout<<"nhap m=:";
cin>>m;
cout<<dem(n,m)<<" ptu\n";

return 0;
}
Phượng Lê viết 22:08 ngày 30/09/2018

Bác cho em hỏi thêm , Bây giờ em muốn thử A=1 và B=1000 thì phép chia lấy dư kia có cần sữa lạ ko ah

Ngô Doãn Tuấn viết 22:06 ngày 30/09/2018

Được chưa bạn ?..

Phượng Lê viết 22:08 ngày 30/09/2018

được rồi nhưng khi em thử giá trị khác A=20 và B =50.thì vẫn báo đếm đc 10

Bài liên quan
0