Tìm số số chữ số lớn nhất

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAX_LEN_ARR 1000
#define true 1
#define false 0
int max,n;
//nhập lần lượt từng giá trị cho đến khi gặp số 0, với mỗi giá trị nhập vào tăng biến n lên 1 đơn vị
void nhapMang(int a[])
{
    n=0;
    for(int i=0;1;i++)
    {
    scanf("%u",&a[i]);
    n+=1;
    if(a[i]==0)
        break;
    return n;
    }
}
//tìm số chữ số của từng số ở mảng array và lưu vào vị trí tương ứng của mảng dem[]
void demsochuso(int a[],int dem[], double log(int a[]))
{
    for(int i=0;i<n;i++)
    {
        dem[i]=(int)(log(a[i])/log(2));
        if(a[i]==1)
            dem[i]=1;
    }
}
//tìm ra số chữ số lớn nhất ở mảng đếm
int timDemMax(int dem[], int a[])
{
    max=dem[0];
    for(int i=0;i<n;i++)
     {
        {
            if(dem[i]>=max)
                max=dem[i];
        }
        return max;
     }
}
//đối chiếu max ở mảng đếm sẽ tìm ra đc số ở mảng array tương ứng
void inDemMax(int dem[],int a[])
{
  for(int i=0;i<n;i++)
    {
        if(dem[i]==max)
        printf("%d ",a[i]);
    }
}
int main()
{
    int t;
    int arr[MAX_LEN_ARR],dem[MAX_LEN_ARR];
    scanf("%d",&t);
    while( t>0 )
    {
        nhapMang(arr);
        demsochuso(arr, dem,log);
        timDemMax(dem, arr);
        inDemMax(dem, arr);
        printf("\n");
     t--;
    }
}

cho em hỏi bài này em sai ở đâu ạ

code này đúng
bạn dựa vào đâu mà nói nó sai

3 Likes

dạ em cho chạy thử nó không ra đc hết các số ấy anh

Bạn đang so sánh với giá trị lớn nhất chứ không phải so sánh với số lượng chữ số lớn nhất.

1 Like

một bài toán có nhiều bước làm
kết quả cuối cùng sai, có nghĩa là bước nào đó trong bài giải của bạn sai

bạn hãy kiểm tra lại, sau mỗi bước, code có chạy đúng ý muốn của bạn chưa

ví dụ bước 1 là nhập
vậy bạn hay thêm code, kiểu tra xem bạn nhập có đúng chưa
đúng thì kiểm tra tiếp, sai thì sửa bước này rồi kiểm trả bước kế tiếp

làm sao biết đúng sai, đúng sai do bạn tự định nghĩa mà thôi
ví dụ ở trên, nhập số testcase, sau khi nhập, thì t = 2, bạn cần kiểm tra t có thật sự bằng 2 hay không…
tiếp theolà xử lý từng testcase, mỗi testcase lại có

  • nhập mảng, sau khi nhập, bạn kiểm tra lại các biến xem có đúng ý bạn không, ví dụ như mảng đầu tiên, nhập vô rồi thì n mong muốn bằng bao nhiêu, code chạy thực tế ra n bằng bao nhiêu
4 Likes

dạ vâng ạ để e chạy từng phần nhỏ ạ

em nghĩ lúc này em tìm đc số lượng chữ số lớn nhất ở hàm trên ra rồi , đến hàm này em sẽ so sánh số lượng chữ số của từng số của mảng array đã lưu ở mảng đếm với cái số lượng chữ số lớn nhất(max) nếu nó = với max thì sẽ in ra a[i] tương ứng với dem[i] ý anh

em suy nghĩ về hướng bài này là nhập và lưu vào mảng lần lượt cho đến khi gặp số 0, mỗi lần nhập và lưu sẽ tăng 1 giá trị đếm(biến đếm ở đây em gọi là n)
sau đó em cho chạy mảng array các giá trị vừa nhập em tìm lần lượt số chữ số của mảng array và lưu vào mảng dem[] với vị trí tương ứng. sau đó em đi so sánh tìm max của mảng đếm, ra đc max em sẽ so sánh lần lượt các giá trị trong mảng dem[] nếu dem[i]=max thì sẽ in ra a[i] tương ứng

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