Cần giúp đỡ code quản lý lương

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

struct LyLichNV{
    char MaNhanVien[8];
    char Ten[8];
    char GiaDinh[1];
    int SoCon;
    char TrinhDo[2];
    float LuongCanBan;
    int NghiCoPhep;
    int NghiKhongPhep;
    int NgayLamThem;
    char KetQua[2];
    float LuongThucLinh;
};
typedef struct LyLichNV NV;

void NhapNV(NV *nv);
void NhapDanhSachNV(NV a[], int *x);
void CapNhatNV(NV *nv);
void TinhLuong(NV *nv);


void NhapNV(NV *nv) {
    printf("Ma nhan vien: "); scanf("%s", nv->MaNhanVien);
    printf("Ten: "); fflush(stdin); gets(nv->Ten);
    printf("Gia Dinh: "); fflush(stdin); scanf("%c", &nv->GiaDinh);
    printf("So con: "); scanf("%d", &nv->SoCon);
    printf("Trinh Do Van Hoa: "); fflush(stdin); scanf("%s", nv->TrinhDo);
    printf("Luong Can Ban: "); scanf("%f", &nv->LuongCanBan);
    printf("\tCham Cong\n");
    printf("So ngay nghi co phep: "); scanf("%d", &nv->NghiCoPhep);
    printf("So ngay nghi khong phep: "); scanf("%d", &nv->NghiKhongPhep);
    printf("So ngay lam them: "); scanf("%d", &nv->NgayLamThem);
    printf("Ket qua lam viec: "); scanf("%s",&nv->KetQua);
}
void NhapDanhSachNV(NV a[], int *x){
    int i;
    for(i = 0; i < *x; i++){
        printf("\tNhap nhan vien %d\n", i);
        CapNhatNV(&a[i]);
    }
}
void CapNhatNV(NV *nv){
    NhapNV(nv);
    TinhLuong(nv);
}

void TinhLuong(NV *nv) {//PhuTroi
    float PhuTro = 0;
    if(nv->SoCon > 2){
        PhuTro += nv->LuongCanBan * 0.05;
    }
    if(nv->TrinhDo == "CH"){
        PhuTro += nv->LuongCanBan * 0.1;
        printf("Phu Tro: %f", PhuTro);
    }
}
int main() {
    NV a[50];
    int n;
    printf("Nhap so luong NV: ");
    scanf("%d", &n);
    NhapDanhSachNV(a,&n);
    return 0;
}

Cho em hỏi là sau khi em nhập đúng CH vào TrinhDo rồi mà không hiểu sao hàm TinhLuong nó không chạy code trong if để tính giá trị cho PhuTro. Em cảm ơn mn nhiều ạ.

Bạn debug ở dòng đấy là thấy nó ko chạy vào vì nó ko thỏa mãn điều kiện, hình như ko so sánh đc kiểu này: if(nv->TrinhDo == "CH") mà phải dùng kiểu này: if( !strcmp(nv->TrinhDo,"CH") )

3 Likes

mình cám ơn mình đã làm đc r!

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