2017-02-06 2 views
-2

В основном я должен принимать 2 значения (студенты набрали и общее количество баллов) из текстового файла, который читаетКак вы читаете значения из текстового файла в C++?

97 127 

и распечатать процент студентов.

Это мой код

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

    int main() 
    { 
     int student_score; 
     int total_points; 
     int final_score; 

     ifstream inFile; 
     inFile.open("myData.txt"); 

     inFile >> student_score >> total_points; 

     final_score = (student_score/total_points) * 100; 

     cout << final_score; 

     inFile.close(); 
     return 0; 
    } 

Моя проблема заключается в том, что при запуске программы значение выходит быть

3608900 

И когда я просто попросить, чтобы распечатать значение student_score он печатает из совершенно другого числа.

+3

Всегда проверяйте, чтобы увидеть, если файл действительно открыт, прежде чем начать чтение из него. – NathanOliver

+2

Существует множество подобных вопросов и ответов. Найдите в Интернете «stackoverflow C++ read file integer». –

+4

Кроме того: 'student_score/total_points' возвращает' 0' в вашем случае из-за целочисленного деления. –

ответ

0

ваша ошибка
int total_points;

Вы просто разделить int/int и на самом деле вы пытаетесь сделать это: 97/127 поэтому выход 0.

здесь:

Что вы должны написать

int student_score = 0; 
    float total_points = 0.0; 
    int final_score = 0; 

    std::ifstream inFile; 
    inFile.open("myData.txt"); 

    if(inFile){ 
    inFile >> student_score >> total_points; 
    } else { 
     std::cout << "your-error-code"; 
    } 

    final_score = (student_score/total_points) * 100; 

    std::cout << final_score; 

    inFile.close(); 
    return 0; 

выход

76


ПРИМЕЧАНИЕ

Всегда инициализации переменной вы к правильному типу соответствующего

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