Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

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

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

02.08.2011, 23:28. Просмотров 7855. Ответов 33
Метки нет (Все метки)

есть к примеру :

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

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

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

Поменять значения двух переменных, не используя третью - C++
Как поменять значения двух переменных, не используя третью? Написать функцию swap, которая бы осуществляла данный обмен для целочисленных...

Создать функции нахождения максимального значения из двух переменных - C++
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cstdlib&gt; using namespace std; double H(double A, double B, double C) { int...

Поменять местами значения двух переменных, не используя дополнительной - C++
4.Напишите программу,которая меняет местами значения двух переменных в памяти. В задаче 4 попробуйте найти решение которое не использует...

Как поменять значения двух переменных не используя дополнительную переменную? - C++
Как поменять значения двух переменных не используя дополнительную переменную?

Поменять местами значения двух переменных, используя один указатель - C++
Это вообще реально? С двумя указателями вот так, с вероятностью ошибки т. к. засылаем на неизвестный адрес. #include &lt;iostream.h&gt; ...

Решение задачи Абрамяна: поменять местами значения двух переменных - C++
Алгоритм и коды программы

33
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
02.08.2011, 23:33 #2
Как сделать что б выводило обе через cout одним разом?
0
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:39  [ТС] #3
не обязательно через cout, просто с выводом, честноговоря, не разбирался... вообще как ?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:41 #4
d2funlife, покажите код
0
Сыроежка
Заблокирован
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 );
}
Я это набирал "на коленках", так что код может не компилироваться, но он отражает идею, которую можно использовать в реальном коде.
0
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;
}
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 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;
    ...
    // И так до бесконечности.
}
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:46 #8
d2funlife,гениально, вы так сходу за шаблоны взялись изучать?
и что еще компилится?
0
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:53  [ТС] #9
компилит

Добавлено через 5 минут
так все же, может возвращать две переменные или только как отдельный обьект ?
0
Сыроежка
Заблокирован
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. Вы путаете возвращаемое значение функции с передачей значений через параметры. А это не одно и тоже. Так что не учите ученых!
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:54 #11
Цитата Сообщение от d2funlife Посмотреть сообщение
компилит
верно это уж я забыл про особенность оператора ',' - запятая) но вы ошибаетесь, в таком случае возвращаеться только х2 если мне не изменяет память(или х1)

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

Добавлено через 5 минут
так все же, может возвращать две переменные или только как отдельный обьект ?
У вас код компилируется, потому что в предложении с return вы используете оператор запятая. А это значит, что у вас возвращаетсмя одно последнее значение после запятой в return, то есть x2. Как я вам уже написал, вы можете использовать стандартную структуру
C++
1
std::pair<float, float>
в качестве возвращаемого значения. Либо написать собственную структуру, а для нее оператор вывода.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 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
1
03.08.2011, 00:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2011, 00:05
Привет! Вот еще темы с ответами:

Поменять местами значения двух переменных без использования дополнительной переменной - C++
4. Написать программу, которая меняет местами значения двух переменных без использования дополнительной переменной.

Написать программу, которая меняет местами значения двух переменных с использованием дополнительной переменной. - C++
3. Написать программу, которая меняет местами значения двух переменных с использованием дополнительной переменной. Пункт 5.16 Правил:...

Поменять местами значения целых переменных х и у не используя дополнительных переменных - C++
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста помогите!!! Поменять местами значения целых переменных х и у не...

Вывести результат двух операций с использованием двух переменных - C++
Такие дела: надо ввести с клавиатуры 4 переменные, используя только 2 int, и посчитать результат двух выражений Есть такой вариант, но...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru