2015-09-24 3 views
1

Я сделал эту программу, которая просит пользователей ввести класс некоторых студентов, определить, проходят ли они или нет, а затем определить, сколько пропусков и сколько провалить экзамен. Вот мой код:(C++) чтение из текстового файла

#include <iostream> 
using namespace std; 

int main() 
{ 
    int passing = 0; 
    int failing = 0; 

    int mid_grade; 
    int final_grade; 

    int student = 5; 


    while (student > 0) 
    { 
     cout << "Enter mid-term grade: "; 
     cin >> mid_grade; 

     cout << "Enter final grade: "; 
     cin >> final_grade; 

     double total_grade = (double)mid_grade*3/10 + (double)final_grade*7/10;; 
     cout << "The total grade is: " << total_grade << endl; 
     student --; 

    if (mid_grade < 4 || final_grade < 4 || total_grade < 10) 
     { 
//   cout << "Fail." << endl; 
      failing++; 
     } 
    else 
     { 
//   cout << "Pass!" << endl; 
      passing++; 
     } 
    } 
    cout << passing << " student passed" << endl; 
    cout << failing << " student failed" << endl; 
    return 0; 
} 

, что я хочу сделать сейчас, чтобы рассказать свою программу для чтения среднесрочных и итоговой оценки в виде текстового файла я сделал то рассчитать общий класс (как я сделал в приведенном выше код), затем покажите оценки на экране, определите, кто проходит и не сдаёт экзамен, и общее количество студентов, которые проходят или не сдадут экзамен. Вот что мой текстовый файл выглядит следующим образом:

Mid-term Final  
8   5 
9   6 
10   11 
15   17 
9   20 
11   19 
+1

Пожалуйста, используйте 'fstream'. – Turtle

+1

Какая у вас проблема? Мы не собираемся писать это для вас, вы должны сделать попытку самостоятельно. Если вы не можете заставить его работать, напишите, что вы попробовали, и мы поможем вам исправить это. – Barmar

+0

Пожалуйста, найдите StackOverflow для «C++ read file struct» или «C++ read file parsing». Слишком много подобных вопросов. –

ответ

0

Я прочитал файл, пропустить 1-ю строку, а затем прочитать остальное, строку за строкой, используя StringTokenizer, чтобы получить два значения для работы.

1

Хорошо, так что это должно помочь. Я добавил несколько заметок. Вам нужно создать текстовый файл в том же каталоге/ЦСИ называется grades.txt

должен выглядеть следующим образом

10 9 8 7 4 3 4 5 5 9 

Вам нужно будет изменить положение вещей. Но это должно дать вам хорошую отправную точку или куда вы должны идти. Надеюсь это поможет.

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() 
{ 
    int passing = 0; 
    int failing = 0; 

    int mid_grade = 0; //Always initilize your variables!!! 
    int final_grade = 0; 

    int student = 5; 


    //Create a variable to open the file 
    ifstream inFile; inFile.open("src\\grades.txt"); 

    while (student > 0) 
    { 
     cout << "Enter mid-term grade: "; 
     inFile >> mid_grade; 
     cout << mid_grade << endl; 

     cout << "Enter final grade: "; 
     inFile >> final_grade; 
     cout << final_grade << endl; 

     cout << "student number" << student << endl; //Notice it goes backwards you have to fix it. 
     double total_grade = ((double)mid_grade*3)/10 + ((double)final_grade*7/10); 
     cout << "The total grade is: " << total_grade << endl; 
     student --; 
     cout << endl; 

    if (total_grade < 7) 
     { 
//   cout << "Fail." << endl; 
      failing++; 
     } 
    else 
     { 
//   cout << "Pass!" << endl; 
      passing++; 
     } 
    }`enter code here` 
    cout << passing << " student penter code hereassed" << endl; 
    cout << failing << " student failed" << endl; 
    return 0; 
} 
+0

Вы можете задать вопрос. – lmrlmrlmr

Смежные вопросы