0 / 0 / 0
Регистрация: 25.01.2009
Сообщений: 9
|
|
1 | |
Слияние массивов в один упорядоченный массив28.01.2009, 09:41. Показов 4737. Ответов 4
Метки нет (Все метки)
Помогите.
Имеются три упорядоченных в порядке возрастания массива. Выполните слияние их в один упорядоченный массив.
0
|
28.01.2009, 09:41 | |
Ответы с готовыми решениями:
4
слияние двух упорядоченных массивов в один упорядоченный Слияние двух упорядоченных списков в один упорядоченный Слияние массивов в один массив по убыванию Программа для объединения двух упорядоченных линейных массивов в один упорядоченный |
35 / 35 / 6
Регистрация: 01.01.2009
Сообщений: 141
|
|
28.01.2009, 09:57 | 2 |
Ну тут нужно цикл организовать. Проверяются три крайних числа. Какое меньше, такое и записываем в новый массив, а число затираем (или удаляем).
А можно просто все запихнуть в один массив и отсортировать8).
0
|
0 / 0 / 0
Регистрация: 25.01.2009
Сообщений: 9
|
|
29.01.2009, 19:43 [ТС] | 3 |
Может с решением поможите?
0
|
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
|
|
29.01.2009, 21:04 | 4 |
AlexQ, хм, ты думаешь так всё просто ?
нужно организовать цикл с использованием while, в котором будут заданы условия окончания 3-х массивов, а вот внутри него делать проверку на то какое меньшее и кстати для каждого массива нужен свой "указатель" (я имею ввиду типа a[i] b[j] m[k]) и изменять эти указатели... Ещё надо не забыть сделать проверку на то, что массивы упорядоченны по возврастанию, прога по сути простая... Добавлено через 1 час 7 минут 58 секунд Короче держи свою программу, до конца не тестил, посмотришь, если что не так напишешь тут... Код
Program xa; var a,b,c:array[1..100] of integer; d:array[1..300] of integer; i,k,l, m,n,h,de:integer; p:array[1..3] of boolean; begin repeat Writeln('BBedute kolu4ectBo eleMeHToB B 1-om MaccuBe'); readln(m); Writeln('BBedute cam MaccuB'); for i:=1 to m do begin Write('A[' ,i, ']='); readln(a[i]); end; writeln; Writeln('BBedute kolu4ectBo eleMeHToB B 2-om MaccuBe'); readln(n); Writeln('BBedute cam MaccuB'); for k:=1 to n do begin Write('b[' ,k, ']='); readln(b[k]); end; writeln; Writeln('BBedute kolu4ectBo eleMeHToB B 3-em MaccuBe'); readln(h); Writeln('BBedute cam MaccuB'); for l:=1 to h do begin Write('c[' ,l, ']='); readln(c[l]); end; writeln; for i:=1 to 3 do p[i]:=true; i:=1; k:=1; l:=1; while ((i<=m) or (k<=n) or (l<=h)) and (p[1] and p[2] and p[3]) do begin if (a[i]>a[i+1]) and (i<m) then p[1]:=false else inc(i); if (b[k]>b[k+1]) and (k<n) then p[2]:=false else inc(k); if (c[l]>c[l+1]) and (l<h) then p[3]:=false else inc(l) end; until p[1] and p[2] and p[3]; Writeln; Writeln('MaccuBbl do Clu9Hu9'); for i:=1 to m do Write(a[i], ' '); Writeln; for i:=1 to n do Write(b[i], ' '); Writeln; for i:=1 to h do Write(c[i], ' '); i:=1; k:=1; l:=1; de:=1; while (i<=m) or (k<=n) or (l<=h) do begin if (i<=m) and (k<=n) and (l<=h) then begin if a[i]<b[k] then if a[i]<c[l] then begin d[de]:=a[i]; inc(de); inc(i) end else begin d[de]:=c[l]; inc(de); inc(l) end else if b[k]<c[l] then begin d[de]:=b[k]; inc(de); inc(k) end else if c[l]<b[k] then begin d[de]:=c[l]; inc(de); inc(l) end else begin d[de]:=a[i]; inc(de); inc(i) end; end else if (i<=m) and (k<=n) and (l>h) then begin if a[i]<b[k] then begin d[de]:=a[i]; inc(de); inc(i) end else if b[k]>a[i] then begin d[de]:=b[k]; inc(de); inc(k) end else begin d[de]:=a[i]; inc(de); inc(i) end end else if (i<=m) and (k>n) and (l<=h) then begin if a[i]<c[l] then begin d[de]:=a[i]; inc(de); inc(i) end else if c[l]>a[i] then begin d[de]:=c[l]; inc(de); inc(l) end else begin d[de]:=a[i]; inc(de); inc(i) end end else if (i>m) and (k<=n) and (l<=h) then begin if b[k]<c[l] then begin d[de]:=b[k]; inc(de); inc(k) end else if c[l]>b[k] then begin d[de]:=c[l]; inc(de); inc(l) end else begin d[de]:=b[k]; inc(de); inc(k) end end else if (i>m) and (k<=n) and (l>h) then begin d[de]:=b[k]; inc(k); inc(de) end else if (i>m) and (k>n) and (l<=h) then begin d[de]:=c[l]; inc(l); inc(de) end else if (i<=m) and (k>n) and (l>h) then begin d[de]:=a[i]; inc(i); inc(de) end end; Writeln; Writeln; Writeln('noLy4uBLLieUc9 maCCub'); for i:=1 to de-1 do Write(d[i], ' '); readln; end. Комментарии не писал, т.к. там одни if-ы, не вижу смысла расписывать что они означают в данный момент, захочешь разберёшься
0
|
35 / 35 / 6
Регистрация: 01.01.2009
Сообщений: 141
|
|
29.01.2009, 23:06 | 5 |
Я не сказал, что все так просто, я лишь предложил варианты решения. Хотя, хочу сказать, что тут больше времени уйдет, чем напряга мозга (особенно если просто объединить все в массив и отсортировать). Тут другое дело, на какую тему задача.
0
|
29.01.2009, 23:06 | |
29.01.2009, 23:06 | |
Помогаю со студенческими работами здесь
5
Слияние массивов в упорядоченный массив Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию Получить за один просмотр упорядоченный массив С(К), путем слияния упорядоченных массивов A(N) и B(M) Выполнить слияние упорядоченного и неупорядоченного массивов в упорядоченный Слияние 2х массивов в один с сортировкой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |