Средний Бал По 4 Предметам

Тема в разделе "MS Visual C++", создана пользователем shilovec5377, 15 май 2013.

  1. shilovec5377

    shilovec5377 Member

    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    Всем привет. Помогите пожалуйста найти средний бал по предметам и если средний бал больше 7 то сохранить в файл, а то чета я вообще не могу.

    Вот код проги:

    Код (C++):
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <fstream.h>


    FILE *fl;

    typedef struct
    {
    char fio[30];
    unsigned char matem;
    unsigned char oaip;
    unsigned char english;
    }TStudent;

    TStudent stud[30]; //массив структур
    char name[20];//имя файла
    int nst=0;//число введенных структур

    int menu(); //меню
    void spisok(); //Ввести список
    void resc();  //Вывести результат на экран
    void resf();  //Сохранить результат в файл



    int main()
    {
    while (true)
    {
    switch (menu())
    {

    case 1: spisok(); break; //Ввести список
    case 2: resc(); break; //Вывести результат на экран
    case 3: resf(); break; //Сохранить результат в файл

    case 4: return 0;
    default: "Viberite pravilno!";
    }
    puts("pres any key to continue");
    getch();
    system("cls");
    }
    }


    int menu()//меню
    {
    cout<<"viberite:"<<endl;
    cout<<"1.vvod studentov"<<endl;
    cout<<"2.vivesti rezultat na ekran"<<endl;
    cout<<"3.sohranit rezultat v file"<<endl;
    cout<<"4.Exit"<<endl;
    int i;
    cin>>i;
    return i;
    }





    void resc()//вывести результат на экран
    {
    char fio[30];
    unsigned char matem;
    unsigned char oaip;
    unsigned char english;

    ifstream fin("ofile.txt", ios::in);

    fin.getline(fio, 30);
    fin >> matem >> oaip >> english;
    fin.ignore(2);

    while(!fin.eof()){

    cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << "\n\n";

    fin.getline(fio, 30);
    fin >> matem >> oaip >> english;
    fin.ignore(2);
    }

    fin.close();
    system("pause");
    }



    void spisok () //ввести список
    {

    cout<<"vvedite chislo studentov"<<endl;
    cin>>nst;

    for (int i=0;i<nst;i++)
    {
    cout<<"vvedite imya: ";
    cin>>stud[i].fio;
    cout<<"vvedite ocenki po matem.: ";
    cin>>stud[i].matem;
    cout<<"vvedite ocenku po oaip: ";
    cin>>stud[i].oaip;
    cout<<"vvedite ocenku po english: ";
    cin>>stud[i].english;

    }

    }


    void resf()////сохранение в файл
    {
    ofstream fout("ofile.txt", ios::app);
    for (int i=0;i<2;i++)
    {
    fout << stud[i].fio << endl << stud[i].english << endl
    << stud[i].matem << endl << stud[i].oaip << endl << endl;
    }
    }
     
  2. shilovec5377

    shilovec5377 Member

    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    Вот мой код, все вроде правильно, пробегаюсь по файлу и если средний бал >6 то вывести этого человека, но что-то его не выводит.
    Подскажите пж в чем проблемка.

    Код (C++):
    void resc() //Вывод на экран
    {
    char fio[30];
    int matem;
    int oaip;
    int english;
    double srb;


    ifstream fin("ofile.txt", ios::in);

    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);

    //while(!fin.eof())




    for (int i=0;i<nst;i++)
    {
    if(stud[i].srb > '6')



    cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << '\n'<< srb << "\n\n";

    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);


    fin.close();
    system("pause");
    }}
     
  3. shilovec5377

    shilovec5377 Member

    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    пробую писать
    Код (C++):
    if(srb > '6')
    но всеравно не хочет, подскажите пж в чем проблема.
     
  4. shilovec5377

    shilovec5377 Member

    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    пробую так:
    Код (C++):
    void resc() //na ekran
    {
    char fio[30];
    double matem;
    double oaip;
    double english;
    double srb;


    ifstream fin("ofile.txt", ios::in);

    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);

    //while(!fin.eof())




    for (int i=0;i<nst;i++)
    {
    if(srb >= 6.0)



    cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << '\n'<< srb << "\n\n";


    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);


    fin.close();
    system("pause");
    }}
    но выводит только 1 человека и только 1 раз, при следующем запуске не выводит.
     
  5. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    чето все не так

    Код (Text):
    char fio[30];
    double matem;
    double oaip;
    double english;
    double srb;
    удобно использовать структуру

    Код (Text):
    fin >> matem >> oaip >> english>>srb;
    в файле дана информация по 4 предметам ведь, почему ты оттуда средний бал считываешь? - его нада посчитать

    Код (Text):
    fin.ignore(1);
    зачем это?

    Код (Text):
    for (int i=0;i<nst;i++)
    откуда ты вобще nst взял ? считывай с файла пока он не кончится

    Код (Text):
    fin >> matem >> oaip >> english>>srb;
    эта штука стоит перед циклом, а значит, ты надеешься что в фале есть как минимум одна запись, это тоже неверно
     
  6. shilovec5377

    shilovec5377 Member

    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    подскажите пж, как правильно написать?
     
Загрузка...

Поделиться этой страницей