Hàm tinh giờ trong tài liệu C_aptech bị lỗi?

đây là code trong sách : http://codepad.org/isaMJJvq

#include <stdio.h>
#include <conio.h>

//khai bao prototype
void time(int &,int &);

//ham doi phut thanh gio:phut
void time(int &ig,int &ip)
{
    ig = ip/60;
    ip %= 60;
}

void main (void)
{
    int igio, iphut;
    printf("Nhap vao so phut: ");
    time(igio,iphut);
    printf("%02d:%02d\n",igio,iphut);
    getchar();
}

và lỗi :
Line 18: error: conio.h: No such file or directory
Line 5: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
Line 8: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
In function ‘main’:
Line 15: warning: return type of ‘main’ is not ‘int’


e tự học nên những code trong sách k chạy được e k thể tự giải quyết được . ai đi ngang qua đọc được thì giúp hộ e . e cảm ơn nhiều

2 Likes

http://codepad.org/LT2SHjGN

#include <stdio.h>

//khai bao prototype
void time(int *,int *);

//ham doi phut thanh gio:phut
void time(int *ig,int *ip)
{
    *ig = *ip/60;
    *ip %= 60;
}

void main (void)
{
    int igio, iphut;
    printf("Nhap vao so phut: ");
    time(&igio,&iphut);
    printf("%02d:%02d\n",igio,iphut);
    getchar();
}

Xem chạy không?

dạ chạy, nhưng sẽ bị " số rác " . và khi nhập số vào nó sẽ k chạy mà dừng chương trình

Code bị thiếu nhập vào iphut mà, lâu đâu ra để tính :smile: Nhận lại code mà không chịu chạy kiểm tra.
http://codepad.org/GS4akJzN

#include <stdio.h>

//khai bao prototype
void time(int *,int *);

//ham doi phut thanh gio:phut
void time(int *ig,int *ip)
{
    *ig = *ip/60;
    *ip %= 60;
}

void main (void)
{
    int igio, iphut;
    printf("Nhap vao so phut: ");
    scantf("%d", &iphut);
    time(&igio,&iphut);
    printf("%02d:%02d\n",igio,iphut);
    getchar();
}

dạ. chạy được rồi a. mới gặp có mấy lỗi tí tí mà e đang lẫn lộn lên hết rồi. Nhưng sao lại thay & = * vậy a ?

1 Like

Toán tử “&” là toán tử dùng để lấy địa chỉ của biến. Con trỏ “*” dùng để lưu giá trị địa chỉ của biến, nên ta có thể dùng " * " hay " & " chắc như nhau :smiley: . Vì bản chất của của việc truyền tham biến là truyền địa chỉ của biến đó.

    #include "stdafx.h"
    #include "conio.h"
    
    //khai bao prototype
    void time(int &,int &);
    
    //ham doi phut thanh gio:phut
    void time(int &ig,int &ip)
    {
        ig = ip/60;
        ip %= 60;
    }
    
    void main (void)
    {
        int igio, iphut;
        printf("Nhap vao so phut: ");
        scanf("%d", &iphut);
        time(igio,iphut);
        printf("%02d:%02d\n",igio,iphut);
        getchar();
    	
    }

Lần sau sửa hết được các lỗi này là kiểu gì cũng chạy nhưng chưa chắc ra đáp án đúng nhé, học đọc lỗi đi, C đọc lỗi dễ nhất rồi ý.

Bài này của bạn ý chỉ dùng tham chiếu reference (&) không có pointer mà anh. Anh chỉ vậy sợ lại không hiểu * ở đâu ra. Bạn xem bài tham chiếu và con trỏ các clip C của anh @ltd nha :blush:
Bài này dùng tham chiếu vì đã biết chắc chắn nó chỉ đến igio và iphut.

#include <stdio.h>
#include <conio.h>

//khai bao prototype
void time(int &,int &);

//ham doi phut thanh gio:phut
void time(int &ig,int &ip)
{
    ig = ip/60;
    ip %= 60;
}

int main ()
{
    int igio, iphut;
    printf("Nhap vao so phut: ");
    scanf("%d",&iphut); // thiếu chỗ này.
    time(igio,iphut);
    printf("%02d:%02d\n",igio,iphut);
    getchar();
}
1 Like

Lỗi thì mình đọc được, nhưng k biết phải sửa lại như thế nào . Ráng đọc thêm tài liệu + video :smiley:

Code nhiều bạn sẽ quen lỗi thôi. Ví dụ như bài trên hàm scanf() bạn bỏ toán tử & đi.

scanf("%d",&iphut);   => scanf("%d",iphut); 

Chương trình vẫn chạy nhưng không ra kết quả, không báo lỗi, chỉ hiện con trỏ quay vòng. gặp nhiều bạn sẽ biết lỗi ở đó.
Đấy là kinh nghiệm của mình thôi. Còn đã báo lỗi Error màu đỏ ra rồi thì cứ tìm đúng dòng đó mà sửa

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