Программа неправильно хранит информацию из файла в массивы?
Моя программа компилирует и форматирует выходные данные правильно, но выходная информация неверна. Там нет имен, и цифры неверны.
Вот моя программа.
/* Program: prog6.cpp By: Mackenzie Ritter Last Modified: Dec 3, 2017 Purpose: To provide a rating for each elf based on their toy production and output all information. Notes: */ #include <fstream> #include <iostream> #include <string> #include <sstream> #include <iomanip> using namespace std ; string* elfRating (int, int[], string[]) ; int main () { int SIZE = 50 ; string* names = new string[SIZE] ; // Elf's name int numToys[SIZE] ; // Number of toys made by each elf string* rating = new string[SIZE] ; // Rating for elves based on number of toys string line = " " ; ifstream ins ; ins.open ("elves.dat") ; int i = 0 ; istringstream iss (line) ; while (getline(ins, line)) { istringstream iss (line) ; iss >> names [i] >> numToys [i] ; i++ ; } int total = 0 ; for (int num = 0; num < SIZE; num++) { total += numToys[num] ; } int cnt = 0 ; int max = numToys [0] ; while (cnt < SIZE) { if (numToys[cnt] > max) { max = numToys [cnt] ; cnt++ ; } else { cnt++ ; } } int count = 0 ; int min = numToys [0] ; while (count < SIZE) { if (numToys[count] < min) { min = numToys [count] ; count++ ; } else { count++ ; } } int ii = 0 ; while (ii < 50) //printout of arrays { rating = elfRating(SIZE, numToys, rating) ; cout << setw(20) << left << "Elves name:" << names[ii] << setw(20) << left << "Number of Toys Produced:" << numToys[ii] << setw(10) << left << "Rating:" << rating[ii] << endl ; ii++ ; } cout << "Total number of toys created by all elves: " << total <<endl; cout << "The greatest number of toys created is: " << max << endl ; cout << "The lowest number of toys created is: " << min << endl ; cin.ignore () ; } /* Program: prog6.cpp By: Mackenzie Ritter Last Modified: Dec 3, 2017 Purpose: To provide a rating for each elf based on their toy production. Notes: */ string* elfRating (int SIZE, int numToys[], string rating[]) { int t = 0 ; for (t=0;t<SIZE;t++) { if (numToys [t] < 200) { rating[t] = "-" ; } else if (numToys [t] < 300) { rating[t] = "*" ; } else if (numToys [t] < 500) { rating[t] = "***" ; } else if (numToys [t] >= 500) { rating[t] = "*****" ; } else { cout << "Error" << endl ; } } return rating; }
Любая помощь будет очень признательна.
Что я уже пробовал:
Я исправлял этот код так много раз, потому что он продолжал производить ошибки. Теперь, когда он компилируется правильно, информация не является правильной. Предполагается, что он берет файл и хранит информацию в двух массивах: имена и numToys. По какой-то причине имена не выводятся, а цифры крайне неверны.