На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Не зарегистрирован
ссылка на сообщение  Отправлено: 10.05.17 20:07. Заголовок: Задание 48 c27


Здравствуйте, мне хочется узнать, будет ли программа написанная мной более эффективна, чем те, которые представлены в решении, т.к. я не использую массив и использую только один цикл.

var
score, score1, score2, score3, n, i: longint;
name, name1, name2, name3: string;

begin
readln(n);
for i := 1 to n do
begin
readln(score, name);
if score > score1 then begin
if name = name1 then begin
score1 := score;
name1 := name;
end
else
if name = name2 then begin
score2 := score1;
name2 := name1;
score1 := score;
name1 := name;
end
else
if (name <> name1) and (name <> name2) then begin
score3 := score2;
name3 := name2;
score2 := score1;
name2 := name1;
name1 := name;
score1 := score;
end;
end;
if (score > score2) and (score <= score1) then begin
if name = name2 then begin
score2 := score;
name2 := name;
end
else
if (name <> name2) and (name <> name1) then begin
score3 := score2;
name3 := name2;
score2 := score;
name2 := name;
end;
end;
if (score > score3) and (score <= score2) then
if (name <> name1) and (name <> name2) then begin
score3 := score;
name3 := name;
end;
end;
writeln('1 место', ' ', score1, ' ', name1);
writeln('2 место', ' ', score2, ' ', name2);
writeln('3 место', ' ', score3, ' ', name3);
end.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 1 [только новые]


Администратор




Сообщение: 1435
ссылка на сообщение  Отправлено: 11.05.17 10:58. Заголовок: elezbar пишет: Здрав..


elezbar пишет:
 цитата:
Здравствуйте, мне хочется узнать, будет ли программа написанная мной более эффективна, чем те, которые представлены в решении, т.к. я не использую массив и использую только один цикл.

Нет, не будет. Вы заменили массив из 3-х элементов на отдельные переменные, эффективность не повысилась, а возможности запутаться стало больше. По поводу цикла - и в приведенных решениях, и в вашем - один цикл из N шагов, остальные не зависят от N, то есть не влияют на оценку сложности алгоритма.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 1 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 601
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет