Gặp vấn đề chạy C

Em có một đoạn code như dưới
Sau khi em bấm run khi nó lại hoàn thành luôn ko thực thi chỗ menu? cho hỏi lý do tại sao ạ

#include <stdio.h>

#include  <cstdlib>

void menu();
bool CheckMenu(int * number, int min, int max);

int main(int argc, char ** argv) {
    int size = 1;
    int * arr;
    arr = (int * ) malloc(size * sizeof(int));
    menu();
    free(arr);
    return 0;
    return 0;
}

void menu() {
    int number;
    while (true) {
        if (number == 0) break;
        printf("----Chuong Trinh----\n");
        printf("1. Add a value\n");
        printf("2. Search a value\n");
        printf("3. Print out array \n");
        printf("4. Print out values in range inputted min and max values, inclusively\n");
        printf("5. Sort the array in ascending order\n");
        printf("0. Exit\n\n");
        //scanf("%d",&number);
        while (!CheckMenu( & number, 0, 5)) {
            printf("loi roi nhap lai di \n");
        }

    };
}
bool CheckMenu(int * number, int min, int max) {
    fflush(stdin);
    char temp;
    printf("Input menu:\n");
    if (scanf("%d%c", number, & temp) == 2) {
        if ((temp == '\n') && (( * number >= min) && ( * number <= max)))
            return true;
    }
    return false;
}

Anh ơi anh có thể format code lại và giải thích rõ bài này anh đang làm cái gì và anh đang code cái gì ở đây được không. Em nghĩ không ai hiểu anh viết gì trong code đâu ạ. Tag thì là C trong khi lại có namespace… cùng rất nhiều lỗi về cả cú pháp??? Code thì khá lung tung và đến cái cơ bản như dấu nháy kép cũng sai :

Code này trên dưới 50 lỗi sao lại vẫn run được nhỉ :thinking: . Hay máy em bị lỗi gì không hiển thị đúng các anh nhỉ

3 Likes
  • Dòng 2: #include cái gì cơ
  • Dòng 3: ngôn ngữ C mà lại dùng `using name std;
  • Dòng 5: int &number khai báo con trỏ dùng * chứ không phải &
  • Dòng 12: Cấp phát động sai cú pháp, phải là arr = (int*)malloc(size*sizeof(int)) và wtf size =0?

xin lỗi mình ko đọc tiếp được nữa

4 Likes

Dòng 2 #include không sao em copy thiếu
Dòng 3 em tạo C trong netbean thêm vào và những có pháp dùng chỉ trong C nên em để đó không anh hưởng
Dòng 5 ok em đã sửa cảm ơn anh
dòng 12 : em bạn đầu cấp 1 ô nhớ nhưng về thôi em để tạm đó . về sau em định dùng realloc mở rộng bộ nhớ ra
chốt em chưa sửa đc

lần đầu đăng cái ngoặc kép bị đổi ko để ý , chứ ko có máy nào chạy đc ngoặc kép này đâu mà định sửa ko sửa đoạn code

if(number==0) break; mà ở trên vừa khai báonumber = 0xong. Một số compiler nó sẽ mặc định như vậy nếu mình ko khai báo giá trị.

1 Like

nhưng em thấy nếu bằng 0 break đây nó cứ run mãi ko hiện ra , cũng ko break

Vậy em nghĩ anh nên chỉnh sửa lại trước khi đăng để mọi người có thể vào giúp chứ để một cái code lung tung và còn không markdown. Vấn đề này thậm chí anh Đạt đã đăng 1 topic để giới thiệu : Cách post Code dùng Markdown trong Category Programming . Việc anh làm khá là không tôn trọng người xem. Điều này thể hiện việc không xem lại kĩ trước khi đăng bài.

Về phần bài giải thì em thấy vẫn chạy được nếu gán giá trị cho number = 1:


Em có 1 chút góp ý là anh đã học đến cấp phát động rồi thì chắc cũng đã học switch...case thì sao không dùng switch...case cho gọn.
Cho em hỏi thêm sau khi anh sửa thì anh #include <cstdlib> . Thư viện này là của C++ mà.
Không #include <stdbooh.h> mà vẫn dùng kiểu bool chạy nó không báo lỗi gì ạ
Em xin hết.

2 Likes

Tui thử trên mấy cái compiler rồi vẫn hiện ra bình thường???
Input 0 vẫn cứ exit đấy thôi?

nếu là file .cpp thì vẫn chạy đươc nha bạn.
Nhưng đúng chuẩn thì vẫn nên đổi lại

2 Likes

em đổi đc rồi ạ em cảm ơn

swtich case dùng cho function khác biên dưới và anh chưa viết vì test từng cái một

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