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

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

Войти
Регистрация
Восстановить пароль
 
PavelM
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 15
#1

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

30.05.2013, 18:46. Просмотров 284. Ответов 3
Метки нет (Все метки)

Доброго времени суток!
Столкнулся с проблемой в задании условия в функции.
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 строчка *
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 18:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция с++ (C++):

Функция sqrt: существует более одного экземпляра. Функция перегруженная - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){ float s, p; int c, a; s=0; ...

Перегрузка операций: friend-функция или функция-член класса - C++
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений - C++
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get() - C++
какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()

Чистая виртуальная функция функция не имеет оператора переопределения - C++
Пишу программу для записи заметок. Есть 2 класса: Page и Note. Note наследуется от Page. Page.h #pragma once ...

что за функция такая strstr? или это не функция? - C++
void search(sp *list){ sp *prt = list; char f,r; cout&lt;&lt;Rus(&quot;введите текст&quot;)&lt;&lt;endl; cin&gt;&gt;f; cout&lt;&lt;Rus(&quot;введите выходной...

3
ksandro
31 / 31 / 1
Регистрация: 15.04.2011
Сообщений: 81
30.05.2013, 18:48 #2
какие именно значения нулевые. Приведи код, когде создается массив и где он заполняется.
0
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
30.05.2013, 18:53 #3
PavelM, у тебя не объявлен массив в функции f()
0
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;
0
30.05.2013, 19:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2013, 19:00
Привет! Вот еще темы с ответами:

Создать производный класс, в котором реализована функция умножения вектора на число и функция сложения двух векторов - C++
Write программу с использованием класса Вектор (не без помощи форумчанина), но необходимо создать производный класс, в котором реализована...

Функция заполняющая массив и функция вывода массива - C++
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива - C++
Есть программа #include &lt;iostream&gt; #include &lt;algorithm&gt; const int N = 5; int handSet(void) { int a; std::cout...

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел - C++
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих функций с различными параметрами. Для...


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

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

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