Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/146: Рейтинг темы: голосов - 146, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17

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

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

Студворк — интернет-сервис помощи студентам
есть к примеру :

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

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

выводит только одну перемнную, как сделать что б выводило обе ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.08.2011, 23:28
Ответы с готовыми решениями:

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

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

Составить программу, вычисляющую значения функции а от двух переменных a и b
Вроде проверяю, ошибок не выдает, но результат не сходится. Прилагаю свой вариант ниже, помогите пожалуйста найти ошибку. #include...

33
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
02.08.2011, 23:33
Как сделать что б выводило обе через cout одним разом?
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:39  [ТС]
не обязательно через cout, просто с выводом, честноговоря, не разбирался... вообще как ?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.08.2011, 23:41
d2funlife, покажите код
0
Заблокирован
02.08.2011, 23:42
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:44  [ТС]
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
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
02.08.2011, 23:45
Цитата Сообщение от Сыроежка Посмотреть сообщение
Нельзя из функции вернуть две переменные!
Ой как же ты заблуждаешься, Сыроеженька....

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
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.08.2011, 23:46
d2funlife,гениально, вы так сходу за шаблоны взялись изучать?
и что еще компилится?
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
02.08.2011, 23:53  [ТС]
компилит

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

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

Добавлено через 5 минут
так все же, может возвращать две переменные или только как отдельный обьект ?
У вас код компилируется, потому что в предложении с return вы используете оператор запятая. А это значит, что у вас возвращаетсмя одно последнее значение после запятой в return, то есть x2. Как я вам уже написал, вы можете использовать стандартную структуру
C++
1
std::pair<float, float>
в качестве возвращаемого значения. Либо написать собственную структуру, а для нее оператор вывода.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
03.08.2011, 00:05
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
В общем случае считается плохим интерфейсом, когда функция ничего не возвращает, а через ее параметры передаются в вызывающую функцию несколько значений. Желательно избегать этого. Кроме того такую функцию нельзя использовать в выражениях. То есть к такому интерфейсу прибегают в крайних случаях, коогда ничего лучшего придумать не могут.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
03.08.2011, 00:13
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это вы заблуждаетесь и путаете понятия! Ваша функция ничего не возвращает! Учите понятие возвращаемого значения функции. Ваша функция объявлена с возвращаемым типом void. Вы путаете возвращаемое значение функции с передачей значений через параметры. А это не одно и тоже. Так что не учите ученых!
А давай ты мне не будешь говорить про значения возвращаемые функцией.
Если ты хотел сказать что-то умное - то надо сказать понятным языком, так чтобы все поняли.
А как ты сказал - так я тебе и возразил.
Из функции можно вернуть далеко не одну переменную!
Цитата Сообщение от Сыроежка Посмотреть сообщение
Нельзя из функции вернуть две переменные!
0
Заблокирован
03.08.2011, 00:22
Цитата Сообщение от lazybiz Посмотреть сообщение
А давай ты мне не будешь говорить про значения возвращаемые функцией.
Если ты хотел сказать что-то умное - то надо сказать понятным языком, так чтобы все поняли.
А как ты сказал - так я тебе и возразил.
Либо выражайся понятным языком, либо лучше промолчи. Из функции можно вернуть далеко не одну переменную!
Я то как раз сказал грамотно! Функция не возвращает свои параметры. Функция возвращает значение, тип которого задан в ее объявлении и передается через оператор return. Я понимаю, что со своей колокольни отрывочных знаний С++ вы воспринимаете правильные ответы, как неправильные. Я вам настоятельно советую разобраться с понятием "возвращаемого значения функции"!
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
03.08.2011, 00:34
Цитата Сообщение от Сыроежка Посмотреть сообщение
Функция возвращает значение, тип которого задан в ее объявлении и передается через оператор return.
Да ты сам суть своего вопроса даже не понимаешь... Про return и слова не было, были слова про то что можно ли/нельзя вернуть из функции несколько значений.
Если есть желание то пиши вызывающую и вызываемую функции, а я при всех тебе покажу как это делается.
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
03.08.2011, 00:43
возвращать = return (по-англицки)
по-моему все более чем очевидно. не говоря уже про то, что ТС сразу спросил, как вернуть из ф-ции, используя return, на что и получил ответ.

В общем случае считается плохим интерфейсом, когда функция ничего не возвращает, а через ее параметры передаются в вызывающую функцию несколько значений. Желательно избегать этого. Кроме того такую функцию нельзя использовать в выражениях. То есть к такому интерфейсу прибегают в крайних случаях, коогда ничего лучшего придумать не могут.
а можно немного раскрыть эти слова? не совсем понял в чем именно негатив)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.08.2011, 00:43
Помогаю со студенческими работами здесь

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

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

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

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

Вычислить значения двух переменных, заданных указанными тригонометрическими выражениями
Даны x,y,z. Вычеслить a,b если a=1+sin^2(x+y)/2+|x-2x/(1+x^2y^2)|+x, b=cos^2(arctg1/2); Пожалуйста, сразу готовую программу, времени в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru