Lập trình C - kí tự hoặc số

Mình đang còn vướng mắc vấn đề về nhận dạng ký tự để cho chuỗi dừng lại, nếu có thể nhờ các bạn hướng dẫn giúp, cảm ơn.

Yêu cầu:
Nhập vào phần tử n >=1, nhập vào giá trị a[ i ] gồm n số nguyên, in ra giá trị lớn nhất và nhỏ nhất của mảng.

Ý tưởng:

  • Nhập từng số nguyên
  • Khi muốn kết thúc chuỗi thì nhập dấu chấm.

Vấn đề chưa giải quyết được:

  • Nhận dạng dấu chấm (ASCII Dec:46 Hex:0x2E)

code:

#include <stdlib.h>
#include <stdio.h>
int main(){
    printf("Chuong trinh in gia tri lon nhat va nho nhat trong mang.\n\n");
    int i=1,snn,sln,a[i],n=1;
    char kt;
    do{
        printf("\nNhap vao phan tu a[%d]: ",i); scanf("%d",&a[i]);
        kt=a[i]; printf("a[%d]:= %d, &d= %d, &c=%c, na=%d",i,a[i],kt,kt,n);
        if (kt==46){
            n--;}
        else{
            sln=a[i];snn=a[i];
            n++;}
        i++; printf(", nb=%d",n);
        //if (n<1) printf("\nVui long nhap vao so phan tu >0.");
    }while (i==n);
    for (i=1;i<n;i++){
        if(sln<a[i]) sln=a[i];
        else if(snn>a[i]) snn=a[i];
    }
     printf("\n\n%d la so lon nhat trong mang",sln);
     printf("\n%d la so nho nhat trong mang",snn);
     return;
}

Cho nhập chuỗi rồi parse thôi :slight_smile:

2 Likes

Hi Ron Bin.
Theo mình dữ liệu vào của bạn hỗn hợp cả số và ký tự nên bạn cần viết 1 hàm để đọc nó vào trước dựa trên kiểu cơ bản là char.

1 Like

Cảm ơn bạn.
Chuỗi của mình chỉ yêu cầu nhập số, còn về ký tự ngoài thì nó là ý tưởng mình đưa ra để biết khi nào muốn kết thúc, do vậy nên mình mới không viết hàm nhận dạng ngòai số.

Cảm ơn bạn,
Mình chưa hiểu ý bạn nói là ntn?

Như trên. Bài này ko nên dùng scanf (có kí tự) mà dùng fgets sau đó parse bằng sscanf.

2 Likes

Tks.
Để mình thử, do chỉ biết scanf , chớ fgets với sscanf chưa bik có tồn tại

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