Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 15.12.2012
Сообщений: 9

Задачи на удаление строк и столбцов двумерного массива

15.12.2012, 18:31. Показов 2441. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Удалить из массива все столбцы, в которых встречаются ровно два минимальных элемента.
2. Удалить все строки массива, в которых нет отрицательного элемента.


Брался пока только за 2 задачу, НО она почему то, во первых, то работает то не работает, во вторых, я так и не понял, как НЕ выводить удаленные строки. Функцию Delete я взял из учебного пособия. Все массивы, пока что, 5 на 5.
Pascal
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
program udalenie;
 
uses crt;
 
type
  mas = array [1..5, 1..5] of integer;
 
var
  i, j : integer;
  m : mas;
 
function otmat(var m : mas; i : integer) : boolean;    {Посылаем массив и номер строки}
var
  j, sa, s : integer;
begin
  s:=0; sa:=0;
  for j:=1 to 5 do begin
    s:=s+m[i, j];             {Считаем сумму элементов строки}
    sa:=sa+ABS(m[i, j]);  {Считает сумму модулей элементов строки}
  end;
  if s=sa then                {Если эти переменные равны, то все элементы в строке положительные}
    otmat:=true;            {Присваиваем True}
end;
 
procedure delete(k1 : integer; Var x : mas);
var
  i, j : integer;
begin
  for i:= k1 to 4 do
    for j:=1 to 5 do
      x[i, j]:=x[i+1, j];
  for j:=1 to 5 do
    x[5, j] :=0;
end;
 
begin
  clrscr;
  randomize;
  for i:=1 to 5 do
    for j:=1 to 5 do
      m[i, j]:=random(10)-2;
  writeln('Your massive: ');
  for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5 do
      write(m[i, j], ' ');
  end;
  writeln;
  for i:=1 to 5 do
    if otmat(m, i)=true then   {Если в строке все элементы положительные, }
      delete(i, m);                {То удаляем эту строку}
  writeln;
  writeln('Your massive: ');
  for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5 do
      write(m[i, j], ' ');
  end;
  readln;
end.
Подскажите хотя бы, что здесь не правильно, что надо исправить.
Спасибо, заранее (:
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2012, 18:31
Ответы с готовыми решениями:

Перестановка местами столбцов и строк двумерного массива
Задача такая - путем перестановки столбцов и строк в двумерном массиве надо сделать так, чтобы максимальный элемент оказался в верхнем...

Определить номера строк и столбцов двумерного массива
Определить номера строк и столбцов двумерного массива, которые равны между собой. что-то я туплю с это прогой...

удаление строк из двумерного массива
помогите написать программу с помощью процедур из 2-х матриц порядка N удалить строки которые совпадают в обоих матрицах.

2
 Аватар для ermolay
3451 / 2389 / 2135
Регистрация: 04.12.2011
Сообщений: 3,966
15.12.2012, 20:15
строку 49 поменяйте на это:
Pascal
1
for i:=5 downto 1 do
представь, что положительные у тебя 2 и 3 строка. Проходя сверху вниз программа "видит", что 2-я строка положительная и удаляет ее, потом принимается за 3-ю строку, но на месте 3-й уже стоит бывшая 4-я, отрицательная. Это можно избежать проходя массив снизу вверх.


Цитата Сообщение от Karen_fs Посмотреть сообщение
как НЕ выводить удаленные строки
уменьшать число выводимых строк. Если удалены 2 строки - выводить массив
Pascal
1
2
for i:=1 to 3
  for j:=1 to 5
Добавлено через 2 минуты
сделать это можно, введя переменную, подсчитывающую количество удаляемых строк, например k
Pascal
1
2
for i:=1 to 5-k do
  for j:=1 to 5 do
1
0 / 0 / 1
Регистрация: 15.12.2012
Сообщений: 9
16.12.2012, 20:55  [ТС]
Спасибо большое.
Было бы не плохо, если бы Вы подсказали ошибку во второй задаче (:
Здесь, я думаю, основная проблема в процедуре удаления столбцов. Во всех справочниках написано, что она аналогична удалению строк. Но, т.к. это не совсем так, я переделал её так, как я понял.
Всё объяснение закомментировано.

Pascal
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
program udalenie_stolb;
 
uses crt;
 
type
  mas = array [1..5, 1..5] of integer;
 
var
  i, j, k : integer;
  m : mas;
 
function mi2(m : mas; j : integer) : boolean; {Посылаем массив и номер столбца}
var
  i, min, k : integer;
  tf : boolean;
begin
  tf:=false; min:=0; k:=0;
  for i:=1 to 5 do            
    if m[j, i]<min then
      min:=m[j, i];                       {Ищем минимальный элемент в столбце}
  for i:=1 to 5 do
    if m[j, i]=min then                  {Считаем кол-во минимальных элементов в столбце}
      inc(k);
  if k=2 then
    tf:=true;
  mi2:=tf;
end;
 
procedure delete(k1 : integer; Var x : mas);
var
  i, j : integer;
begin
  for j:= k1 to 4 do
    for i:=1 to 5 do
      x[j, i]:=x[j+1, i];
  for j:=1 to 5 do
    x[j, 5] :=0;
end;
 
begin
  clrscr;
  randomize;
  for i:=1 to 5 do
    for j:=1 to 5 do
      m[i, j]:=random(10)-2;
  writeln('Your massive: ');
  for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5 do
      write(m[i, j], ' ');
  end;
  writeln;
  k:=0;
  for j:=1 to 5 do
    if mi2(m, j)=true then begin
      delete(j, m);
      inc(k);
    end;
  writeln;
  writeln('Your massive: ');
  for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5-k do
      write(m[i, j], ' ');
  end;
  readln;
end.
Думаю, всё таки ошибка здесь:
Pascal
1
2
3
4
5
6
7
8
9
10
procedure delete(k1 : integer; Var x : mas);
var
  i, j : integer;
begin
  for j:= k1 to 4 do
    for i:=1 to 5 do
      x[j, i]:=x[j+1, i];
  for j:=1 to 5 do
    x[j, 5] :=0;
end;
Миниатюры
Задачи на удаление строк и столбцов двумерного массива  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2012, 20:55
Помогаю со студенческими работами здесь

Удаление строк и столбцов матрицы
Дан двумерный массив. Нужно удалить строки и столбцы, на пересечении которых стоят отрицательные элементы. Буду очень благодарна,если...

Удаление строк и столбцов с минимальным элементом
Прошу помощи с задачей на языке Паскаль. Задано массив (3х5). Получить новый массив путем удаления из рядка и столбца в которых есть...

Минимальные элементы всех столбцов двумерного массива
Требуется определить, верно ли, что минимальные элементы всех столбцов находятся в разных строках массива.Размерность массива и значения...

Максимальные и минимальные элементы столбцов двумерного массива
В каждом столбце матрицы (6х3) найти максимальный элемент, среди них найти минимальный, определить его индекс

Подсчитать сумму строк двумерного массива и вывести в виде одномерного массива
Подсчитать сумму строк двумерного массива и вывести в виде одномерного массива. Не пойму как делать.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru