30/09/2018, 17:33

Không truyền được đối số vào hàm trong C++?

Bạn nào xem thử bài tớ giúp tớ sao không chuyền được vào tìm phần tìm kiếm đưa ý kiến giúp tớ để bài gọn hợp lý hơn !!!

Viết
chương trình định nghĩa các hàm để thực hiện các công việc sau:

a) Nhập
mã sinh viên, họ và tên, điểm của không quá 50 sinh viên vào tập tin input.txt

b)
Tìm các sinh viên có điểm thấp nhất và cao nhất và tính điểm trung bình của các
sinh viên

c)
Tìm họ tên của sinh viên có mã được nhập từ bàn phím

d)
Tìm tất cả sinh viên (gồm mã sinh viên, , họ, tên và điểm) có tên giống với tên
được nhập từ bàn phím

e)
Ghi tất cả kết quả thực hiện được vào tập tin output.txt

#include <cstdlib>
#include <iostream>
#include<stdio.h>
#include <fstream>
#include <cstring> 

const int MAX=50;
using namespace std;

struct sinhvien
{
    char mssv[8];
    float d,tb,max,min;
    char hoten[20];  
};

struct sinhvien sv[MAX];
void nhap(sinhvien sv[],int &n)
{
    do
    {
        cout<<"Moi nhap so luong sv: ";
        cin>>n;
        cout<<"Moi ban nhap thong tin ve sv: "<<endl;
        if (n<=0) cout << "Nhap sai! Hay nhap lai.
";
    } while (n<=0);
    cout<<endl<<"----------------------"<<endl;
    cout<<"NHAP DANH SACH SINH VIEN."<<endl;
    cout<<"====================="<<endl;
   
    for(int i=0;i<n;i++)
    {
        cout<<endl<<i+1<<". ";
        cout<<"Nhap ho va ten: ";
        cin>>sv[i].hoten;
        cout<<"   Nhap ma so sinh vien: ";
        cin>>sv[i].mssv;
        cout<<"   Nhap diem :";
        cin>>sv[i].d;
    }
}
void xuat(sinhvien sv[],int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<i+1<<". ";
        cout<<"Ho ten : "<<sv[i].hoten<<" "<<"  Ma sv: "<<sv[i].mssv<<" "<<"  Diem la: "<<sv[i].d<<endl;
    }    
}
void ghifile(sinhvien sv[],int n)
{
     ofstream input ("input.txt");
     input<<"Day la danh sach sinh vien da nhap."<<endl;
     for(int i=0;i<n;i++)
     {
        input<<i+1<<". ";
        input<<"Ho ten : "<<sv[i].hoten<<" "<<"  Ma sv: "<<sv[i].mssv<<" "<<"  Diem la: "<<sv[i].d<<endl;
     }    
     input.close();
}

    // Tim so nho nhat

int timnhonhat( int n, sinhvien su[MAX])
{
    int min=su[0].d;
    for (int i=1; i<n; i++)
        if (min>su[i].d) min=su[i].d;
    return min;
}

    // Tim so lon nhat
int timlonnhat(int n, sinhvien su[MAX])
{
    int max=su[0].d;
    for (int i=1; i<n; i++)
        if (max<su[i].d) max=su[i].d;
    return max;
}

    // Tinh gia tri trung binh
double trungbinh(int n, sinhvien su[MAX])
{
    long s=0;
    for (int i=0; i<n; i++)
        s = s + su[i].d;
    return (double)s/n;
}

struct sinhvien timkiem(int n)
{
     struct sinhvien svTimThay;
    cout<<"
----------------
";
    cout<<"TIM KIEM THONG TIN
";
       cout<<"------------------
";
       cout<<"Kieu tim kiem ( 0 - Tim kiem theo ma, 1 - Tim kiem theo ten )"<<endl;
       cout<<("Ban chon: ");
       int chon;
       cin>>chon;
 
       if (chon==0)
       {
       char mssv[8];
          cout<<("Ma so sinh vien can tim : ");
          fflush(stdin);
          gets(mssv);
          struct sinhvien svTimThay;
          int timThay = 0;
          for (int i=0; i<n; i++)        
          {                                            // Neu Mssv nhap trung voi mssv cua sinh vien thu i
              if (strcmp(mssv,sv[i].mssv)==0)            // -> Tim thay.
             {
             svTimThay = sv[i];
             timThay = 1;
             break;
             }
            }
            cout<<"Ket qua tim kiem: ";
            if (timThay==0)
            {
            cout<<"Khong tim thay sinh vien nao co ma la : "<<mssv;
              }
              else
              {
              cout<< "Ma sinh vien"    << "Ten sinh vien"    << "Diem";
              cout<< svTimThay.mssv << svTimThay.hoten    << svTimThay.d;
              }
        }
        else
        {
        char hoten[20];
        cout<< "Ho va Ten can tim: ";
        fflush(stdin);
        gets(hoten);
        
        int timThay = 0;
          cout<< "Ket qua tim kiem: ";
          cout<< "Ma sinh vien" << "Ten sinh vien"<< "Diem";
          for (int i=0; i<n; i++)
          {                                          // Neu Ten nhap trung voi Ten cua sinh vien thu i
             if (strcmp(hoten,sv[i].hoten)==0)          // -> Tim thay.
            {
            timThay = 1;
            cout<< sv[i].mssv << sv[i].hoten    << sv[i].d;
             }
              }    
          if (timThay==0)
          {
            cout<<"Khong tim thay sinh vien nao co ten la :"<<hoten;
            }
        }

     ofstream output ("output.txt");
     output<<"Day la ket qua ban su dung cac chuc nang."<<endl;
     output<<"Day la ket qua ban tim kiem theo ma so sinh vien."<<endl;
     for(int i=0;i<n;i++)
     {
        output<<i+1<<". ";
        output<< "Ma sinh vien"    << "Ten sinh vien"    << "Diem";
        output<< svTimThay.mssv << svTimThay.hoten    << svTimThay.d;
     }
     output<<"Day la ket qua ban tim kiem theo ho va ten."<<endl;
     for(int i=0;i<n;i++)
     {
        output<<i+1<<". ";
        output<< "Ma sinh vien"    << "Ten sinh vien"    << "Diem";
        output<<    sv[i].mssv  <<   sv[i].hoten    << sv[i].d;
     }
     output.close();
}
int main(int argc, char *argv[])
{
    sinhvien sv[MAX];
    sinhvien svTimThay;
    int n;
    int chon;
    nhap(sv,n);
    cout<<"Da luu danh sach sinh vien vao tep input.txt"<<endl;
    ghifile(sv,n);
    for (int i=0;i<n;i++) 
    cout<<sv[i].d;
    cout<<"Xuat danh sach sv: "<<endl<<endl;
    xuat(sv,n);    
    cout<< "Gia tri nho nhat la: ";
    cout<< timnhonhat(n, sv) << endl;
    cout<< "Gia tri lon nhat la: ";
    cout<< timlonnhat(n, sv) << endl;
    cout<< "Gia tri trung binh cua cac phan tu la: ";
    cout<< trungbinh(n, sv) << endl;
    svTimThay=timkiem(n);

    system("PAUSE");
    return EXIT_SUCCESS;
}

Tớ dùng DEV C++ 5.11

Nguyễn Văn Tâm viết 19:38 ngày 30/09/2018

Mình thấy bạn nên chịu khó dùng space nhiều hơn cho nó thoáng

sao phần tìm điểm và người bị saiđưa ý kiến giúp tớ để bài gọn hợp lý hơn

Hai hàm đã return đâu

Thinh Cai viết 19:38 ngày 30/09/2018

Hai hàm đã return đâu ???

Nguyễn Văn Tâm viết 19:41 ngày 30/09/2018

Hàm tìm lớn nhất nhỏ nhất ấy

Thinh Cai viết 19:34 ngày 30/09/2018

2 hàm đó tớ xóa đo complite cứ báo lỗi.

Nguyễn Văn Tâm viết 19:37 ngày 30/09/2018

Test thử thì thấy chương trình nhiều lỗi quá.

struct sinhvien timkiem(int n)

Hàm này thiếu return nữa này

return chon;

sao lại return chỗ này, thế thì kết thúc chương trình r còn đâu

Thinh Cai viết 19:46 ngày 30/09/2018

tớ sữa lại rùi còn phần truyền vào tìm tên với mã sv không à

Bài liên quan
0