Форум программистов, компьютерный форум CyberForum.ru

Вывод значения двух переменных - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.82
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:28     Вывод значения двух переменных #1
есть к примеру :

шаблон функции (параметры)
{ что то делаеться и return двух переменных}

вызов : cout<<шаблон функции(аргументы);

выводит только одну перемнную, как сделать что б выводило обе ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2011, 23:28     Вывод значения двух переменных
Посмотрите здесь:

C++ Деление многочленов от двух переменных
C++ Как поменять значения двух переменных не используя дополнительную переменную?
C++ Обмен значениями двух переменных
C++ Написать программу, которая меняет местами значения двух переменных с использованием дополнительной переменной.
Поменять местами значения двух переменных без использования дополнительной переменной C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
02.08.2011, 23:33     Вывод значения двух переменных #2
Как сделать что б выводило обе через cout одним разом?
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:39  [ТС]     Вывод значения двух переменных #3
не обязательно через cout, просто с выводом, честноговоря, не разбирался... вообще как ?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:41     Вывод значения двух переменных #4
d2funlife, покажите код
Сыроежка
Заблокирован
02.08.2011, 23:42     Вывод значения двух переменных #5
Цитата Сообщение от d2funlife Посмотреть сообщение
есть к примеру :

шаблон функции (параметры)
{ что то делаеться и return двух переменных}

вызов : cout<<шаблон функции(аргументы);

выводит только одну перемнную, как сделать что б выводило обе ?
Нельзя из функции вернуть две переменные! Функции возвращают один объект того типа, который указан в объявлении функции. Но вы можете задать в качестве возвращаемого значения, например, структуру, состоящую из двух членов, либо какой-нибудь класс. Уже есть стандартная готовая структура, которая называется
C++
1
std::pair
. Ее можно использовать для этих целей. Только вам нужно будет определить оператор вывода для этой структуры таким образом, как вам нужно.

Например,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <typename T>
 
std::pair<T, T> f( const T &x, const T &y )
{
...
   return ( std::make_pair( x, y ) );
}
 
template <typename T>
std::ostream & operator<<( std::ostream &os, const std::pair<T, T> &rhs )
{
   os << "( " << rhs.first << ", " << rhs.second << " )";
   return ( os );
}
Я это набирал "на коленках", так что код может не компилироваться, но он отражает идею, которую можно использовать в реальном коде.
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:44  [ТС]     Вывод значения двух переменных #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <typename T> T Equation(T A, T B, T C)
{
    float X1 = (-B + sqrt(((B*B)-(4*A*C))))/2*A;
    float X2 = (-B - sqrt(((B*B)-(4*A*C))))/2*A;
    return X1,X2;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
           float A,B,C;
    cout<<"\n\nEnter the param :\n\nA :";
    cin>>A;
    cout<<"\nB :";
    cin>>B;
    cout<<"\nC :";
    cin>>C;
    cout<<"\nX at this equation :"<<Equation(A,B,C);
           return 0;
}
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
02.08.2011, 23:45     Вывод значения двух переменных #7
Цитата Сообщение от Сыроежка Посмотреть сообщение
Нельзя из функции вернуть две переменные!
Ой как же ты заблуждаешься, Сыроеженька....

C
1
2
3
4
5
6
7
8
9
void func( int *a, char *b, float *c )
{
    ...
    *a = aa;
    *b = bb;
    *c = cc;
    ...
    // И так до бесконечности.
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:46     Вывод значения двух переменных #8
d2funlife,гениально, вы так сходу за шаблоны взялись изучать?
и что еще компилится?
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:53  [ТС]     Вывод значения двух переменных #9
компилит

Добавлено через 5 минут
так все же, может возвращать две переменные или только как отдельный обьект ?
Сыроежка
Заблокирован
02.08.2011, 23:53     Вывод значения двух переменных #10
Цитата Сообщение от lazybiz Посмотреть сообщение
Ой как же ты заблуждаешься, Сыроеженька....

C
1
2
3
4
5
6
7
8
9
void func( int *a, char *b, float *c )
{
    ...
    *a = aa;
    *b = bb;
    *c = cc;
    ...
    // И так до бесконечности.
}
Это вы заблуждаетесь и путаете понятия! Ваша функция ничего не возвращает! Учите понятие возвращаемого значения функции. Ваша функция объявлена с возвращаемым типом void. Вы путаете возвращаемое значение функции с передачей значений через параметры. А это не одно и тоже. Так что не учите ученых!
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:54     Вывод значения двух переменных #11
Цитата Сообщение от d2funlife Посмотреть сообщение
компилит
верно это уж я забыл про особенность оператора ',' - запятая) но вы ошибаетесь, в таком случае возвращаеться только х2 если мне не изменяет память(или х1)

Добавлено через 45 секунд
Цитата Сообщение от d2funlife Посмотреть сообщение
так все же, может возвращать две переменные или только как отдельный обьект ?
можно либо через указатели, либо через ссылки, либо через объект
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
02.08.2011, 23:57     Вывод значения двух переменных #12
как и сказали выше, через return можно вернуть только одно что-то. если нужно получать несколько чего-то из ф-ции, то либо передавайте в ф-цию указатели на это что-то и работайте с ними, либо определяйте класс/структуру, содержащий это что-то, и возвращайте их. последний вариант более удобен, если требуется организовать вывод этих значений (перегрузить, к примеру, <<), либо они как-то связаны логикой программы.
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:59  [ТС]     Вывод значения двух переменных #13
а в данном варианте как вывести значение двух переменных(выводит только Х2)?
Сыроежка
Заблокирован
03.08.2011, 00:00     Вывод значения двух переменных #14
Цитата Сообщение от d2funlife Посмотреть сообщение
компилит

Добавлено через 5 минут
так все же, может возвращать две переменные или только как отдельный обьект ?
У вас код компилируется, потому что в предложении с return вы используете оператор запятая. А это значит, что у вас возвращаетсмя одно последнее значение после запятой в return, то есть x2. Как я вам уже написал, вы можете использовать стандартную структуру
C++
1
std::pair<float, float>
в качестве возвращаемого значения. Либо написать собственную структуру, а для нее оператор вывода.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.08.2011, 00:05     Вывод значения двух переменных #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
template <typename T> 
void Equation(T A, T B, T C, float* X1, float* X2)
{
    *X1 = (-B + sqrt(((B*B)-(4*A*C))))/(2*A);
    *X2 = (-B - sqrt(((B*B)-(4*A*C))))/(2*A);
}
 
int main()
{
    float A, B , C, x1, x2;
    std::cout << "\n\nEnter the param :\n\nA :";
    std::cin >> A;
    std::cout << "\nB :";
    std::cin >> B;
    std::cout << "\nC :";
    std::cin >> C;
    Equation(A,B,C, &x1, &x2);
    std::cout << "\nX at this equation:\nx1 = " << x1 << "\nx2 = " << x2;
    return 0;
}
Сыроежка, и все же std:air лучше использовать когда есть четкая определеннось, например типы возвращаемых значений различны, в даном случае типы одинаковы и легко перепутать корни x1 и х2
Сыроежка
Заблокирован
03.08.2011, 00:12     Вывод значения двух переменных #16
В общем случае считается плохим интерфейсом, когда функция ничего не возвращает, а через ее параметры передаются в вызывающую функцию несколько значений. Желательно избегать этого. Кроме того такую функцию нельзя использовать в выражениях. То есть к такому интерфейсу прибегают в крайних случаях, коогда ничего лучшего придумать не могут.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
03.08.2011, 00:13     Вывод значения двух переменных #17
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это вы заблуждаетесь и путаете понятия! Ваша функция ничего не возвращает! Учите понятие возвращаемого значения функции. Ваша функция объявлена с возвращаемым типом void. Вы путаете возвращаемое значение функции с передачей значений через параметры. А это не одно и тоже. Так что не учите ученых!
А давай ты мне не будешь говорить про значения возвращаемые функцией.
Если ты хотел сказать что-то умное - то надо сказать понятным языком, так чтобы все поняли.
А как ты сказал - так я тебе и возразил.
Из функции можно вернуть далеко не одну переменную!
Цитата Сообщение от Сыроежка Посмотреть сообщение
Нельзя из функции вернуть две переменные!
Сыроежка
Заблокирован
03.08.2011, 00:22     Вывод значения двух переменных #18
Цитата Сообщение от lazybiz Посмотреть сообщение
А давай ты мне не будешь говорить про значения возвращаемые функцией.
Если ты хотел сказать что-то умное - то надо сказать понятным языком, так чтобы все поняли.
А как ты сказал - так я тебе и возразил.
Либо выражайся понятным языком, либо лучше промолчи. Из функции можно вернуть далеко не одну переменную!
Я то как раз сказал грамотно! Функция не возвращает свои параметры. Функция возвращает значение, тип которого задан в ее объявлении и передается через оператор return. Я понимаю, что со своей колокольни отрывочных знаний С++ вы воспринимаете правильные ответы, как неправильные. Я вам настоятельно советую разобраться с понятием "возвращаемого значения функции"!
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
03.08.2011, 00:34     Вывод значения двух переменных #19
Цитата Сообщение от Сыроежка Посмотреть сообщение
Функция возвращает значение, тип которого задан в ее объявлении и передается через оператор return.
Да ты сам суть своего вопроса даже не понимаешь... Про return и слова не было, были слова про то что можно ли/нельзя вернуть из функции несколько значений.
Если есть желание то пиши вызывающую и вызываемую функции, а я при всех тебе покажу как это делается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2011, 00:43     Вывод значения двух переменных
Еще ссылки по теме:

Вывести результат двух операций с использованием двух переменных C++
C++ Поменять местами значения двух переменных, не используя дополнительной
C++ Создать функции нахождения максимального значения из двух переменных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
03.08.2011, 00:43     Вывод значения двух переменных #20
возвращать = return (по-англицки)
по-моему все более чем очевидно. не говоря уже про то, что ТС сразу спросил, как вернуть из ф-ции, используя return, на что и получил ответ.

В общем случае считается плохим интерфейсом, когда функция ничего не возвращает, а через ее параметры передаются в вызывающую функцию несколько значений. Желательно избегать этого. Кроме того такую функцию нельзя использовать в выражениях. То есть к такому интерфейсу прибегают в крайних случаях, коогда ничего лучшего придумать не могут.
а можно немного раскрыть эти слова? не совсем понял в чем именно негатив)
Yandex
Объявления
03.08.2011, 00:43     Вывод значения двух переменных
Ответ Создать тему
Опции темы

Текущее время: 13:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru