Thứ Năm, 18 tháng 4, 2024

41.Chương trình tào lao với vòng lặp, mảng, hàm, con trỏ và chuỗi phần 4

Chương trình "tào lao phiên bản 2" của chúng ta vẫn chưa hoàn thiện. Hàm danhSach() chỉ chạy đúng 3 vòng. Sinh viên ít hay nhiều chúng ta cũng chỉ nhận được tên sinh viên từ 3 vòng lặp.

Ta cần sửa lại hàm danhSach() bằng cách thêm một tham số là số sinh viên do người dùng nhập vào.

Khi gọi hàm danh sách trong main() chúng ta sẽ truyền  giá trị của biến size cho tham số mới.

Ngoài ra ta cần xóa tất cả những lệnh printf không cần thiết lúc này (Trước đây chúng ta dùng những lệnh này để kiểm tra hoạt động của chương trình).

Để tránh mọi rắc rối vì xóa nhầm, chúng ta chỉ tạm thời làm dấu ghi chú những dòng lệnh không cần thiết.

Đến lúc này, chương trình của chúng ta sẽ như sau.



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

// Khai báo hàm
void danhSach(char *sinhVien[], int so);
 // Khai báo hàm 2
int soSinhVien();

int main()
{
    //char *sinhVien[] = {"Nguyen Van A",
                     //"Tran Van B", "Le Thi C"};
    int size;
    size = soSinhVien();
    char *sinhVien2[size];
    char hoTen[30];
    
    for(int i = 0; i < size; i++){
       
        printf("Nhap Ho Va Ten Sinh Vien[%d] :\n ", i);
      
        scanf("\n");
        
        fgets(hoTen, sizeof(hoTen), stdin);
        //printf("Xin chao: %s", hoTen);
        
        //sinhVien2[i] = hoTen;
        sinhVien2[i] = strndup(hoTen,30);

    }

    //for(int i = size - 1; i >= 0; i--){
       // printf("%s ", sinhVien2[i]);
    //}
    danhSach(sinhVien2, size);
   
    
    return 0;
}

// Định nghĩa hàm
void danhSach(char *sinhVien[], int so) {

  //printf("Xin chào Dat Viet Lap Trinh! Danh sach Sinh Vien:\n");
 
  for (int i = 0; i < so; i++)
  {
    printf("%s\n", sinhVien[i]);
  }
}

// Định nghĩa hàm 2
    int soSinhVien(){
    int tongSo;
    //printf("Xin chào Dat Viet Lap Trinh! Day la tong so Sinh Vien\n");
    printf("Hãy nhập tổng số sinh viên:  ");
    scanf("%d", &tongSo);
    //printf("Tong so sinh vien là : %d\n", tongSo);
    return tongSo;

    }


Bấm Run để chạy chương trình (Chúng ta vẫn dùng IDE Online), chương trình của chúng ta đã hoàn tất 100%.



Xóa tất cả những chỗ ghi chú, không cần thiết, đây là chương trình "sạch sẽ" của chúng ta.

 

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

// Khai báo hàm
void danhSach(char *sinhVien[], int so);
 // Khai báo hàm 2
int soSinhVien();

int main()
{
    
    int size;
    size = soSinhVien();
    char *sinhVien2[size];
    char hoTen[30];
    
    for(int i = 0; i < size; i++){
       
        printf("Nhap Ho Va Ten Sinh Vien[%d] :\n ", i);
      
        scanf("\n");
        
        fgets(hoTen, sizeof(hoTen), stdin);
        
        sinhVien2[i] = strndup(hoTen,30);

    }

    danhSach(sinhVien2, size);
   
    
    return 0;
}

// Định nghĩa hàm
void danhSach(char *sinhVien[], int so) {

    for (int i = 0; i < so; i++)
  {
    printf("%s\n", sinhVien[i]);
  }
}

// Định nghĩa hàm 2
    int soSinhVien(){
    int tongSo;
   
    printf("Hãy nhập tổng số sinh viên:  ");
    scanf("%d", &tongSo);
   
    return tongSo;

    }

Như bạn thấy, chỉ một ý tưởng về chương trình rất đơn giản, nhưng chúng ta cũng phải "vật vã" qua 4 phần mới tạm hoàn tất.

Chúng ta sẽ tiếp tục đánh vật với những đề tài khác trong các phần tiếp theo.

Phần tiếp theo

Phần trước

Không có nhận xét nào:

Đăng nhận xét