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

Массив - C++

Восстановить пароль Регистрация
 
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
01.06.2011, 21:28     Массив #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
 
using namespace std;
 
int main ()
{
        int n, m, i, j, k, n1, m1;
        float mas_U[i][j];
        float e=0.000001, d1, d2, max_pogr, next;
        n=11; //задаем количество строк в массиве
        m=9; //задаем количество столбцов в массиве
        d1=10/6;
        d2=5;
        n1=n-1;
        m1=m-1;
        for(i = 0; i < n; i ++)
        {
              for(j = 0; j < m; j ++)
              {
                    mas_U[i][j] = 0;
              }
        }
        
        for(i = 9; i < n; i++)
        {
        mas_U[i][0]=5;
        }
        for(j = 1; j < 7; j ++)
        {
              mas_U[0][j] = mas_U[0][j+1] + d1;
              }
        for(j = 8; j < m ; j ++)
                {
              mas_U[0][j] = mas_U[0][j+1] - d2;
              }
        for(k = 0;; k ++)
                    {
                        max_pogr = 0;
                        for(i = 1; i < n1; i ++)
                        {
                            for(j = 1; j < m1; j ++)
                            {
                                next = (mas_U[i+1][j] + mas_U[i-1][j] + mas_U[i][j+1] + mas_U[i][j-1])/4;
                                if((mas_U[i][j] - next) > max_pogr) max_pogr = (mas_U[i][j] - next);
                                mas_U[i][j] = next;
                            }
                        }
                        if(max_pogr <= e || k >= 10000) break; 
                        else cout<<mas_U[i][j]<<"  ";
 
                    }
    system("pause");
    
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2011, 21:28     Массив
Посмотрите здесь:

C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ Задать массив вещественных чисел и вставить в исходный массив число
C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
01.06.2011, 21:50     Массив #2
И этот код компилится?

Добавлено через 52 секунды
Просто создавать и инитилизировать массив не константной длинны нельзя.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
01.06.2011, 21:54     Массив #3
adico, в некоторых компиляторах можно.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
01.06.2011, 22:01     Массив #4
Но тогда эти переменные надо хотя бы инициализировать

Добавлено через 3 минуты
В общем начало, видимо, предполагалось такое:
C++
1
2
3
4
5
        int i, j, k, n1, m1;
        float e=0.000001, d1, d2, max_pogr, next;
        int const n=11; //задаем количество строк в массиве
        int const m=9; //задаем количество столбцов в массиве
        float mas_U[n][m];
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
02.06.2011, 00:56  [ТС]     Массив #5
Я вот изменил как grizlik78 сказал и кое-что сам изменил
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
 
using namespace std;
 
int main ()
{
        int i, j, k, n1, m1;
        float e=0.000001, d1, d2, max_pogr, next;
        int const n=11; //задаем количество строк в массиве
        int const m=9; //задаем количество столбцов в массиве
        float mas_U[n][m];
        d1=10/6;
        d2=5;
        n1=n-1;
        m1=m-1;
        for(i = 0; i <= n; i ++)
        {
              for(j = 0; j <= m; j ++)
              {
                    mas_U[i][j] = 0;
              }
        }
        
        for(i = 9; i < n; i++)
        {
        mas_U[i][0]=5;
        }
        for(j = 1; j <= 7; j ++)
        {
              mas_U[0][j] = mas_U[0][j+1] + d1;
              }
        for(j = 7; j < m ; j ++)
                {
              mas_U[0][j] = mas_U[0][j+1] - d2;
              }
        for(k = 0;; k ++)
                    {
                        max_pogr = 0;
                        for(i = 1; i < n1; i ++)
                        {
                            for(j = 1; j < m1; j ++)
                            {
                                next = (mas_U[i+1][j] + mas_U[i-1][j] + mas_U[i][j+1] + mas_U[i][j-1])/4;
                                if((mas_U[i][j] - next) > max_pogr) max_pogr = (mas_U[i][j] - next);
                                mas_U[i][j] = next;
                            }
                        }
                        if(max_pogr <= e || k >= 10000) break; 
                        else cout<<mas_U[i][j]<<"  ";
 
                    }
    system("pause");
    
        return 0;
}
Подскажите она вообще работает правильно или нет. Я вроде все правильно делал. Сама задача должна расчитывать внутренние значения массива, если граничные известны.
Yandex
Объявления
02.06.2011, 00:56     Массив
Ответ Создать тему
Опции темы

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