Мне нужна помощь в создании цикла, который отображает информацию - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь вывести всю предоставленную информацию, но могу вывести только окончательный результат, введенный несколько раз. Я довольно плохо знаком с циклами

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

int sized = 0;

 //Global array declaration 
 Employee Array [60]:

//Struct declaration
struct Employee
{
    string name;
    int age;
    double salary;
};

//Protype
void Showinfo(Employee);

int main()
{
    //Declaring a variable of type Employee
    Employee Emp;

    cout << "Enter the number of employees you want to enter into the database: ";
    cin >> sized;
    cout << endl << endl;
    system("cls");

    //Getting the name of the Employee
    for (int i = 0; i < sized; i++)
    {
        cout << "Enter Full name of employee: ";
        cin.ignore();
        getline(cin, Emp.name);
        cout << endl;
        cout << "Enter age of employee: ";
        cin >> Emp.age;
        cout << endl;
        cout << "Enter salary of employee: ";
        cin >> Emp.salary;
        cout << endl;
        system("cls");
    }

    // To display the elements of the information given
    cout << endl << "Displaying Information." << endl;
    cout << "--------------------------------" << endl;

    for (int i = 0; i < sized; i++)
    {
        Showinfo(Emp);
    }

    cin.ignore();
    return 0;
}

//To display/showcase the information received
void Showinfo(Employee Emp)
{
    cout << "Name: " << Emp.name << endl;
    cout << "Age: " << Emp.age << endl;
    cout << "Salary: " << Emp.salary << endl << endl;
}

Ожидаемый результат как

Входные данные пользователя ***

Введите номер информации для хранения: 2

Введите имя: ball

Введите возраст: 69

Ввод заработной платы: 420

Введите имя: ралли

Введите возраст: 42

Ввод заработной платы: 690000

Ожидаемый результат: отображение информации ------------------------- Имя: мяч

возраст: 69

заработная плата: 420

Имя: * Rally 1029 *

возраст: 42

заработная плата: 690000

Мой вывод Отображение информации

Имя: * Rally 1037 *

возраст: 42

заработная плата: 690000

Имя: * Rally 1043 *

возраст: 42

заработная плата: 690000

Так что в основном моя программа выводит окончательный набор полученной информации * Размерное число раз

Ответы [ 3 ]

3 голосов
/ 18 июня 2019

Таким образом, в основном моя программа выводит окончательный набор полученной информации

Поскольку вы определяете только один экземпляр Employee:

Employee Emp;

, а затем сохраните ваш ввод в этот единственный Emp.

Вы хотите что-то похожее на:

cout << "Enter the number of employees you want to enter into the database: ";
cin >> sized;
//Declaring a vector type Employee of size sized
std::vector<Employee> Emps(sized);
1 голос
/ 18 июня 2019

На самом деле вам нужен контейнер с переменным размером для хранения всех введенных сотрудников.

Более подходящим контейнером в вашем случае является std::vector.

Вот демонстрационная программа,

#include <iostream>
#include <string>
#include <iterator>
#include <vector>

struct Employee
{
    std::string name;
    int age;
    double salary;
};

std::ostream & Showinfo( const Employee &employee, std::ostream &os = std::cout );

int main() 
{
    size_t n = 0;
    std::cout << "Enter the number of employees you want to enter into the database: ";
    std::cin >> n;

    std::cout << '\n';

    std::vector<Employee> employees;
    employees.reserve( n );

    for ( size_t i = 0; i < n; i++ )
    {
        Employee emp;

        std::cout << "Enter Full name of employee: ";
        std::cin.ignore();
        std::getline( std::cin, emp.name );

        std::cout << '\n';

        std::cout << "Enter age of employee: ";
        std::cin >> emp.age;

        std::cout << '\n';

        std::cout << "Enter salary of employee: ";
        std::cin >> emp.salary;

        std::cout << '\n';

        employees.push_back( emp );
    }    

    // To display the elements of the information given
    std::cout << "\nDisplaying Information.\n";
    std::cout << "--------------------------------\n";

    for ( const Employee &emp : employees ) Showinfo( emp );

    return 0;
}

//To display/showcase the information received
std::ostream & Showinfo( const Employee &emp, std::ostream &os )
{
    os << "Name: "   << emp.name   << '\n';
    os << "Age: "    << emp.age    << '\n';
    os << "Salary: " << emp.salary << '\n';

    return os << std::endl;
}

Его вывод может выглядеть как

Enter the number of employees you want to enter into the database: 2

Enter Full name of employee: ball

Enter age of employee: 69

Enter salary of employee: 420

Enter Full name of employee: Rally

Enter age of employee: 42

Enter salary of employee: 690000


Displaying Information.
--------------------------------
Name: ball
Age: 69
Salary: 420

Name: Rally
Age: 42
Salary: 690000
1 голос
/ 18 июня 2019

В вашем коде только один экземпляр Employee.Либо объедините два цикла в один:

for (int i = 0; i < sized; i++)
{
    cout << "Enter Full name of employee: ";
    cin.ignore();
    getline(cin, Emp.name);
    cout << endl;
    cout << "Enter age of employee: ";
    cin >> Emp.age;
    cout << endl;
    cout << "Enter salary of employee: ";
    cin >> Emp.salary;
    cout << endl;
    system("cls");
    // To display the elements of the information given
    cout << endl << "Displaying Information." << endl;
    cout << "--------------------------------" << endl;
    Showinfo(Emp);
}

Однако это будет чередовать ввод пользователя с выводом.Вместо этого вы можете использовать вектор:

std::vector<Employee> employees;
for (int i = 0; i < sized; i++)
{
    cout << "Enter Full name of employee: ";
    cin.ignore();
    getline(cin, Emp.name);
    cout << endl;
    cout << "Enter age of employee: ";
    cin >> Emp.age;
    cout << endl;
    cout << "Enter salary of employee: ";
    cin >> Emp.salary;
    cout << endl;
    employees.push_back(Emp);
    system("cls");
}

for (const auto& e : employess) {
   Showinfo(e);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...