Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Нужна помощь!!! Рушиться мозг.
1
  1  Андрій Дудка, 24 июня 2013 г. 15:07:31
      j := j - 1;
  2  Андрій Дудка, 24 июня 2013 г. 15:05:50
      1. У вас изначально i = 0; j = n-1 - а не 1 и n соотвественно.
2. В вашей функции, в конце менять надо не i1, j1 - они локальные, а менять надо i, j :

if a[i1]>=a[j1] then begin t:=a[i1]; i:=i+1; end
else begin t:=a[j1]; j:=-1 end;

У себя не проверял, но думаю в етом ошыбка.
  3  Алексей Зуенок, 23 июня 2013 г. 23:43:32
      Решаю задачу 98 "Игра в числа"
Алгоритм простенький. Написал программу
var a:array[1..10000] of longint;
s1,s2,k,n,i,j,p:longint;

function max(var a:array of longint; var i1,j1: longint):longint;
var t:longint;
begin
if a[i1]>=a[j1] then begin t:=a[i1]; i1:=i1+1; end
else begin t:=a[j1]; j1:=j-1 end;
//writeln(a[i1],' ',a[j1],' ',t);
max:=t
end;

begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);

for i:=1 to n do
read(a[i]);
s1:=0;
s2:=0;
i:=0;
j:=n-1;
for k:=1 to n do
if k mod 2=1 then s1:=s1+max(a,i,j) else s2:=s2+max(a,i,j);
write(s1,':',s2);
close(output)
end.

Долго выдавала неверный результат. Выяснил причину: при передаче параметров i, j в функцию они самопроизвольно увеличивались на 1 (изначально i=1,j=n). В чем может быть причина?
P.S. не первая задача где параметры самопроизвольно изменяют свое значение.
Может кто знает причину сего неподобства?
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru