Сделать массив, используя объявленные переменные и пузырьковую сортировку? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть код ниже, который читает данные из текстового файла и распечатывает их в табличной форме. Одна вещь, которую мне нужно сделать, это создать массив, который рассчитывает заработную плату. Заработная плата рассчитывается с использованием заявления «если еще», поскольку она должна учитывать сверхурочные. Таблица должна также включать заработную плату, и это было бы легко, но мне нужно выполнить пузырьковую сортировку, которая организует данные в порядке от самой высокой заработной платы до самой низкой заработной платы. Внизу таблицы должна отображаться сумма всех заработных плат.

 #include <fstream>
 #include <iostream>
 #include <string>
 #include <sstream>
 #include <iomanip>
 #include <cmath>

 using namespace std;


 int main()
 {
 ifstream myFile("Assignment4.txt");
 if (!myFile.is_open())
 {
    cout << "File Failed to Open!" << endl;
    return 0;
 }

 string firstname, lastname;
 int id, hours;
 double rate, wage;

 string myString;
 string line;
 cout << "First Name |" << " Last Name |" << " Employee ID |" << " Hourly Rate($) |" << " Hours |" << 
 " Wage($)" <<endl;
 while (getline(myFile, line))
 {
    stringstream ss(line);
    getline(ss, firstname, ':');
    getline(ss, lastname, ':');
    getline(ss, myString, ':');
    rate = stoi(myString);
    getline(ss, myString, ':');
    id = stoi(myString);
    getline(ss, myString, '\n');
    hours = stoi(myString);
 }
 myFile.close();

 int array;
 const int NUMBER_OF_EMPLOYEES = 100;
 array = new int[capacity];

 for (int i = 0; i < 4; i++) {
    if (hours <= 40)
        wage = rate * hours;
    else
        wage = rate * 40 + ((hours - 40) * rate * 1.5);

    cout << setw(10) << firstname << " |" << 
    setw(10)
        << lastname << " |" << setw(12)
        << id << " |" << setw(15)
        << rate << " |" << setw(6)
    << hours << " | " << wage << endl;
    }

    return 0;
 }

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

Майк: Джонс: 567: 25.75: 67

Сью: Смит: 45: 30.25: 82

Энн: Парикмахер: 2: 15.45: 39

Билли: Симпсон: 1234: 10.15: 65

Барабара: Камень: 75: 45.33: 22 * ​​1014 *

Алан: Коллинз: 17: 12.75: 73

Синди: Дэвис: 210: 13,67: 45

Эйлин: Фергюсон: 62: 53,36: 17

Гордон: Говард: 981: 9,89: 31

Боб: Джонс: 295: 14.73: 43

(между строками, добавляемыми для разделения, нет пробелов) Код НУЖЕН использовать систему массивов, а также сортировку по пузырькам. Код также предназначен для хранения максимального количества записей в 100, хотя текстовый файл содержит только 10. Мои основные вопросы: как мне настроить функцию заработной платы в виде массива? как выполнить пузырьковую сортировку этого массива от самой высокой до самой низкой зарплаты? И как мне сложить общую сумму заработной платы?

...