Bài tập sử dụng struct trong c++: vòng lặp bỏ qua 1 số lệnh

viết chương trình nhập vào thông tin máy tính. Xuất ra màn hình số lượng và danh sách máy tính có bảo hành 1 năm. Số lượng máy tính có xuất xứ từ hàn quốc

Anh chị giúp em phần vòng lặp cuối với ạ. Em step thì thấy nó bỏ qua mấy dòng lệnh của if. Cơ mà fix mãi không được anh chị giúp em với. Em cảm ơn ạ

//BAI 44
#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <string.h>

int main() {
    struct maytinh {
        char loai[20], noisx[30];
        int bh;
    };
    maytinh mt[50];
    int i, n, t = 0, j = 0;
    std::cout << "Nhap so luong may tinh: ";
    std::cin >> n;
    for (i = 1; i <= n; i++) {
        std::cout << "Nhap thong tin may tinh thu " << i << ":";
        std::cout << "\nNhap loai may tinh: ";
        fflush(stdin);
        gets(mt[i].loai);
        std::cout << "\nNhap noi san xuat: ";
        fflush(stdin);
        gets(mt[i].noisx);
        std::cout << "\nNhap thoi gian bao hanh: ";
        std::cin >> mt[i].bh;
    }
    std::cout << "May tinh bao hanh 1 nam: ";
    std::cout << "\n======­====================­====================­===";
    std::cout << "\n|Loai may\t|Noi san xuat|Thoi gian bao hanh|";
    for (i = 1; i <= n; i++) {
        if (mt[i].bh == 1) {
            std::cout << "\n|" << mt­[i].loai << "\t	|" << mt[i].noisx << " |" << mt[i].bh << "\t |";
            t++;
        }
    }

    std::cout << "\nSo luong may tinh co bao hanh 1 nam: " << t;
    std::cout << "\nMay tinh xuat xu tu Han Quoc: ";
    std::cout << "\n======­====================­====================­===";
    std::cout << "\n|Loai may\t|Noi san xuat|Thoi gian bao hanh|";
    for (i = 1; i <= n; i++) {
        if (mt[i].noisx == "han­ quoc" || mt[i].noisx == ­"Han Quoc" || mt[i].noisx == ­"Han quoc" || mt[i].noisx == ­"HAN QUOC") {
            std::cout << "\n|" << mt­[i].loai << "\t	|" << mt[i].noisx << " |" << mt[i].bh << "\t |";
            j++;
        }
    }

    std::cout << "\nSo luong may tinh xuat su tu Han Quoc: " << j;

    return 0;
}
1 Like

Bạn đang dùng C++?

  1. Bạn đang dùng nhiều thư viện từ C.
  2. Bạn không dùng <string> mà lại dùng <string.h>, 2 thư viện này khác nhau đấy.
  3. Bạn đang thao tác chuỗi bằng char[] thay cho string, không thể so sánh trực tiếp noisx == "" được. Nếu muốn so sánh được thì dùng strcmp() từ <string.h>.

Lời cuối:

  • Đừng dùng lộn xộn C và C++.
  • Đã là C++ thì dùng luôn string thay cho char[].
4 Likes

Em cảm ơn ạ tại Em vừa theo học c++ được vài buổi kiến thức vẫn chưa có vững ấy :sweat_smile:

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