Моя структура массива показывает только последний ввод - c ++ - PullRequest
0 голосов
/ 14 октября 2018

Поэтому я пытаюсь использовать структурный массив, где вы вводите свои собственные значения в каждую переменную.Общая идея заключается в том, что я хочу, чтобы пользователь вводил 5 разных имен сотрудников, идентификаторы и годовой оклад.Программа предназначена для вывода массива структуры.

Однако моя проблема заключается в том, что когда я пытаюсь вывести массив, кажется, что вывод выводит только последний элемент массива 5 раз.

Вся помощь приветствуется!

ps Не беспокойтесь о функции усреднения, я хочу выяснить ее самостоятельно.

    #include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

struct emp
{
    char empName[25];
    int id;
    float salary;
};

struct emp employee[5];

struct emp *getData();
void printData(struct emp employee[]);


int main()
{   
    cout << "Enter employee name, ID and Annual Salary: " << endl;
    struct emp *p;
    p = getData();


    printData(employee);


}

struct emp *getData()
{
    for (int i = 0; i < 5; i++)
    {
        cout << "Employee " << i + 1 << " name: ";
        cin >> employee->empName;
        cout << "Employee " << i+1 << " ID: ";
        cin >> employee->id;
        cout << "Employee " << i+1 << " Annual Salary: ";
        cin >> employee->salary;
        cin.ignore();
        cout << endl;
    }

    return employee;
}

void printData(struct emp employee[])
{
    for (int i = 0; i < 5; i++)
    {
        cout << "Employee " << i + 1 << ": " << employee->empName << " - " << employee->id << ", Annual Salary: " <<
            employee->salary << endl;
    }
}

//double getAverage(struct emp[], int)
//{
//
//}

Вывод

Enter employee name, ID and Annual Salary:
Employee 1 name: Ian
Employee 1 ID: 2345
Employee 1 Annual Salary: 12345

Employee 2 name: John
Employee 2 ID: 2345
Employee 2 Annual Salary: 23456

Employee 3 name: Carla
Employee 3 ID: 23452
Employee 3 Annual Salary: 2345

Employee 4 name: Chloe
Employee 4 ID: 12345
Employee 4 Annual Salary: 2345

Employee 5 name: Josh
Employee 5 ID: 234
Employee 5 Annual Salary: 12345

Employee 1: Josh - 234, Annual Salary: 12345
Employee 2: Josh - 234, Annual Salary: 12345
Employee 3: Josh - 234, Annual Salary: 12345
Employee 4: Josh - 234, Annual Salary: 12345
Employee 5: Josh - 234, Annual Salary: 12345
Press any key to continue . . .

1 Ответ

0 голосов
/ 14 октября 2018

Вы не используете никаких блоков массива, поэтому весь ввод идет в первый, а весь вывод поступает из первого.

for (int i = 0; i < 5; i++)
    {
        cout << "Employee " << i + 1 << " name: ";
        cin >> employee[i].empName;
        cout << "Employee " << i+1 << " ID: ";
        cin >> employee[i].id;
        cout << "Employee " << i+1 << " Annual Salary: ";
        cin >> employee[i].salary;
        cin.ignore();
        cout << endl;
    }

    return employee;
}

void printData(struct emp employee[])
{
    for (int i = 0; i < 5; i++)
    {
        cout << "Employee " << i + 1 << ": " << employee[i].empName << " - " << employee[i].id << ", Annual Salary: " <<
            employee[i].salary << endl;
    }
}

Это должно исправить ваш код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...