Професионална програма
Loading...
+ Нов въпрос
RaUndreundre avatar RaUndreundre 52 Точки

Функции, връщащи няколко стойности, със struct

Моля за малко помощ. Къде греша?

#include<iostream>
#include<string>
using namespace std;
struct student {
    string name;
    int age;
    char sex;
    int grade;
};

student include();

int main() {
    student pupil;
    include();
    cout << pupil.name << pupil.age << endl;
    return 0;
}

student include() {
    student pupil;
    cin >> pupil.name;
    cin >> pupil.age;
    cin >> pupil.sex;
    cin >> pupil.grade;
    return pupil;
}

 

Тагове:
0
C++ Fundamentals
j.petrov_90 avatar j.petrov_90 212 Точки
Best Answer

Функцията ти "include" връща резултат, който ти не използваш.

В main функцията ти най-вероятно искаш да присвоиш резултата от извиканата функция:
int main() {

  const student pupil = include();

  cout << pupil.name << pupil.age << endl;

  return 0;

}

П.С. между другото името на функцията "include", което си избрал е крайно неподходящо. Какво значи include? Какво общо има с това, което върши?
Пробвай с readInput() или readStudentData().

Също така в принта ти също би искал да сложиш някакви думички (или поне празно място между двете променливи).

Поздрави
 

1
05/03/2021 17:02:19
RaUndreundre avatar RaUndreundre 52 Точки

Благодаря много. Реших да променя малко заданието. Внасяне на данни за екипаж чрез struct и function до получаване на входа стринг "stop". Кода работи, но е малко разхвърлян и си мисля че трябва има по-оптимизиран вариант. Някакъв съвет бихте ли ми дали?
 

#include <iostream>
#include <string>
using namespace std;
struct crew {
    string name;
    int age;
    char sex;
    string position;
};
crew readInput();
int main() {
    string enterName;
    cout << "Enter pilot data:" << endl;
    getline(cin, enterName);
    while (enterName != "stop") {
        crew pilot = readInput();
        pilot.name = enterName;
        cout << "Name: " << pilot.name << ". "
             << "Age: " << pilot.age << ". "
             << "Sex: " << pilot.sex << ". "
             << "Position: " << pilot.position << "." << endl;
        getline(cin, enterName);
    }
    return 0;
}

crew readInput() {
    crew flighter;
    cin >> flighter.age >> flighter.sex;
    cin.ignore();
    getline(cin, flighter.position);
    return flighter;
}

 

0