Задать вопрос
@Nikita1244
Anonymous

Как сохранить значения нескольких переменных в С++ 17?

Написал такой код:

#include <iostream>
#include <vector>

using namespace std;

vector<int> getInfo(int normal_weight, int weight) { // vector<int> нужен для возвращения нескольких значений из функции.
    cout << "Введите оптимальный ваш вес в кг: ";
    cin >> normal_weight;
    cout << "Введите нынешний вес в кг: ";
    cin >> weight;
    return {normal_weight, weight}; // возвращаем переменные
};
int weightLoss(int normal_weight, int weight) { // здесь мы просто определяем на сколько нужно "похудеть"
    int result = normal_weight - weight;
    return result;
};
int main() {
    cout << "Это программа для опреределения, нужно ли вам похудеть." << endl;
    int normal_weight, weight = getInfo(normal_weight, weight); // здесь я хочу сохранить значения из функции в нескольких переменных, но у меня удается только одну переменную сделать.
    if (weight > normal_weight) {
        int result = weightLoss(normal_weight, weight);
        cout << "Вам необходимо похудеть на " << result << " кг";
    };
};

Только приходит в голову сделать массив, но все же, хочется узнать как записать значения нескольких переменных.
  • Вопрос задан
  • 332 просмотра
Подписаться 1 Простой 7 комментариев
Решения вопроса 5
Adamos
@Adamos
#include <iostream>
#include <vector>

using namespace std;

int getInfo(const char* message) { 
    int value = 0;
    cout << message;
    cin >> value;
    return value;
};
int weightLoss(int normal_weight, int weight) { // здесь мы просто определяем на сколько нужно "похудеть"
    int result = normal_weight - weight;
    return result;
};
int main() {
    cout << "Это программа для опреределения, нужно ли вам похудеть." << endl;
    int normal_weight = getInfo("Введите оптимальный ваш вес в кг: ");
    int weight = getInfo("Введите нынешний вес в кг: ");
    if (weight > normal_weight) {
        int result = weightLoss(normal_weight, weight);
        cout << "Вам необходимо похудеть на " << result << " кг";
    };
};
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Используй пару (pair).

using namespace std;

pair<int,int> getInfo(int x, int y) {
  return { x+1, y+2 };
}
Ответ написан
Параметры, измененные в функции изменятся и вне.
void getInfo(int& normal_weight, int& weight)
Ответ написан
@res2001
Developer, ex-admin
Вы же из getInfo возвращаете вектор, вот и принимайте вектор. В нулевом элементе вектора будет normal_weight, в первом weight. Вместо вектора можно было бы использовать std::pair или std::tuple. Они хранят свои данные статически, а вектор выделяет динамический массив, что в вашем случае максимально избыточно.

Другой вариант передавайте в getInfo ссылки, тогда не надо будет ничего возвращать, значения в main появятся сами собой :-) Сейчас у вас аргутменты getInfo не понятно какую роль выполняют.
Ответ написан
@rPman
я так понимаю человек желает аналог php-шного list
list($normal_weight, $weight)=getInfo();

в таких языках как C+ (да и C) идеологически парные переменные объединяют в классы (структуры), с которыми = работает как копирование всей структуры.

struct NormalWeight {int normal_weight, weight};
// ...
NormalWeight nm=getInfo();
if (nm.weight > nm.normal_weight)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы