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

Удаление строк и столбцов массива - C++

Восстановить пароль Регистрация
 
Tep4k111
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 18
15.04.2014, 18:10     Удаление строк и столбцов массива #1
Помогите написать данную задачу..

Вот собственно условие самой задачи:

Удалить все строки и столбцы, на пересечении которых стоят отрицательные элементы.

Вот мой код:

C++ (Qt)
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
95
96
97
98
99
100
101
102
103
104
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
 
void Data_Print (int array [3] [3], int n);
void Zeroing (int array [3] [3], int n);
void Searching_String (int array [3] [3], int n, int x);
void Delete_String (int array [3] [3], int n, int x);
void Delete_Column (int array [3] [3], int n, int y);
 
int main()
{
 randomize();
 printf("\n\nMatrix :\n");
 int n = 3;
 int array [3] [3];
 int i = 0, j = 0, x = 0, y = 0;
 Data_Print (array, n);
 Zeroing (array, n);
 Searching_String (array, n, x);
 Delete_String (array, n, x);
 Delete_Column (array, n, y);
 getch();
 clrscr();
 return 0;
}
 
 void Data_Print (int array [3] [3], int n)
 {
 printf("\n Ishodnaia matrica");
 printf("\n");
 for (int i = 0; i < n; i++)
  {
  for (int j = 0; j < n; j++)
  {
   array [i] [j] = rand () % 20 - 5;
    printf ("%d\t", array [i] [j]);
    }
   printf ("\n");
  }
 }
 void Zeroing (int array [3] [3], int n)
 {
  int x, y;
  for (int i = 0; i < n; i++)
   {
    for (int j = 0; j < n; j++)
    {
     if (array [i] [j] < 0)
      {
       array [i] [j] = 0;
       x = i;
       y = j;
      }
    }
  }
  cout << endl << "x = " << x << "\ny = " << y << endl;
 }
 
 void Searching_String (int array [3] [3], int n, int x)
 {
  printf ("\n Matrica bez ctroki");
  printf ("\n");
  while (array [3] [3] < 0)
  {
  for (int i = 0; i < x; i++)
   {
    for (int j = 0; j < n; j++)
     {
      array [i] [j] = array [i] [j];
      printf ("%d\t", array [i] [j]);
     }
    printf ("\n");
   }
 }}
 
 void Delete_String (int array [3] [3], int n, int x)
 {
  for (int i = x; i < n - 1; i++)
   {
    for (int j = 0; j < n; j++)
     {
      array [i] [j] = array [i+1] [j];
      printf ("%d\t", array [i] [j]);
     }
    printf("\n");
   }
  }
 
 void Delete_Column (int array [3] [3], int n, int y)
 {
  printf ("\n Matrica bez stroki i bez stolbca");
  printf ("\n");
  for (int i = 0; i < n; i++)
   {
    for (int j = y; j < n - 1; j++)
     {
      array [i] [j] = array [i] [j+1];
      printf ("%d\t", array [i] [j]);
     }
    printf("\n");
   }
  }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,476
15.04.2014, 20:34     Удаление строк и столбцов массива #2
И где тут удаление? Как оно должно реализовываться, с уменьшением размера самого массива или просто сдвигом строк и столбцов вверх? Надо тогда хранить текущее количество строк и столбцов.
Tep4k111
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 18
15.04.2014, 20:53  [ТС]     Удаление строк и столбцов массива #3
Я думал просто не выводить ту строку и тот столбец, в котором есть отрицательный элемент
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
15.04.2014, 21:50     Удаление строк и столбцов массива #4
Tep4k111, тогда это не будет считаться удалением. Если сдаете преподавателю, то он эту фишку быстро "отрежет". Простой вывод с исключением, тогда не проканает. Сначала уточните, что именно Вы хотите сделать.
Tep4k111
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 18
15.04.2014, 21:58  [ТС]     Удаление строк и столбцов массива #5
Я может быть чего то не понимаю. Объясните что вы понимаете под "удалением"...Это я так понял.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
15.04.2014, 22:06     Удаление строк и столбцов массива #6
Цитата Сообщение от Tep4k111 Посмотреть сообщение
Удалить все строки и столбцы, на пересечении которых стоят отрицательные элементы.
Я понял это так:
матрица: допустим 5-5

1 2 3 4 5
4 5 6 6 7
5 5 5 -6 5
6 6 6 6 6
-4 5 6 0 9

Функция удаляет ненужные элементы в массиве:

2 3 5
5 6 7
6 6 6

получили матрицу 3x3. Это если удаляются все строки и столбцы на пересечении.
Tep4k111
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 18
15.04.2014, 22:11  [ТС]     Удаление строк и столбцов массива #7
Я это и пытался реализовать.. но не получается
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 17:39     Удаление строк и столбцов массива
Еще ссылки по теме:

C++ Динамические массивы, удаление строк/столбцов
C++ Дописать код о удаление строк и столбцов с матрицы
C++ Необходимо грамотное отсечение столбцов и строк двумерного массива!

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

Или воспользуйтесь поиском по форуму:
Tep4k111
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 18
24.04.2014, 17:39  [ТС]     Удаление строк и столбцов массива #8
Помогите пожалуйста. Я до сих пор не могу написать.

Вот то, что у меня есть.

C++ (Qt)
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
95
96
97
98
99
100
101
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
 
int x, y;
 
void Data (int array [10] [10], int n, int m);
void Print (int array [10] [10], int n, int m);
void Delete_String (int array [10] [10], int &n, int &m, int x);
int Search (int array [10] [10], int n, int m);
void Delete_Column (int array [10] [10], int &n, int &m, int y);
 
int main ()
{
 randomize ();
 int n, m;
 cout << "Enter n: ";
 cin >> n;
 cout << "Enter m: ";
 cin >> m;
 int array [10] [10];
 Data (array, n, m);
 Print (array, n, m);
 Search (array, n, m);
 cout << endl << "\nDelete_String:";
 Delete_String (array, n, m, x);
 Print (array, n, m);
 cout << endl << "\nMatrica bez stroki i bez stolbca";
 printf ("\n");
 Delete_Column (array, n, m, y);
 Print (array, n, m);
 getch();
 clrscr();
 return 0;
}
 
 void Data (int array [10] [10], int n, int m)
 {
 for (int i = 0; i < n; i++)
  {
  for (int j = 0; j < m; j++)
   {
    array [i] [j] = rand () % 20 - 10;
   }
  }
 }
 
 void Print (int array [10] [10], int n, int m)
 {
 for (int i = 0; i < n; i++)
  {
   cout << endl;
   for (int j = 0; j < m; j++)
    {
     cout << array [i] [j] << "        ";
    }
  }
 }
 
 int Search (int array [10] [10], int n, int m)
 {
  for (int i = 0; i < n; i++)
   {
    for (int j = 0; j < m; j++)
     {
      if (array [j] < 0)
       {
    x = i;
    y = j;
       }
     }
    cout << endl << "________________"<< endl << "\nx = " << x << endl << "y = " << y;
    return x, y;
   }
 }
 
 void Delete_String (int array [10] [10], int &n, int &m, int x)
 {
  cout << endl;
  for (int i = x; i < n; i++)
   {
    for (int j = 0; j < m; j++)
     {
      array [i] [j] = array [i+1] [j];
     }
   }
  n--;
 }
 
 void Delete_Column (int array [10] [10], int &n, int &m, int y)
 {
  for (int i = 0; i < n; i++)
   {
    for (int j = y; j < m; j++)
     {
       array [i] [j] = array [i] [j+1];
     }
   }
  m--;
 }
не получается у меня реализовать правильное удаление. Когда у меня отрицательный элемент в первой строке, то удаляет всё без проблем, но когда во 2-ой и т.д. То он тупо удаляет первую строку. Помогите пожалуйста, завтра надо сдать уже.
Yandex
Объявления
24.04.2014, 17:39     Удаление строк и столбцов массива
Ответ Создать тему
Опции темы

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