4 / 4 / 1
Регистрация: 14.10.2009
Сообщений: 20
1

Из массива A удалить те цепочки нечетных элементов, в которых нет ни одного элемента из массива B

14.10.2009, 22:59. Показов 1689. Ответов 6
Метки нет (Все метки)

Помогите пожайлуста с решением задачи:
Из массива A удалить те цепочки нечетных элементов,
в которых нет ни одного элемента из массива B.
Пример: массив A[10]: 3 2 7 5 2 1 2 6 3 9
массив B[5]: 1 2 5 4 8
Массив A после удаления примет вид:
A[7]: 2 7 5 2 1 2 6.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2009, 22:59
Ответы с готовыми решениями:

Удалить строку массива, в которой нет ни одного четного элемента
в чем ошибка? знаю, много переменных, думала, так будет удобнее type mass=array of integer;...

Из массива А удалить те цепочки четных элементов, в которых есть хотя бы один элемент из массива В
помогите, пожалуйста!!!! из массива А удалить те цепочки четных элементов, в которых есть хотя бы...

Из массива A удалить те цепочки нечетных элементов, в которых нет ни одного элемента из массива B
Пожалуйста помогите! Из массива A удалить те цепочки нечетных элементов, в которых нет ни...

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

6
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
15.10.2009, 09:46 2
не понятно условие.
нечетный эл-т массива А это что - элемент-нечетное число или эл-т с нечетным индексом?
в любом случае если число 7 у нас - и неч. число и неч. индекс в массиве А, и в массиве В "7" нет, а почему-то в результате есть?
0
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
15.10.2009, 09:50 3
Все верно в условии
цепочка 1 - 7 5 элемент 5 есть во втором массиве, не удаляем цепочку.
цепочка 2 - 3 9 этих элементов нет во втором массиве, удаляем.
0
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
15.10.2009, 10:05 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses crt;
var
a,b,c:array[1..10]of integer;
i,k,j:integer;
flag:boolean;
begin
flag:=false;
for i:=1 to 10 do begin
a[i]:=random(10);
b[i]:=random(100);end;
for i:=1 to 10 do begin
for j:=1 to 10 do begin
if a[i]=b[j] then flag:=true else flag:=false;
end;
if (a[i]mod 2<>0)and(not flag) then
begin
inc(k);
c[k]:=a[i];
end;
end;
for i:=1 to k do
write(c[i],' ');
end.
0
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
15.10.2009, 10:21 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
var A: array[1..n] of integer;
var B: array[1..m] of integer;
 
 function ProvB(el: integer; B: array...): boolean; // проверка вхождения числа el в массив B 
 begin  ProvB := false ;
          for j:=1 to m do 
               if  B[j] = el then begin ProvB := true; 
                                             break;
                                      end; 
  // если B предварительно отсортировать - можно оптимизировать поиск. 
 end; 
 
 procedure DelCepi(NachCepi, KonCepi: integer; var A: array...; var KolA: integer); // удалить цепочку из массива
 var j:integer;
 begin
       for J := KonCepi+1 to KolA do 
               A[j-(KonCepi-NachCepi)] := A[j];
       KolA := KolA - (KonCepi - NachCepi+1); // кол-во эл-тов в А уменьшилось
 end;
... 
  EstB := false; // признак того, что текущая цепочка пересекается с элементами B
  kolA :=  n;     // кол-во эл-тов в А - сначала исходное, потом после удаления цепочек м.б. меньше
  NachCepi := 0; KonCepi := 0; // начало и конец текущей цепочки
  i := 1;
  while i <= kolA do
  begin 
          if A[i] mod 2 = 1 then // начинаем или продолжаем цепочку нечетн. чисел
          begin 
               if NachCepi = 0 then NachCepi := i; 
               KonCepi := i;
               if not EstB then EstB := ProvB(A[i], B); // проверяем, есть ли в B хоть 1 эл-т. если хоть один из предыдущих эл-тов цепочки уже есть - то нечего и проверять дальше. 
          end 
          else  // четное - прекращаем цепочку, если она была и удовлетв условию - удаляем
          begin
               if (NachCepi >0) and not EstB then // была цепочка и нет пересечений с В
               begin
                  DelCepi(NachCepi, KonCepi, A, KolA);
                  i := i - (KonCepi - NachCepi+1);
               end;
               NachCepi := 0; KonCepi := 0; EstB := false;
          end ; 
          i := i+1;
  end;
 
  for i:= 1 to KolA do write(A[i], ' ');
0
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
15.10.2009, 10:25 6
Зачем все так усложнять...
0
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
15.10.2009, 10:42 7
я конечно забыла после цикла проверить последнюю цепочку.
наверняка можно и проще, но у Вас перебираются все эл-ты А , безо всяких цепочек,
и если эл-т нечетный и не входит в В, то он остается. а как же четные эл-ты - их тоже вычеркивать не надо. Далее - в примере есть цепочка 7, 5 - ее вычеркивать не надо, т.к. 2 эл-т цепочки = 5, есть в В. в Вашей программе вроде бы один эл-т цепочки попадет в результирующий массив, а другой - нет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2009, 10:42
Помогаю со студенческими работами здесь

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

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

Удалить все столбцы в которых нет нулевого элемента массива С++
Удалить все столбцы в которых нет нулевого элемента массива С++. #define _CRT_SECURE_NO_WARNINGS...

Даны два массива одного размера в которых нет нулевых элементов
Даны два массива одного размера в которых нет нулевых элементов. Получить третий массив, каждый...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru