Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
17:39
3791
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

АвторПаскаль
Прошу знающих людей помочь разобраться.
Задание1.
Имеются массивы чисел A(N), B(N). Составить из них N пар(a[i],b[j]) таким образом, чтобы сумма произведений пар была минимальна. Каждое a[i] и b[j] должно встречаться ровно в одной паре.
Вот набросал. Почему-то отвечает мне рядом нулей. И не ясно, как выполнить условие в последнем предложении задания.
Program z4;
const max=1000;
type mas=array[1..max] of integer;
var a,b,m:mas;
n,j,i,S,x:integer;
begin
readln(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n do readln(b[i]);
for i:=2 to n do
for j:=n downto i do
if m[j-2]>m[j] then
begin
x:=m[j-1];
m[j-1]:=m[j];
m[j]:=x;
end;
for i:=1 to n do write(m[i]:4);
writeln;
end.
for i:=2 to n do
for j:=n downto i do
if m[j-2]>m[j] then
begin
x:=m[j-1];
m[j-1]:=m[j];
m[j]:=x;
end;
for n downto i do write(m[i]);
sum:=0;
for i:=to n do
begin
write('+',a[i],'*',b[i]);
sum:=sum+a[i]*b[i];
end;
writeln('=',sum);
end.
[Сообщение удалено смотрителем rose25 // ]
Сори за возможные затупы. Давно не практиковался, и вообще жаворонок я. )
Заодно если можно подскажите, что сделать с таким заданием:

Дана последовательность целых чисел, среди которых нет одинаковых. Требуется вычеркнуть минимальное возможное количество чисел так, чтобы оставшиеся шли в порядке возрастания.
для RuslannN:
Бан. :(
Исключительно большое человеческое спасибо. )
Ну я примерно знаню как решить но на паскале немогу.Могу на С++ написать
а шибко они отличаются?
ну вообще-то да.Я написать на паскале немогу.Могу примерно сказать что надо делать а ты сам пиши как нить
актуально
1+. В 19 строке компилятор почему-то потребовал точку.
9: там вообще лишний end. три его - ессно требует . т.к. думает, что всё
плохо понял задание
но на php или js, думаю, решил бы
Блин... Паскалем со школы не пользовался... Побробую решить. Если что получится - выложу.
Ни чего не поняла, где задание масива m? Что он означает? Там же по ходу одни нули которые потом и выводятся.
разбирать чужие программы- неблагодарное дело. проще сделать самому и с нуля.
по делу- в паскале есть замечательная функция. ctrl+f7 наблюдение за переменными. вводим туда интересующие массивы и делаем программу по шагам. это лучший инструмент для отладки.

Каждое a[i] и b[j] должно встречаться ровно в одной паре. - то есть элементы не должны повторяться в конечном массиве. (некоторым элементам пара не найдется). но я в задание не вчитывался
1. Ввести масивы а и b (с чем ты уже справился)
2. Упорядочить один масив по возрастанию, второй по убыванию
3. Перемножить по порядковым номерам пары и сложить (это тоже есть)
4. Вывести результат (так же имеется)

Вся задача сводится к этим четырём пунктам
В целом нужно сделать как подсказывает Раздетая. Я так просто, прокомментить некоторые куски.

n,j,i,S,x:integer;

Нигде не используемая переменная S (при наличии не объявленной переменной sum) ;)

for i:=1 to n do write(m[i]:4);
writeln;
end.


Здесь какбы вывод неопределённого (почему - ниже) содержимого массива m и конец программы.

for i:=2 to n do
for j:=n downto i do
if m[j-2]>m[j] then
begin
x:=m[j-1];
m[j-1]:=m[j];
m[j]:=x;
end;


Массив m нигде ранее не заполнялся, с какими по твоему значениями работают эти циклы? Незнаю, как там в паскале, но он либо пуст, либо забит чёрте чем.

Вообще похоже на сортировку пузырьковым методом, значит двигался в правильном направлении)
[Сообщение удалено смотрителем rose25 // ]
Спасибо. Значит надо m заполнить. А с Дана последовательность целых чисел, среди которых нет одинаковых. Требуется вычеркнуть минимальное возможное количество чисел так, чтобы оставшиеся шли в порядке возрастания. можете чего подсказать?
М?
Значит надо m заполнить
Нужно упорядочить a и b, один по возрастанию, второй по убыванию. Затем перемножить соответствующие элементы. Массив m наверно для этих произведений и был создан.
1|2
К списку тем
2007-2025, онлайн игры HeroesWM