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

Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. - C++

Восстановить пароль Регистрация
 
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
06.06.2011, 12:53     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #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
#include <iostream>
 
using namespace std;
 
int main ()
{
        int i, j, n1, m1;
        float d1, d2, 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(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;
                       mas_U[i][j] = next;
                      }
                }
                  cout<<mas_U[i][j]<<"  ";
 
    system("pause");
    
        return 0;
}
По идее он должен выдать рассчитанный массив, но что-то идет не так, может я что-то забыл или не так сделал?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 12:53     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива.
Посмотрите здесь:

Для каждого массива опpеделить сpеднее аpифметическое наибольшего и наименьшего значений массива C++
Написать две программы на языке С/С++ для расчета значений переменных y и z по заданным формулам C++
C++ Рассчитать значения у для значений х, равных 4, 5, ..., 28, если у задается следующей формулой: у = 2t2 + 5,5t – 2, t = х + 2.
Написать шаблон функции для поиска среднего арифметического значений массива C++
Требуется написать программу для расчета по двум формулам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
06.06.2011, 13:18     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #2
Вы задали массив
Цитата Сообщение от Feytan Посмотреть сообщение
C++
1
2
3
int const n=11; //задаем количество строк в массиве
 int const m=9; //задаем количество столбцов в массиве
 float mas_U[n][m];
А вот в этом цикле выходите за пределы массива
Цитата Сообщение от Feytan Посмотреть сообщение
C++
1
for(i = 0; i <= n; i ++) { for(j = 0; j <= m; j ++) { mas_U[i][j] = 0; } }
Надо так
C++
1
2
3
4
5
[FONT=monospace]
for(i = 0; i < n; ++i) 
         for(j = 0; j < m; j ++) 
      mas_U[i][j] = 0;  
[/FONT]


Элемент mas_U[n][m] за пределами массива - не забываете, что 11 элементов массива это значит элементы от 0-го до 10-го

Добавлено через 4 минуты
Тьфу.... ну ни как я этот моноспейс не осилил убрать.
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
06.06.2011, 13:51  [ТС]     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #3
voral, Я немного изменил, ту ошибку, которую я допустил

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
#include <iostream>
 
using namespace std;
 
int main ()
{
        int i, j, n1, m1;
        float d1, d2, 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(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;
                       mas_U[i][j] = next;
                      }
                }
                  cout<<mas_U[i][j]<<"  ";
 
    system("pause");
    
        return 0;
}
Если я использую то что вы мне сказали, компилятор выдает ошибку и ругается на этот FONT.
Но это все равно ничего неменяет он не выдает желаемого результата
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
06.06.2011, 14:14     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #4
Так печатайте после каждого цикла заполнения полученный массив:
C++
1
2
3
4
5
6
7
8
9
        cout<<"=====" << endl;
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
              }
              cout << endl;
        }
Найдете где и что не так пошло.

Добавлено через 4 минуты
Например после этого
C++
1
2
3
4
        for(j = 1; j <= 7; j ++)
        {
            mas_U[0][j] = mas_U[0][j+1] + d1;
        }
в массиве точно содержиться то, что вы ожидали?

Добавлено через 2 минуты
Возможно вам бы помогло
C++
1
d1= 10.0 / 6.0;
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
06.06.2011, 14:24     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #5
Цитата Сообщение от Feytan Посмотреть сообщение

Если я использую то что вы мне сказали, компилятор выдает ошибку и ругается на этот FONT.

Не по теме:

headshot !
просто убил наповал

Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
06.06.2011, 17:16  [ТС]     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #6
Я нашел и исправил ошибки которые были в коде и кое-что добавил, вроде программа работает нормально, осталось только одно, подскажите, а можно как-нибудь сделать чтобы конечный массив отображался нормально, вот код:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
 
using namespace std;
 
int main ()
{
        int i, j, n1, m1,k;
        float e=0.000001, max_pogr, d1, d2, next;
        int const n=11; //задаем количество строк в массиве
        int const m=9; //задаем количество столбцов в массиве
        float mas_U[n][m];
        d1=10.0/6.0;
        d2=5.0;
        n1=n-1;
        m1=m-1;
        cout<<"===Zadanie nulei===" << endl;
        cout<<"\n";
        for(i = 0; i < n; i ++) 
        {
              for(j = 0; j < m; j ++) 
              {
              mas_U[i][j] = 0;
              }
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        
        cout<<"\n===Pervaya sborka===" << endl;
        cout<<"\n";
        for(i = 8; i < n; i++)
        {
        mas_U[i][0]=5;
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        cout<<"\n===Vtoraya sborka===" << endl;
        cout<<"\n";        
        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(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        cout<<"\n===Podschet massiva===" << endl;
        cout<<"\n";         
        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;
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
 
    system("pause");
    
        return 0;
}
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
06.06.2011, 18:09     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #7
я б что то типа такого сделал (параметры уж сами подберете):
C
1
2
3
4
5
6
7
8
9
10
 
#include <stdio>
.....
 
for(i = 0; i < n; i ++)
{
  for(j = 0; j < m; j ++)
    printf("%10.5f\t",mas_U[i][j]);
  printf("\n");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 21:56     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива.
Еще ссылки по теме:

Составить код функции вычесления среднего значения для нечетных элементов массива А C++
C++ Написать программу для расчета значений переменных по заданной формуле
C++ Написать программу расчета массива на dev-c++

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

Или воспользуйтесь поиском по форуму:
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
06.06.2011, 21:56  [ТС]     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива. #8
voral,

У меня и без
Цитата Сообщение от voral Посмотреть сообщение
#include <stdio>
все работает... просто с его указанием выдает, что нету здеся функций ссылающихся на него, поэтому я его и не ставил

Вот конечный вариант:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
 
using namespace std;
 
int main ()
{
        int i, j, n1, m1,k;
        float e=0.000001, max_pogr, d1, d2, next;
        int const n=11; //задаем количество строк в массиве
        int const m=9; //задаем количество столбцов в массиве
        float mas_U[n][m];
        d1=10.0/6.0;
        d2=5.0;
        n1=n-1;
        m1=m-1;
        cout<<"===Zadanie nulei===" << endl;
        cout<<"\n";
        for(i = 0; i < n; i ++) 
        {
              for(j = 0; j < m; j ++) 
              {
              mas_U[i][j] = 0;
              }
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        
        cout<<"\n===Pervie granichnie usloviya===" << endl;
        cout<<"\n";
        for(i = 8; i < n; i++)
        {
        mas_U[i][0]=5;
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        cout<<"\n===Vtorie granichnie usloviya===" << endl;
        cout<<"\n";        
        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(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        cout<<"\n===Podschet massiva===" << endl;
        cout<<"\n";         
        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);
                       else mas_U[i][j] = next;
                      }
                }
                if(max_pogr<=e||k>=10000)break;
        }
        for(i = 0; i < n; i ++)
        {
              for(j = 0; j < m; j ++)
              printf("%7.4f\t",mas_U[i][j]);
              printf("\n\n");
        }
 
    system("pause");
    
        return 0;
}
voral,
Огромное спасибо за помощь

Результат + Блок-схема(примерная)
Миниатюры
Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива.   Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива.  
Yandex
Объявления
06.06.2011, 21:56     Требуется написать код программы для расчета внутренних значений массива, если известны граничные значения массива.
Ответ Создать тему
Опции темы

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