Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Матрица
#1
Есть двумерный массив 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 раз не годится, нужен целый массив (без такой обманки с выводом Smile )

у кого есть какие идеи? просьба помочь...
Язык Java, C/C++ - не принципиально (но нужно под C/C++), главное - алгоритм...
Ответ
#2
Код:
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;
   }
}
http://fw-tm.ru/ - Разработка эмулятора Goddess of Destruction
Ответ
#3
if(j=d_column)
только наверное ==

Добавлено через 5 минут
и если можно, без указателей.
Ответ
#4
Код:
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++;
}
http://fw-tm.ru/ - Разработка эмулятора Goddess of Destruction
Ответ
#5
и где же тут задействован первый массив?
Ответ
#6
Исправил в предыдущем посте
http://fw-tm.ru/ - Разработка эмулятора Goddess of Destruction
Ответ
#7
[Изображение: 1336482625-clip-2kb.png]
Ответ
#8
Код:
    Console::WriteLine(L"\nПосле:");
    for(i=0;i<SIZE[color=Red]-1[/color];i++)
    {
        for(j=0;j<SIZE[color=red]-1[/color];j++)
        {
            printf("%d ", mas2[i][j]);
        }
        printf("\n");
    }

Вот так поробуйте
http://fw-tm.ru/ - Разработка эмулятора Goddess of Destruction
Ответ
#9
вообще жесть какая-то получается Smile
[Изображение: 1336489658-clip-2kb.png]
Ответ
#10
Код:
#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;
}
http://fw-tm.ru/ - Разработка эмулятора Goddess of Destruction
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)