1.Создать массив целых чисел R[1..n], содержащий серии чисел разделенных нулями. Отсортировать массив по возрастанию сумм чисел в сериях.
2.В матрице NxN определить суммы каждой диагонали параллельно побочной, включая её. Обнулить диагональ с максиамльной суммой.
P.S:помогите оч нужно, не то до свидания институт и привет АРМИЯ((
Pascal:одномер. и двумерн. массивы
-
- Сообщения: 296
- Зарегистрирован: 13 фев 2008, 20:10
- Откуда: Беларусь. Орша
- Контактная информация:
1.
считаете суммы серий, циклом с условием от 0 до следующего нуля.
while a<>0 then
записываете суммы в отдельный массив.
сортировку ищите Здесь.
считаете суммы серий, циклом с условием от 0 до следующего нуля.
while a<>0 then
записываете суммы в отдельный массив.
сортировку ищите Здесь.
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
2. Если нумерация идет от 0 до N, то элементы, лежащие на диагонали, параллельной побочной, имеют индексы i и N-i+k, k изменяется от -N до N, в зависимости от номера диагонали. Прогоняем цикл по k, суммируем все элементы с нужным индексом. Не забываем проверять, чтобы N-i+k было не больше N и не меньше 0
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
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.
Но ответы какие то корявые, что изменить то надо или исправить??Помогите пжл...
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.
Но ответы какие то корявые, что изменить то надо или исправить??Помогите пжл...