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

Правило использования функции, которая возвращает массив - C++

Восстановить пароль Регистрация
 
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
18.03.2014, 10:19     Правило использования функции, которая возвращает массив #1
Необходимо задать функцию которая возвращает массив. Вот пример программы которую я написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const int N=100;
const double A0=1, h=0.01;
 
double *Progonka(double *A, double *B, double *C, double *F, double first, double second)
{
      int i;
      double *y, *alfa, *betta;
      alfa=(double*)malloc((N)*sizeof(double));
      betta=(double*)malloc((N)*sizeof(double));
      y=(double*)malloc((N+1)*sizeof(double));
 
      y[N]=first;
      alfa[0]=0;                        
      betta[0]=second;
 
    for (i=0; i<N; i++) 
    {
        alfa[i]=B[i-1]/(C[i-1]-alfa[i-1]*A[i-1]);
        betta[i]=(A[i-1]*betta[i-1]+F[i-1])/(C[i-1]-alfa[i-1]*A[i-1]);
    }
 
    for (i=N-1; i>=0; i--)
      y[i]=alfa[i]*y[i+1]+betta[i];
 
    return y;
}
int main (void)
{
for (int j=0; j<=N-2; j++ )// вычисление S05
        S05 = Progonka(g22, g22, C_massiv, F_massiv, A0, A0);
}
Правильно ли я вызываю функцию, или может быть что то не правильно делаю, потому что программа сама длинная, и есть подозрение что я что то неправильно делаю. Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2014, 10:19     Правило использования функции, которая возвращает массив
Посмотрите здесь:

C++ Реализовать функцию, которая получает массив и возвращает количество простых чисел в нем.
C++ Создать функцию, которая возвращает количество элементов массива, меньших чем число, заданное пользователем. Массив целочисленный, передается функции
Функция которая возвращает динамический массив C++
C++ Функция, которая возвращает массив
Написать функцию, возвращающую максимальное из двух целых чисел, полученных в качестве аргументов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
18.03.2014, 10:26     Правило использования функции, которая возвращает массив #2
У вас S05 нигде не объявляется.

Добавлено через 2 минуты
C++
1
y=(double*)malloc((N+1)*sizeof(double));
Не проще ли так:
C++
1
y = new double[N + 1];
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
18.03.2014, 10:48  [ТС]     Правило использования функции, которая возвращает массив #3
Часть кода я не стал приводить, интересует правильность использования самого синтаксиса. Чтобы действительно в S05 получался результат действия функции прогонки.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
18.03.2014, 11:23     Правило использования функции, которая возвращает массив #4
Может имеет смысл вынести из функции созднание и возвращение массива? Вы выделили память для y - вопрос: А где она должна освобождаться и кем?
Считаю более предпотительнее создавать массив отдельно от функции, а в нее передавать указатель на этот массив.
Вот тут:
C++
1
        alfa[i]=B[i-1]/(C[i-1]-alfa[i-1]*A[i-1]);
иттерация с i = 0 вызовет alfa[-1]
Аналогично и здесь
C++
1
        betta[i]=(A[i-1]*betta[i-1]+F[i-1])/(C[i-1]-alfa[i-1]*A[i-1]);
И еще используйте префиксный инкремент в цикле.
Yandex
Объявления
18.03.2014, 11:23     Правило использования функции, которая возвращает массив
Ответ Создать тему
Опции темы

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