Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Двумерный массив на С++

Ромик Ромик Ученик (115), закрыт 12 лет назад
Написать программу, заполняющую двумерный массив a[50][3] случайными значениями (от -18 до 0 (целые) ) и выполняющую над ним преобразования (каждый элемент является среднеарифметическим своих соседей) . Осуществить вывод на экран содержимого массива и результата вычислений.
Дополнен 12 лет назад
Непонятно как записать вычисление среднеарифметического соседей
Дополнен 12 лет назад
Соседи по вертикали или горизонтали
Дополнен 12 лет назад
А если в двумерном пространстве?
Дополнен 12 лет назад
=Serge=, это я понял. У меня возникли проблемы с записью этого в программе.
Лучший ответ
kaiu Высший разум (120172) 12 лет назад
Это задание кому?
Таких заданий полно из задачника и смысл их решать только для обучения. Так что тебе не понятно?
Соседи в двумерном пространстве или одномерном построчно? :)
От этого тоже видишь зависит.

Если построчно, то:
for(i = 0; i < 50; i++ ) {
a0 = (a[ i ][0] + a[ i ][1]) / 2;
a1 = (a[ i ][0] + a[ i ][1] + a[ i ][2]) / 3;
a2 = (a[ i ][1] + a[ i ][2]) / 2;
a[ i ][0] = a0;
a[ i ][1] = a1;
a[ i ][2] = a2;
}

C вертикалью подобно, но так как массив небольшой то я бы завел еще один массив под преобразования:
int mas[50][3];
double masP[50][3];
int s, n;
for(int i = 0; i < 50; i++){
for(int j = 0; j < 3; j++){
s = 0; n=1
if(i>0 && j>0) { s+=mas[ i-1 ][ j-1 ]; n++; }
if(i>0) { s+=mas[ i-1 ][ j ]; n++; }
if(i>0 && j<2) { s+=mas[ i-1 ][ j+1 ]; n++; }

if(j>0) { s+=mas[ i ][ j-1 ]; n++; }
s+=mas[ i ][ j ];
if(j<2) { s+=mas[ i ][ j+1 ]; n++; }

if(i<49 && j>0) { s+=mas[ i+1 ][ j-1 ]; n++; }
if(i<49) { s+=mas[ i+1 ][ j ]; n++; }
if(i<49 && j<2) { s+=mas[ i+1 ][ j+1 ]; n++; }

masP[ i ][ j ] = (double)s / n;
}
}

Вот чтот такое.
Остальные ответы
=Serge= Просветленный (36146) 12 лет назад
Среднеарифметическое целых величин уже крайне редко будет целое. Так что делайте выводы. При этом подсчет ведется так: например элемент a[48][1] =(a[48][0]+a[48][2]+a[47][1]+a[49][1])/4.
Ну для внутренних областей будет так:
for (int i =1;i<49;i++)
{
arr[ i ] [ 0] =(arr[i-1][0]+arr[ i ] [1]+arr[i+1][0])/3;
arr[ i ] [ 1]= (arr [i ][0]+arr[ i-1] [1]+arr[i+1][1]+arr [ i ][2])/4;
arr[ i ] [ 2] =(arr[i-1][2]+arr[i ] [1]+arr[i+1][2])/3;
}
Похожие вопросы