Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: bài toán đồng hồ điện tử

  1. #1
    Ngày gia nhập
    02 2008
    Nơi ở
    thành phố hồ chí minh
    Bài viết
    7

    Red face bài toán đồng hồ điện tử

    mình đang viết chương trình làm cái đồng hồ điện tử
    thuật toán của mình là cứ nhập giờ mới cho nó là nó chạy hoài không dừng
    bây giờ mình muốn nó dừng lại chỉ khi bấm nút "Esc"
    mình đang bó tay ai giúp mình với
    Code:
    #include<iostream.h>
    #include<dos.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    int gio,phut,giay;
    cout<<"nhap gio";
    cin>>gio;
    cout<<"nhap phut";
    cin>>phut;
    cout<<"nhap giay";
    cin>>giay;
    while(1)
    {
    clrscr();
    gotoxy(33,15);
    if(gio<10) cout<<"0"<<gio<<":";
    else cout<<gio<<":";
    if(phut<10) cout<<"0"<<phut<<":";
    else cout<<phut<<":";
    if(giay<10) cout<<"0"<<giay;
    else cout<<giay;
    giay++;
    if(giay>=60)
    {
    giay=0;
    phut++;
    }
    if(phut>=60)
    {
    phut=0;
    gio++;
    }
    if(gio>=24)
    gio=0;
    delay(1000);
    }
    getch();
    }

  2. #2
    Ngày gia nhập
    03 2007
    Bài viết
    179

    bỏ điều kiện 1 trong while đi thay vào đó là
    //mã giả nhé
    Code:
    char ch;
    scanf("%c",ch);
    while ( ch != 'esc')
    {
    ..........
    }
    bỏ C lâu quá, không chắc chính xác code nhưng ý tưởng là vậy

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Cái này hơi gay 1 tí, nhưng biết rùi thì cũng không có gì, viết 1 hàm nhận vào 1 string, dùng isstringstream nhận lại giá trị, tui demo lại sơ sơ thui, coi đó mà sữa lại, compiler tui xài dos.h không được.
    C++ Code:
    1. #include <sstream>
    2. #include <iostream>
    3. #include <string>
    4. #include <conio.h>
    5.  
    6. bool PressEscToAbort(std::string &ss)
    7. {
    8.   ss = "";
    9.   while(1){
    10.     char key = getche();
    11.       if(key == 27)    
    12.         return false; // Thoát!
    13.       if(key == 13)
    14.         return true; // Đọc vào dữ liệu thành công
    15.     ss += key;
    16.   }
    17. }
    18.  
    19. int main()
    20. {
    21.   system("cls");
    22.   int hour, mins, secs;
    23.  
    24.   std::cout << "Hours : ";
    25.   std::cin >> hour;
    26.   std::cout << "Minutes : ";
    27.   std::cin >> mins;
    28.   std::cout << "Seconds : ";
    29.   std::cin >> secs;
    30.  
    31.  
    32.   std::string aChar;
    33.   std::cout << "\nEnter ESC to end\n";
    34.   while(PressEscToAbort(aChar))
    35.   {
    36.     std::istringstream iss (aChar,std::istringstream::in);
    37.     if(hour < 10)
    38.       std::cout << "0" << hour << " : ";
    39.     else
    40.       std::cout << hour << " : ";
    41.      
    42.     if(mins < 10)
    43.       std::cout << "0" << mins << " : ";
    44.      
    45.     else
    46.       std::cout << mins << " : ";
    47.      
    48.     if(secs < 10)
    49.       std::cout << "0" << secs;
    50.      
    51.     else
    52.       std::cout << secs;
    53.       secs++;
    54.    
    55.     if(secs >= 60)
    56.     {
    57.       secs = 0;
    58.       mins++;
    59.     }
    60.      
    61.     if(mins >= 60)
    62.     {
    63.       mins = 0;
    64.       hour++;
    65.     }
    66.      
    67.     if(hour >= 24)
    68.       hour = 0;
    69.   }
    70. }

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    thành phố hồ chí minh
    Bài viết
    7

    mình đã học chương trình con rồi nhưng còn nhiều lệnh mình chưa biết bạn rox_rook giải thích những dòng lệnh mình đánh dấu * ở dưới dùm nha .thanks
    C++ Code:
    1. #include <sstream>*//thư viên này là thư viên gì vậy
    2. #include <iostream>//sao thư viên iostream và string lại không có .h ở sau
    3. #include <string>
    4. #include <conio.h>
    5.  
    6. bool PressEscToAbort(std::string &ss)//*****từ bool có giá trị như thế nào, std::string &ss có nghĩa là gì
    7. {
    8.   ss = "";
    9.   while(1){
    10.     char key = getche();
    11.       if(key == 27)    
    12.         return false;
    13.       if(key == 13)
    14.         return true;
    15.     ss += key;
    16.   }
    17. }
    18.  
    19. int main()
    20. {
    21.   system("cls");//*****bạn giải thích dùm dòng này
    22.   int hour, mins, secs;
    23.  
    24.   std::cout << "Hours : ";//chữ std:: đặt trước cout ,cin để làm gì vậy
    25.   std::cin >> hour;
    26.   std::cout << "Minutes : ";
    27.   std::cin >> mins;
    28.   std::cout << "Seconds : ";
    29.   std::cin >> secs;
    30.  
    31.  
    32.   std::string aChar;//********mình không hiểu dòng này giải thích dùm nha
    33.   std::cout << "\nEnter ESC to end\n";
    34.   while(PressEscToAbort(aChar))//*****mình không hiểu dòng lệnh này
    35.   {
    36.     std::istringstream iss (aChar,std::istringstream::in);//mình không hiểu dòng lệnh này
    37.     if(hour < 10)
    38.       std::cout << "0" << hour << " : ";
    39.     else
    40.       std::cout << hour << " : ";
    41.      
    42.     if(mins < 10)
    43.       std::cout << "0" << mins << " : ";
    44.      
    45.     else
    46.       std::cout << mins << " : ";
    47.      
    48.     if(secs < 10)
    49.       std::cout << "0" << secs;
    50.      
    51.     else
    52.       std::cout << secs;
    53.       secs++;
    54.    
    55.     if(secs >= 60)
    56.     {
    57.       secs = 0;
    58.       mins++;
    59.     }
    60.      
    61.     if(mins >= 60)
    62.     {
    63.       mins = 0;
    64.       hour++;
    65.     }
    66.      
    67.     if(hour >= 24)
    68.       hour = 0;
    69.   }
    70. }

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    bool : trả về true or false ( hay 1 or 0 )
    system("cls");//*****bạn giải thích dùm dòng này
    Do trong Compiler của tui không có clrscr() nên tui xài system("cls"), 2 thằng này có tác vụ như nhau : clear màn hình.
    std::cout << "Hours : ";//chữ std:: đặt trước cout ,cin để làm gì vậy
    Thay vì dùng using namespace std;, thì tui không dùng tui đặt luôn vào cout và cin, 1 phần để nhớ các keyword của C++, và khi viết chương trình to 1 chút thì tránh conflict với namespace do mình đặt ra, vào thread hướng dẫn C++ tìm cái thread namespace cho newbie đọc thử coi sao.
    std::string aChar;//********mình không hiểu dòng này giải thích dùm nha
    Khởi tạo 1 biến aChar kiểu string, hay nó là 1 chuỗi.
    while(PressEscToAbort(aChar))//*****mình không hiểu dòng lệnh này
    Như đã nói ở trên thằng này trả về 0 hoặc 1, khi nhấn ESC thì tức là 27, coi lại hàm PressEscToAbort(aChar) xem, thoát hay không là lúc này đây.
    std::istringstream iss (aChar,std::istringstream::in);//mình không hiểu dòng lệnh này
    Dòng này tạo 1 stream để đọc input vào từ các kiểu dữ liệu khác, vì thường nếu ta mix : cin và cin.getline, gets().. thì buffer rất dễ bị lỗi, bài này coi đơn giản chứ thực ra cũng khó chịu đó. Vì hàm PressEscToAbort(aChar) nhận vào 1 string nên ta chuyển lại string này thành 1 buff có thể nhận vào dữ liệu khác ví dụ int, double float.
    Ví dụ khi ta xài :
    C++ Code:
    1. double data;
    2. iss >> data
    Thì cũng như ta cin >> data vậy, nhưng sẽ không ảnh hưởng tới biến aChar mà ta đã đặt ra để thoát bằng ESC.
    Phần này nếu mới học thì chấp nhận vậy là được, thao tác I/O trong C++ là rất khó. Cứ từ từ rùi học.
    #include <sstream>*//thư viên này là thư viên gì vậy
    #include <iostream>//sao thư viên iostream và string lại không có .h ở sau
    #include <string>
    #include <conio.h>
    -sstream dành cho isstringstream.
    -Nếu chuẩn của C++ không có iostream.h và string.h.
    -Kiểu iostream.h là kiểu cũ rùi, còn string.h và string là khác nhau. string.h = cstring. Đây là thư viện của C. Còn string là của C++. string của C++ thì có nhiều hàm vượt trội hơn C nhiều, nếu thực sự học C++ thì phải dùng #include <string>
    Trừ thằng conio.h, tất cả các thư viện còn lại đều của C++, không có trong C.
    Đã được chỉnh sửa lần cuối bởi rox_rook : 08-03-2008 lúc 12:53 AM.

  6. #6
    Ngày gia nhập
    02 2008
    Nơi ở
    thành phố hồ chí minh
    Bài viết
    7

    Mặc định bài toán đồng hồ điện tử

    mấy ông thầy ở trường dậy mình không biết là C hay C++ nữa lúc thì C lúc thì C++ (vì cout,cin là của C++ mà).Ở trường dạy mình viết chương trình trên borland C++ For Dos không biết lệnh mà rox_rook chỉ cho mình có xài trong borland c++ for dos được không

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Tui xài compiler Visual C++, DevCpp, Gcc, Codeblock, MinGW, tất cả các lệnh và cấu trúc, thư viện tui xài đều có thể run ngon lành trên các compiler này. Mặc dù tui cũng cài complier Borland Builder 6.0 nhưng tui lại ghét thằng này nhất, cái kiểu main() lẻ loi nhìn rất khó chịu. Tui không có học DH ở VN nên không rõ các thầy cô bên ấy yêu cầu ra sao, có gì thì cậu chịu khó hỏi bạn bè trong lớp mà xài cho đúng, vì bên đây thầy cô tui thì bắt xài Visual C++ 2008 hoặc Visual C++ 2003 or 2005. Đối với tui thì tui thích xài gcc vì dịch có cực 1 chút nhưng hiểu tại sao hoạt động, mới học thì nên xài mấy thằng kia mà tui nói. Thằng nào cũng free hết !
    Còn C và C++ nếu học sâu sẽ khác rất rất nhiều, cố gắng hỏi thầy cô xem họ đang dạy cái gì, C thì ra C, còn C++ thì ra C++, mix 2 cái này là cực kì poor programming style.

  8. #8
    No Avatar
    newstars Khách

    lấy code về chạy ko đc Y__Y..anh rox_rook có thể viết 1 đoạn code có thể chạy trên Borland C++ bình thường đc ko ạ..thankssss

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Trên borland thì em đọc help của nó, hình như nó không có prefix std::, vì anh hiện giờ không có borland nên không thể test cho em được.

  10. #10
    Ngày gia nhập
    11 2008
    Nơi ở
    Quảng Ngãi
    Bài viết
    0

    theo mình nghĩ bạn nên cho điều kiện trong while . vì chương trình của ban khi nhập giờ thì lúc nào cũng thỏa mãn điều kiện while nên không thể nào thoát

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn