Pascal:одномер. и двумерн. массивы

Ответить
xxBOBAHxx
Сообщения: 8
Зарегистрирован: 19 окт 2008, 21:28

1.Создать массив целых чисел R[1..n], содержащий серии чисел разделенных нулями. Отсортировать массив по возрастанию сумм чисел в сериях.


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


P.S:помогите оч нужно, не то до свидания институт и привет АРМИЯ((
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

1.

считаете суммы серий, циклом с условием от 0 до следующего нуля.
while a<>0 then
записываете суммы в отдельный массив.
сортировку ищите Здесь.
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

2. Если нумерация идет от 0 до N, то элементы, лежащие на диагонали, параллельной побочной, имеют индексы i и N-i+k, k изменяется от -N до N, в зависимости от номера диагонали. Прогоняем цикл по k, суммируем все элементы с нужным индексом. Не забываем проверять, чтобы N-i+k было не больше N и не меньше 0
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
xxBOBAHxx
Сообщения: 8
Зарегистрирован: 19 окт 2008, 21:28

1.uses crt;
const n=30;
var a,s, g:array[1..n] of integer;
i, h, k, c:integer;
priz:boolean;
begin clrscr;
randomize;
for i:=1 to n do
begin a:=-10+random(20);
write(a, ' ');
end;
s:=0;
while a<>0 do
s:=s+a;
writeln(s, 'symma', i);
repeat dec(k);
priz:=true;
for i:=1 to k do
if s>s[i+1] then
begin
c:=s;
s[i]:=s[i+1];
s[i+1]:=c;
priz:=false;
end;
until priz;
writeln(' ', s[i]);
readkey
end.


Но ответы какие то корявые, что изменить то надо или исправить??Помогите пжл...
Ответить