Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   Матрица (https://forum.zone-game.info/showthread.php?t=19867)

Jokko 08.05.2012 08:18

Матрица
 
Есть двумерный массив mas1[SIZE][SIZE] и mas2[SIZE-1][SIZE-1]
при чём известен mas1[SIZE][SIZE]
и нужно скопировать из mas1 в mas2 все элементы, кроме столбика d_column и строчки d_line
то есть например
SIZE=4//константой
mas1[SIZE][SIZE]=
{
9 8 7 6
5 4 3 2
1 0 9 8
9 8 7 6
}
d_column=2
d_line=3
получаем mas2[3][3] (то есть [SIZE-1][SIZE-1]:
9 7 6
5 3 2
9 7 6

можно организвать перенос в цикле из 1 массива во 2, кроме этих чисел.
или переместить в конец с помощью 3-ей переменной (например temp) меняя местами с последующим элементом. а потом как удалить последнии элементы? вывод SIZE-1 раз не годится, нужен целый массив (без такой обманки с выводом :) )

у кого есть какие идеи? просьба помочь...
Язык Java, C/C++ - не принципиально (но нужно под C/C++), главное - алгоритм...

Neiwick 08.05.2012 08:26

Re: Матрица
 
Код:

mas2 = new int[SIZE-1][SIZE-1];
int a=0, b=0;
for(int i=0; i < SIZE; ++i)
{
  if(i == d_line)
      continue;
  mas2[a++] = new int[SIZE - 1];
  for(int j = 0; j < SIZE; ++j)
  {
        if(j == d_column)
          continue;
        mas2[a][b++] = j;
  }
}


Jokko 08.05.2012 08:29

Re: Матрица
 
if(j=d_column)
только наверное ==

Добавлено через 5 минут
и если можно, без указателей.

Neiwick 08.05.2012 08:51

Re: Матрица
 
Код:

int mas2[SIZE-1][SIZE-1];
int a=0, b=0;
for(int i=0; i < SIZE; ++i)
{
  if(i == d_line)
      continue;
  for(int j = 0; j < SIZE; ++j)
  {
        if(j == d_column)
          continue;
        mas2[a][b++] = mas1[i][j];
  }
  a++;
}


Jokko 08.05.2012 08:58

Re: Матрица
 
и где же тут задействован первый массив?

Neiwick 08.05.2012 09:13

Re: Матрица
 
Исправил в предыдущем посте

Jokko 08.05.2012 16:11

Re: Матрица
 
http://clip2net.com/clip/m89990/1336482625-clip-2kb.png
:
Свернуть ↑Развернуть ↓

Neiwick 08.05.2012 16:32

Re: Матрица
 
Код:

        Console::WriteLine(L"\nПосле:");
        for(i=0;i<SIZE-1;i++)
        {
                for(j=0;j<SIZE-1;j++)
                {
                        printf("%d ", mas2[i][j]);
                }
                printf("\n");
        }

Вот так поробуйте

Jokko 08.05.2012 18:07

Re: Матрица
 
вообще жесть какая-то получается :)
http://clip2net.com/clip/m89990/1336489658-clip-2kb.png

Neiwick 08.05.2012 18:23

Re: Матрица
 
Код:

#include "stdafx.h"
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
#define SIZE 4

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
        int mas1[SIZE][SIZE],i,j;
        cout << "До:" << endl;
        for(i=0;i<SIZE;i++)
        {
                for(j=0;j<SIZE;j++)
                {
                        mas1[i][j]=rand()%100;
                        printf("%d ", mas1[i][j]);
                }
                printf("\n");
        }

        int d_line=2, d_column=2;
        d_line--, d_column--;

        int mas2[SIZE-1][SIZE-1];
        int a=0, b;
        for(int i=0; i < SIZE; i++)
        {
                if(i == d_line)
                        continue;
                b=0;
                for(int j = 0; j < SIZE; j++)
                {
                        if(j == d_column)
                                continue;
                        mas2[a][b++] = mas1[i][j];
                }
                a++;
        }
       
        cout<< "После:" << endl;
        for(i=0;i<SIZE-1;i++)
        {
                for(j=0;j<SIZE-1;j++)
                {
                        printf("%d ", mas2[i][j]);
                }
                printf("\n");
        }
        _getch();
        return 0;
}



Текущее время: 01:21. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot