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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 5.00
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
#1

Как сделать выходные параметры у функции? - C++

26.01.2011, 20:13. Просмотров 4804. Ответов 9
Метки нет (Все метки)

мне нужно чтобы переменная s сохраняла свое значение после работы функции(которая на самом деле процедура, токо я не знал как по другому сделать)) )
C++
1
2
3
4
5
6
void MyFirst(double x,double y,double z,double s)
{
    double p;
    p=(x+y+z)/2;
    s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать выходные параметры у функции? (C++):

Выходные параметры библиотечной функции - C++
Для удобства вынес часть текста в dll. Можно ли параметры передавать в экспортируемые функции по ссылке? Чем это грозит?

Вычисление интергала, но входные данные сначала считываются из файла, а выходные наоборот в него записываются. Подскажите пожалуйста как это сделать - C++
Заранее спасибо за помощь.) #include<iostream> #include<conio.h> #include <stdio.h> #include <cmath> using namespace std; float...

Массивы и функции как параметры - C++
Из главной функции нужно вызвать промежуточную функцию с 3 параметрами - (введённый двумерный массив, кол-во элементов, функция). ...

Как вызвать из 1 функции параметры другой? - C++
Всем привет! Собственно, вопрос в названии. Хочу написать 2 функции: первая отводит память под массив, а вторая этот массив...

Какими способами можно использовать функции класса B, как параметры функции Sub класса А? - C++
class A {... void Sub(...); ...} class B : ... { public: float f1(float); float f2(float); ...

Как сделать чтобы программа отображала входные параметры самостоятельно - C++
Всем привет! Нужно написать программу. В центре будет изображена 3д модель. а по бокам будет показаны входные данные, на которые...

9
VenCarbon
33 / 32 / 3
Регистрация: 14.12.2010
Сообщений: 158
26.01.2011, 20:16 #2
Цитата Сообщение от Noname2512 Посмотреть сообщение
void MyFirst(double x,double y,double z,double &s)
{
double p;
p=(x+y+z)/2;
s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
попробуй так.
1
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
26.01.2011, 20:17 #3
1-й вариант (работает как в Си, так и в Си++)

Описание:
C++
1
2
3
4
5
6
void MyFirst(double x,double y,double z,double *s)
{
        double p;
        p=(x+y+z)/2;
        *s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
Вызов:
C++
1
MyFirst(x, y, z, &s);
2-й вариант (работает только в Си++)

Описание:
C++
1
2
3
4
5
6
void MyFirst(double x,double y,double z,double &s)
{
        double p;
        p=(x+y+z)/2;
        s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
Вызов:
C++
1
MyFirst(x, y, z, s);
2
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
26.01.2011, 20:18 #4
C++
1
2
3
4
5
6
7
double MyFirst(double x,double y,double z,double s)
{
        double p;
        p=(x+y+z)/2;
        s=sqrt( p*(p-x)*(p-y)*(p-z) );
        return s;
}
2
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
10.08.2011, 13:02  [ТС] #5
а если мне надо массив чисел сохранить
я попробовал написать
C++
1
int fn (int a, int  &r[3] ) {}
а он ругается :
'r' : arrays of references are illegal
0
Даня98
29 / 29 / 8
Регистрация: 13.02.2010
Сообщений: 145
10.08.2011, 13:08 #6
С с++ когда объявляется массив в аргументах функии на него автоматически создается ссылка. (&) Поэтому, все изменения массива в функции изменяют сам массив а не его копию.
1
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
10.08.2011, 13:08 #7
Цитата Сообщение от Noname2512 Посмотреть сообщение
а если мне надо массив чисел сохранить
я попробовал написать
C++
1
int fn (int a, int  &r[3] ) {}
а он ругается :
'r' : arrays of references are illegal
C++
1
int fn (int a, int  r[3] ) {}
Вызов
C++
1
fn(a, r)
0
Даня98
29 / 29 / 8
Регистрация: 13.02.2010
Сообщений: 145
10.08.2011, 13:12 #8
И еще после объявления массива обычно указывается переменная, отвечающая за его размер.
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
10.08.2011, 13:16 #9
Цитата Сообщение от Даня98 Посмотреть сообщение
И еще после объявления массива обычно указывается переменная, отвечающая за его размер.
Пример

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Sum(int *a, int n)
{
   int i, s = 0;
   for (i = 0; i < n; i++)
      s += a[i];
   return s;
}
 
int main()
{
   int a[5] = {0,1,2,3,4};
   printf("%d\n", Sum(a, 5));
   return 0;
}
0
Сыроежка
Заблокирован
10.08.2011, 20:11 #10
Цитата Сообщение от Noname2512 Посмотреть сообщение
а если мне надо массив чисел сохранить
я попробовал написать
C++
1
int fn (int a, int  &r[3] ) {}
а он ругается :
'r' : arrays of references are illegal
Дело в том, что вы указали не ссылку на массив, а массив ссылок. А в С++ запрещается создавать массив ссыло. Поэтому ткомпилятор и ругается. Нужно правильно синтаксически задавать конструкции языка. В вашем случае следует записать таким образом\\

C++
1
int fn (int a, int ( &r )[3] ) {}
Добавлено через 5 минут
Цитата Сообщение от Даня98 Посмотреть сообщение
С с++ когда объявляется массив в аргументах функии на него автоматически создается ссылка. (&) Поэтому, все изменения массива в функции изменяют сам массив а не его копию.
Не фантазируйте! Это совершенно неверно, что вы написали. Никаких ссылок не создается на массив. Просто массив, переданный в качестве аргумента для параметра, указанного, как массив, преобразуется в указатель на первый элемент массива. А указатель на первый элемент массива и ссылка на массив - это совершенно разные вещи!
0
10.08.2011, 20:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 20:11
Привет! Вот еще темы с ответами:

Как работают приведенные функции, какие у них параметры? - C++
Доброго времени суток!!! Не знаю, как работают такие функции (какие параметры вводить, и что должно вывести): atoi() itoa() max()

Как задать параметры запуска (аргументы командной строки) функции main? - C++
Как их задать в процессе запуска? т.е. пользователь запускает приложение и указывает параметры запуска при этом. Где про них почитать...

Вычислить суммы с данной точностью е, используя указатели на функции, как параметры - C++
Используйте указатели на функции как параметры: \sum_{n=1}^{\infty}\frac{sin \, n}{n} \sum_{n=1}^{\infty}\frac{n}{e^n}

Чтение из файла, название передано как параметры функции main argc & argv - C++
Вообще дано задание - считать из файла чётные строки, название файла должно быть передано как параметр при запуске из командной строки.. ...


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

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

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