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

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

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

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



Сообщение: 1
ссылка на сообщение  Отправлено: 20.02.13 22:22. Заголовок: Чей алгоритм лучше?


Константин Юрьевич, проконсультируйте, пожалуйста. Решал такую задачу С4, различаются алгоритмы решения. Мой и предложенный. Какой лучше, и нет ли в моем решении ошибок? Спасибо!
Мой:
var
N, i, s, sum, max, count: integer;

begin
sum := 0; count := 0; max := 0;
writeln('Введите число показаний');
Readln(N);
for i := 1 to N do
begin
writeln('Введите показание');
readln(s);
if s > max then begin
max := s; sum := s; count := 1;
end
else if s = max then begin
sum := sum + s; count := count + 1;
end;
end;
Writeln(sum / count);
end.
Предложенный:
var
N, min, t, sum, i, mincount: integer;
ave: real;

begin
sum := 0;mincount := 1;
writeln('Введите число показаний');
Readln(N);
for i := 1 to N do
begin
writeln('Введите показание');
Readln(t);
sum := sum + t;
if i = 1 then min := t
else if t < min then begin
min := t; mincount := 1;
end else
if t = min then mincount := mincount + 1;
end;
ave := (sum - mincount * min) / (N - mincount);
end.
Задача:http://fastpic.ru/view/52/2013/0220/7209d2b908cf756e0aa396582e612f2a.jpg.html

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


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




Сообщение: 468
ссылка на сообщение  Отправлено: 21.02.13 06:45. Заголовок: Danko пишет: Какой л..


Danko пишет:
 цитата:
Какой лучше, и нет ли в моем решении ошибок?

Ваше решение всегда выдает максимальный элемент. Очевидно, что это неверно.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 21.02.13 20:59. Заголовок: То есть, необходимо ..


То есть, необходимо отбросить минимальное значение и находить ср.знач оставшихся чисел?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 470
ссылка на сообщение  Отправлено: 22.02.13 06:53. Заголовок: Danko пишет: необход..


Danko пишет:
 цитата:
необходимо отбросить минимальное значение и находить ср.знач оставшихся чисел?

Да. Только учесть, что значений, равных минимальному, может быть несколько.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
ссылка на сообщение  Отправлено: 23.02.13 19:21. Заголовок: Вот еще решал С4 из ..


Вот еще решал С4 из диагност. работы от 14 декабря 2012 г. На сколько "потянет" такое решение?
var
N, i, x, y, h, miny, maxy, h1, miny1, maxy1: integer;
s: string;
k, m: shortint;

begin
h := 0; h1 := 0; miny := 0; miny1 := 0; maxy := 0; maxy1 := 0; k := 1; m := 1;
readln(N);
for i := 1 to N do
begin
readln(s);
x := strtoint(copy(s, 1, pos(' ', s) - 1));
y := strtoint(copy(s, pos(' ', s) + 1, length(s) - pos(' ', s)));
if x = 0 then begin
if y > 0 then begin
if m = 1 then begin maxy := y; miny := y; m := 0; end else
if y > maxy then maxy := y else if y < miny then miny := y; end;
if y < 0 then begin
if k = 1 then begin maxy1 := y; miny1 := y; k := 0; end else
if y > maxy1 then maxy1 := y else if y < miny1 then miny1 := y; end;
end;
if (y > 0) and (x <> 0) then begin
if abs(x) > h then h := abs(x); end;
if (y < 0) and (x <> 0) then begin
if abs(x) > h1 then h1 := abs(x); end;
end;
if (((abs(maxy - miny)) / 2) * h) >= (((abs(maxy1 - miny1)) / 2) * h1) then
writeln(((abs(maxy - miny)) / 2) * h) else writeln(((abs(maxy1 - miny1)) / 2) * h1);
end.

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

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