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ố 14 kết quả

Đề tài: Lỗi trong chương trình quản lý cb,CT chạy bt nhưng kết quả tính lương sai

  1. #1
    Ngày gia nhập
    11 2011
    Bài viết
    5

    Mặc định Lỗi trong chương trình quản lý cb,CT chạy bt nhưng kết quả tính lương sai

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    #include<string.h>
    #include<iomanip.h>
    #include <stdlib.h>
    class CB
    {
          private :
                  char MCB [10];
                  char hoten [20];
                  char gioitinh [10];
                  char quequan [20];
                  int tuoi;
                  char chuyenmon [20];
                  char trinhdo [20];
                  float hesoluong ;
                  char xeploaibandau [10];
           public : 
                  void nhapcb ();
                  void incb ();
    	      friend class DSCB;
                  friend void tongluong ();
                  
    };
    void CB :: nhapcb ()
    {
         cout <<"Ma can bo :";
         gets (MCB);
         cout <<"Ho ten :";
         gets (hoten);
         cout<<"Gioi tinh :";
         gets (gioitinh);
         cout<<"Que quan :";
         gets (quequan);
         cout<<"Tuoi :";
         cin>>tuoi;
         cout<<"Chuyen mon :";
         gets (chuyenmon);
         cout<<"Trinh do :";
         gets (trinhdo);
         cout<<"He so luong : ";
         cin>>hesoluong;
         cout<<"Xep loai ban dau :";
         gets (xeploaibandau);
    }
    void CB :: incb ()
    {
         cout<<"Ma can bo :"<<MCB<<"\n";
         cout <<"Ho ten :"<<hoten<<"\n";
         cout<<"Gioi tinh :"<<gioitinh<<"\n";
         cout<<"Que quan :"<<quequan<<"\n";
         cout<<"Tuoi :"<<tuoi<<"\n";
         cout<<"Chuyen mon :"<<chuyenmon<<"\n";
         cout<<"Trinh do :"<<trinhdo<<"\n";
         cout<<"He so luong :"<<hesoluong<<"\n";
         cout<<"Xep loai ban dau :"<<xeploaibandau<<"\n";
         cout<<"\n";
    };
    class DSCB 
    {
          private :
                  CB A[100];
                  int n;
          public :
                 void nhapdscb ();
                 void indscb ();
                 void demcbnu ();
                 void lietkecbnam ();
                 void tongluong ();
                 void tinhluongtb ();
                 void incbluongcaonhat ();
                 void sapxep ();
                 
    };
    void DSCB :: nhapdscb ()
    {
         int i;
         cout <<"Nhap so luong can bo muon nhap vao danh sach : ";
         cin>>n;
         for (i=0;i<n;i++)
         {
    		cout <<"Nhap thong tin can bo thu "<<i+1<<"\n";
        	 A[i].nhapcb();
        	 cout<<"\n";
         }
    };
    void DSCB :: indscb ()
    {
         int i;
         for (i=0;i<n;i++)
         {
             A[i].incb();
         }
    }
    void DSCB :: demcbnu ()
    {
    		char x [5]="nu";
         int i,dem=0;
         for( i=0;i<n;i++)
         {     if (strcmp (A[i].gioitinh,x)==0)
                 dem=dem+1;
         }
         if(dem==0)
         	cout<<"Khong co can bo nu nao trong co quan\n";
     	else
         cout <<" So luong can bo nu :"<<dem<<"\n";
    }
    void DSCB :: lietkecbnam ()
    {
    		char x[5]="nam";
         int i;
         for(i=0;i<n;i++)
         {
              if (strcmp(A[i].gioitinh,x)==0)
              {
    		 		A[i].incb();
    	  		}
         }
    }
    
    void DSCB :: tongluong ()
    {
         int i;
    	long tongluong;
    	tongluong=0;
         for (i=0;i<n;i++)
         {
             tongluong=tongluong + A[i].hesoluong*450000;
         }
         cout<<"Tong thu nhap cua toan can bo :"<<tongluong<<"\n";
    }
    void DSCB :: tinhluongtb ()
    {
         int i;
    	 long luongtb,tong=0;
    	 
         for (i=0;i<n;i++)
         {	
         	tong=tong + A[i].hesoluong*450000;		
         }
         luongtb=tong/n;
         cout<<"Luong trung binh cua cac can bo : "<<luongtb;
    }
    void DSCB :: incbluongcaonhat ()
    {
    	int i;
    	float  max=A[0].hesoluong;
    	int maxi =0;
    	for (i=0;i<n;i++)
    		if (max < A[i].hesoluong)
    			{
    			max=A[i].hesoluong;
    			maxi=i;
    			}
         cout <<" Thong tin cua can bo co luong cao nhat :\n";
         A[maxi].incb();
    }
    void DSCB :: sapxep ()
    {
         int i,j;
         CB tam ;
         for (i=0;i<n;i++)
             for (j=i+1;j<n;j++)
             if (A[i].hesoluong > A[j].hesoluong)
             {
                tam=A[i];
                A[i]=A[j];
                A[j]=tam;
             }
             
      
    }
    void main ()
    {
    	system ("cls");
         DSCB A ;
         int ketthuc=0;
    	int chucnang;
    	do
    	{
    		cout<<"*******Chuong trinh quan li can bo*******\n";
    		cout<<"=========================================================\n";
    		cout<<"1:Tao va nhap danh sach can bo\n";
    		cout<<"2.Hien thi thong tin can bo \n";
    		cout<<"3.Diem xem co bao nhieu can bo nu\n";
    		cout<<"4.Liet ke can bo nam trong co quan\n";
    		cout<<"5.Tinh tong so luong thu nhap cua toan can bo \n";
    		cout<<"6.Tinh luong TB cua cac can bo \n";
    		cout<<"7.In thong tin cua can bo co luong cao nhat\n";
    		cout<<"8.Sap xep tang dan ds theo he so luong \n";
    		cout<<"9.Thoat \n";
    		cout<<"=========================================================\n";
    		cout<<"Moi ban chon chuc nang : ";
    		cin>>chucnang;
    		switch(chucnang)
    		{
    		case 1:
    		{
    		system("cls");
    		A.nhapdscb();
    		
    		break;
    		}
    		case 2:
    		{
    		system("cls");
    		cout<<"*******Danh sach can bo*******\n";
    		A.indscb();
    		
    		break;
    		}
    		case 3:
    		{
    		system("cls");
    		A.demcbnu ();
    		
    		break ;
    		}
    		
    		case 4:
    		{
    		system("cls");
    		cout<<"*******Thong tin cua cac can bo nam trong co quan*******\n";
    		A.lietkecbnam ();
    		
    		break ;
    		}
    		case 5:
    		{
    		system("cls");
    		A.tongluong ();
    		
    		break ;
    		}
    		case 6:
    		{
    			system("cls");
    		A.tinhluongtb ();
    		
    		break ;
    		}
    		case 7:
    		{
    		system("cls");
    		A.incbluongcaonhat ();
    		
    		break;
    		}
    		case 8:
    		{
    		system("cls");
    		A.sapxep ();
    		cout<<"Danh sach can no sau khi da sap xep tang dan \n";
             A.indscb();
    		break;
    		}
    		case 9:
    		{
    		ketthuc=1;
    		break;
    		}
    		}
    	}while (ketthuc !=1);
    	getch ();
    }

  2. #2
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Đọc code mỏi mắt quá.

    Cho biết sai ra sao. Ví dụ có 3 cán bộ, hsl 2, 3, 5
    thì tongluong = (2+3+5)*450000 = 4500000 ---> bài chạy ra bao nhiêu?
    luongTB = (2+3+5)*450000/3 = 1500000 ---> bài chạy ra bao nhiêu?
    vv...

    Góp ý cách viết code 1 chút:

    Hàm bạn friend void tongluong (); đâu có xài, kể ra làm gì?
    Lớp CB nên có hàm float TinhLuong() { return hesoluong*450000; }
    cho rồi, khỏi mất công DSCB tính. Về sau này công thức tính có thay đổi thì sửa cũng dễ. LTHDT nó vậy đó.

  3. #3
    Ngày gia nhập
    11 2011
    Bài viết
    5

    bên dước có dòng warning như ri nữa
    [Warning] E:\bt lthdt\BAI3.CPP:129: warning: assignment to `long int' from `float'
    [Warning] E:\bt lthdt\BAI3.CPP:129: warning: assignment to `long int' from `float'

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trong mấy cái hàm tính lương, tổng lương vv... sửa kiểu của các biến có liên quan đến lương thành float (hiện giờ chúng là long)

    Trong hàm tính tổng lương, đổi tên biến tongluong thành tong - tên biến trùng với tên hàm là điều không nên làm.

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Muốn người ta coi giúp chí ít cũng phải diễn tả sai ra sao chứ, post vỏn vẹn cái tiêu đề và code thế thôi sao! Chẳng hiểu nổi các bạn thời bây giờ!

  6. #6
    Ngày gia nhập
    11 2011
    Bài viết
    5

    Mặc định Lỗi trong chương trình quản lý cb,CT chạy bt nhưng kết quả tính lương sai

    Ví dụ có 5 cán bộ, hsl 7.1, 7.3, 7.5,7.7,8.2
    thì tongluong = 17009999 đúng là 17010000
    luongTB = 3401999 đúng là 34020000
    em chả bít bị làm sao nữa

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Trong mấy cái hàm tính lương, tổng lương vv... sửa kiểu của các biến có liên quan đến lương thành float (hiện giờ chúng là long)

    Trong hàm tính tổng lương, đổi tên biến tongluong thành tong - tên biến trùng với tên hàm là điều không nên làm.
    nếu em đổi lại thì kết quả ra lại như thế này :
    vd nhap 3 cb hsl 4.5 , 5.6 ,3,6
    kết quả
    tongluong =6.165e +06
    luongtb=2.055e+06
    như ri cũng sai anh ạ

    Trích dẫn Nguyên bản được gửi bởi Halen Xem bài viết
    Muốn người ta coi giúp chí ít cũng phải diễn tả sai ra sao chứ, post vỏn vẹn cái tiêu đề và code thế thôi sao! Chẳng hiểu nổi các bạn thời bây giờ!
    Dạ thì kết quả tính tổng luơng và lương trung bình bị sai nhưng ct vẫn chạy bt
    Đã được chỉnh sửa lần cuối bởi kitti : 01-12-2011 lúc 03:00 PM. Lý do: làm liền các bài viết spam, lần sau tái phạm xóa thẳng tay

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    (4.5+5.6+3.6)*450000 = 6165000
    tức là 6.165E6
    6165000/3 = 2055000
    tức là 2.055E6
    vậy thì có sai chỗ nào đâu?

    Bạn chỉ cần sửa lại mấy cái chỗ cout cho nó in đúng dạng

  8. #8
    Ngày gia nhập
    11 2011
    Bài viết
    5

    sữa răng a giúp em lun ới

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi Mr.vu112 Xem bài viết
    sữa răng a giúp em lun ới
    Răng mà lười rứa. (Răng lại dùng từ ngữ địa phương nghe nó thân thương rứa bạn )
    Chỉ cho bạn nì :
    Lên google search : cout << số thực
    Lưu ý nữa: Cố nhét kiểu số thực vào số nguyên thì mất dữ liệu là đúng rùi đó bạn thân mến
    Ko biết bạn làm cái chi mà khai báo 1 đống thư viện rứa ko biết @@ ??
    Um Mani Padme Hum...!!

  10. #10
    Ngày gia nhập
    11 2011
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Răng mà lười rứa. (Răng lại dùng từ ngữ địa phương nghe nó thân thương rứa bạn )
    Chỉ cho bạn nì :
    Lên google search : cout << số thực
    Lưu ý nữa: Cố nhét kiểu số thực vào số nguyên thì mất dữ liệu là đúng rùi đó bạn thân mến
    Ko biết bạn làm cái chi mà khai báo 1 đống thư viện rứa ko biết @@ ??
    hì hì ko phải e nhát a ơi mà là em chả bít chuyển làm sao nữa

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