Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/50: Рейтинг темы: голосов - 50, средняя оценка - 4.78
d2funlife
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
#1

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

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

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

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

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

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

Определить значения функции двух переменных
Определить значения функции двух переменных следующего вида:: f(x,1)=x^2–x+2;...

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

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

Создать функции нахождения максимального значения из двух переменных
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cstdlib&gt; using namespace...

Обменять значения двух переменных используя третью (буферную) переменную
Решите задачу пожалуйста::-[ Обменять значения двух переменных используя...

33
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 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
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 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
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 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
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 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
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2011, 23:54 #11
Цитата Сообщение от d2funlife Посмотреть сообщение
компилит
верно это уж я забыл про особенность оператора ',' - запятая) но вы ошибаетесь, в таком случае возвращаеться только х2 если мне не изменяет память(или х1)

Добавлено через 45 секунд
Цитата Сообщение от d2funlife Посмотреть сообщение
так все же, может возвращать две переменные или только как отдельный обьект ?
можно либо через указатели, либо через ссылки, либо через объект
0
Paporotnik
383 / 227 / 12
Регистрация: 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
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 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:12 #16
В общем случае считается плохим интерфейсом, когда функция ничего не возвращает, а через ее параметры передаются в вызывающую функцию несколько значений. Желательно избегать этого. Кроме того такую функцию нельзя использовать в выражениях. То есть к такому интерфейсу прибегают в крайних случаях, коогда ничего лучшего придумать не могут.
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
03.08.2011, 00:13 #17
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это вы заблуждаетесь и путаете понятия! Ваша функция ничего не возвращает! Учите понятие возвращаемого значения функции. Ваша функция объявлена с возвращаемым типом void. Вы путаете возвращаемое значение функции с передачей значений через параметры. А это не одно и тоже. Так что не учите ученых!
А давай ты мне не будешь говорить про значения возвращаемые функцией.
Если ты хотел сказать что-то умное - то надо сказать понятным языком, так чтобы все поняли.
А как ты сказал - так я тебе и возразил.
Из функции можно вернуть далеко не одну переменную!
Цитата Сообщение от Сыроежка Посмотреть сообщение
Нельзя из функции вернуть две переменные!
0
Сыроежка
Заблокирован
03.08.2011, 00:22 #18
Цитата Сообщение от lazybiz Посмотреть сообщение
А давай ты мне не будешь говорить про значения возвращаемые функцией.
Если ты хотел сказать что-то умное - то надо сказать понятным языком, так чтобы все поняли.
А как ты сказал - так я тебе и возразил.
Либо выражайся понятным языком, либо лучше промолчи. Из функции можно вернуть далеко не одну переменную!
Я то как раз сказал грамотно! Функция не возвращает свои параметры. Функция возвращает значение, тип которого задан в ее объявлении и передается через оператор return. Я понимаю, что со своей колокольни отрывочных знаний С++ вы воспринимаете правильные ответы, как неправильные. Я вам настоятельно советую разобраться с понятием "возвращаемого значения функции"!
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
03.08.2011, 00:34 #19
Цитата Сообщение от Сыроежка Посмотреть сообщение
Функция возвращает значение, тип которого задан в ее объявлении и передается через оператор return.
Да ты сам суть своего вопроса даже не понимаешь... Про return и слова не было, были слова про то что можно ли/нельзя вернуть из функции несколько значений.
Если есть желание то пиши вызывающую и вызываемую функции, а я при всех тебе покажу как это делается.
0
Paporotnik
383 / 227 / 12
Регистрация: 06.07.2011
Сообщений: 512
03.08.2011, 00:43 #20
возвращать = return (по-англицки)
по-моему все более чем очевидно. не говоря уже про то, что ТС сразу спросил, как вернуть из ф-ции, используя return, на что и получил ответ.

В общем случае считается плохим интерфейсом, когда функция ничего не возвращает, а через ее параметры передаются в вызывающую функцию несколько значений. Желательно избегать этого. Кроме того такую функцию нельзя использовать в выражениях. То есть к такому интерфейсу прибегают в крайних случаях, коогда ничего лучшего придумать не могут.
а можно немного раскрыть эти слова? не совсем понял в чем именно негатив)
0
03.08.2011, 00:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2011, 00:43

Поменять местами значения двух переменных, используя один указатель
Это вообще реально? С двумя указателями вот так, с вероятностью ошибки т. к....

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

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


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

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

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