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

Функция с++ - C++

Восстановить пароль Регистрация
 
PavelM
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 15
30.05.2013, 18:46     Функция с++ #1
Доброго времени суток!
Столкнулся с проблемой в задании условия в функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
double f(int i, int j, int k) 
{   
    if ( (X[i][j][k] - Lx/2)*(X[i][j][k] - Lx/2) + 
             (Y[i][j][k] - Ly/2)*(Y[i][j][k] - Ly/2) + 
             (Z[i][j][k] - Lz/2)*(Z[i][j][k] - Lz/2) ) < (Lx*Lx/16) return 1;
    else return 2;
}
 
double W(int i, int j, int k)
{ 
    double W; alfa = 1, beta = 1;
    ddksi = (f(i+1,j,k) - f(i-1,j,k))/(2*dksi);
    ddeta = (f(i,j+1,k) - f(i,j-1,k))/(2*deta);
    ddzet = (f(i,j,k+1) - f(i,j,k-1))/(2*dzet);
    W = sqrt(1 + alfa*(ddksi*ddksi + ddeta*ddeta + ddzet*ddzet) + beta*f(i,j,k)*f(i,j,k));
    return W;
}
int _tmain(int argc, _TCHAR* argv[]) {
.... //много ненужного
....
Вообщем, значения массивов в функции f (3 строчка) у меня нулевые. Эти массивы у меня описаны в основном теле программы (16 строчка). Там же и используется эта функция наряду с функцией W.

Почему они нулевые, если функция должна брать значения из основного тела ?
P.S. Знаю обходной путь, но он уж слишком громоздкий. Так что нужно разобраться именно в этом случае.

Добавлено через 17 минут
Не 16, а 18 строчка *
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 18:46     Функция с++
Посмотрите здесь:

C++ Функция...
C++ Функция
C++ Функция.
C++ Функция
функция от f(x) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ksandro
31 / 31 / 1
Регистрация: 15.04.2011
Сообщений: 81
30.05.2013, 18:48     Функция с++ #2
какие именно значения нулевые. Приведи код, когде создается массив и где он заполняется.
Mar-12
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
30.05.2013, 18:53     Функция с++ #3
PavelM, у тебя не объявлен массив в функции f()
PavelM
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 15
30.05.2013, 19:00  [ТС]     Функция с++ #4
Значения X[i][j][k], Y[i][j][k], Z[i][j][k] нулевые в ф-ии f

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int _tmain(int argc, _TCHAR* argv[]) {
....
....
for (int i = 0; i <= Nx; i++) 
{
    for (int j = 0; j <= Ny; j++) 
    {
        for (int k = 0; k <= Nz; k++) 
        {
            X[i][j][k] = i*dx;
            Y[i][j][k] = j*dy;
            Z[i][j][k] = k*dz;
            Xn[i][j][k] = i*dx;
            Yn[i][j][k] = j*dy;
            Zn[i][j][k] = k*dz;
        }
    }
}
Добавлено через 4 минуты
Цитата Сообщение от Mar-12 Посмотреть сообщение
PavelM, у тебя не объявлен массив в функции f()
Я его объявил до функции:
C++
1
double X[Nx+1][Ny+1][Nz+1],  Y[Nx+1][Ny+1][Nz+1],  Z[Nx+1][Ny+1][Nz+1]
Я извиняюсь, что по кускам вам даю информацию, но уж слишком большой код в моей программе.
Все было проверено и все считается. Но мне нужно ввести это условие
C++
1
2
3
4
if ( (X[i][j][k] - Lx/2)*(X[i][j][k] - Lx/2) + 
             (Y[i][j][k] - Ly/2)*(Y[i][j][k] - Ly/2) + 
             (Z[i][j][k] - Lz/2)*(Z[i][j][k] - Lz/2) ) < (Lx*Lx/16) return 1;
    else return 2;
Yandex
Объявления
30.05.2013, 19:00     Функция с++
Ответ Создать тему
Опции темы

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