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

двумерный массив - C++

Восстановить пароль Регистрация
 
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
11.01.2009, 21:52     двумерный массив #1
вообщем программа задает матрицу 12х12 разбивает ее на квадраты 3х3 и в центральный элемент каждого квадрата вписывает сумму остальных элементов.
вот собственно код:
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
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
 
//    сгенерировать матрицу размером 12х12
//    заполнить ее случайными вещественными  числами из диапазона [-4,6]
//    разбить матрицу на квадраты размером 3х3
//    в центре каждого квадрата поместить  сумму остальных элементов квадрата.. 
 
int main()
{
    srand(unsigned(time(NULL)));
    int mas[12][12];
    int i, j, n, m;
    for (i = 0; i < 12; i++){
        for (j = 0; j < 12; j++){
            mas[i][j] = rand()%11 - 4;
            printf("%2d  ", mas[i][j]);
        }
        printf("\n");
    }
    for (n = 2; n < 12; n=n+3){
        for (m = 2; m < 12; m=m+3){
            mas[n-1][m-1] = mas[n-2][m-2] + mas[n-2][m-1] + mas[n-2][m] + mas[n-1][m-2] + mas[n-1][m] + mas[n][m-2] + mas[n][m-1] + mas[n][m];
        }
    }
    printf("\n%s\n","~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    for (i = 0; i < 12; i++){
        for (j = 0; j < 12; j++){
            printf("%2d  ", mas[i][j]);
        }
        printf("\n");
    }
   return 0;
}
а проблема вот в чем: помогите заменить эту длинную формулу на два цикла

Добавлено через 35 минут 0 секунд
а проблема вот в чем: помогите заменить эту mas[n-1][m-1] = mas[n-2][m-2] + mas[n-2][m-1] + mas[n-2][m] + mas[n-1][m-2] + mas[n-1][m] + mas[n][m-2] + mas[n][m-1] + mas[n][m];
длинную формулу на два цикла
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2009, 21:52     двумерный массив
Посмотрите здесь:

C++ Двумерный массив С++
C++ двумерный массив
Двумерный массив C++
Двумерный Массив C++
C++ Двумерный массив
C++ Двумерный массив
Двумерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
11.01.2009, 22:55     двумерный массив #2
Если вас тебя утешит, оптимизирующий компилятор, с большой вероятностью, раскроет цикл в такую формулу. Но,для красоты можно записать
Код
mas[n-1][m-1]=0;
for(int k=0;k< 3;k++) {
    for(int l=0;l<3;l++) mas[n-1][m-1]+=mas[n-2+k][m-2+l];
}
Как-нибудь так. Если я не ошибся в твоей нумерации

Добавлено через 1 минуту 10 секунд
P.S
замени n=n+3 на n+=3,pls

P.P.S Не забывай про теги кода больше.
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
11.01.2009, 23:06  [ТС]     двумерный массив #3
во втором цикле там i ведь должно быть?

Добавлено через 1 минуту 37 секунд
хорошо не буду забывать))

Добавлено через 5 минут 41 секунду
выводит на экран только одну матрицу....код подсчета должен ведь так выглядеть??
Код
for (n = 2; n < 12; n=+3){
        for (m = 2; m < 12; m=+3){
			mas[n-1][m-1]=0;
for( k=0;k< 3;k++) {
    for(  o = 0;o<3;o++) mas[n-1][m-1]+= mas[n-2+k][m-2+o];

				
			
		}
	}
}
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
11.01.2009, 23:09     двумерный массив #4
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
замени n=n+3 на n+=3,pls
сравни с тем,что у тебя)

Добавлено через 1 минуту 29 секунд
во втором цикле у меня l - L маленькая )
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
11.01.2009, 23:15  [ТС]     двумерный массив #5
выдает две матрицы... но криво вот например первый квадрат 6 -1 2
5 5 4
0 3 -2
а после циклов выдает -4 -4 -3
3 -3 6
6 -1 2 (( хотя должен быть 6 -1 2
5 17 4
0 3 -2
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
11.01.2009, 23:30     двумерный массив #6
Ох,я там глупость написал... в общем,держи код,работает
Код
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>

//    ñãåíåðèðîâàòü ìàòðèöó ðàçìåðîì 12õ12
//    çàïîëíèòü åå ñëó÷àéíûìè âåùåñòâåííûìè  ÷èñëàìè èç äèàïàçîíà [-4,6]
//    ðàçáèòü ìàòðèöó íà êâàäðàòû ðàçìåðîì 3õ3
//    â öåíòðå êàæäîãî êâàäðàòà ïîìåñòèòü  ñóììó îñòàëüíûõ ýëåìåíòîâ êâàäðàòà.. 

int main()
{
    srand(unsigned(time(NULL)));
    int mas[12][12];
    int i, j, n, m,t;
    for (i = 0; i < 12; i++){
        for (j = 0; j < 12; j++){
            mas[i][j] = rand()%11 - 4;
            printf("%2d  ", mas[i][j]);
        }
        printf("\n");
    }
    for (n = 2; n < 12; n+=3){
        for (m = 2; m < 12; m+=3){
            t=0;
            for(int i=0;i<3;i++) 
                for ( int j =0;j<3;j++)
                    t+=mas[n-2+i][m-2+j];
            mas[n-1][m-1]= t-mas[n-1][m-1];
        }
    }
    printf("\n%s\n","~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~");
    for (i = 0; i < 12; i++){
        for (j = 0; j < 12; j++){
            printf("%2d  ", mas[i][j]);
        }
        printf("\n");
    }
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2009, 23:36     двумерный массив
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
11.01.2009, 23:36  [ТС]     двумерный массив #7
огромное тебе спасибо)))
Yandex
Объявления
11.01.2009, 23:36     двумерный массив
Ответ Создать тему
Опции темы

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