Привет, Гость!
Главная
Вход

Последняя активность

Форум / Компы / Программирование
Поиск
  И снова йа
LockeD LockeD [Off] [#] (12.02.2012 / 18:38)
████████████ - сотри и прочитай мой статус
Маленький хлопчик потрапив до казкової країни й побачив там дорогу, уздовж якої розкладено мішечки з цукерками. На кожному мішечку написана кількість цукерок. Хлопчик може взяти в кожну руку по два мішечка, що лежать поряд.

1. Створіть програму, що знайде найбільшу кількість цукерок, яку зможе взяти хлопець.


Вхідні дані

Значення N - натуральне число не більше 100 (кількість мішечків з цукерками), вводиться з клавіатури або задається як константа;
значення Ri (i = 1, 2, ..., N) - натуральні числа не більше 1000 (кількість цукерок у кожному мішечку), вводяться з клавіатури або з файлу.

Вихідні дані (виводяться на екран)

Значення W- найбільша кількість цукерок, яку зможе узяти хлопець.
LockeD LockeD [Off] [#] (15.02.2012 / 19:23)
████████████ - сотри и прочитай мой статус
Маленький мальчик попал в сказачную страну и увидел и увидел там дорогу вдоль которой разложены мешочки с конфетами. На каждом мешочке написано количество конфет. Мальчик может взять в каждую руку по два мешочка, которые лежат рядом.
Создать программу которая найдет наибольшее колличество конфет которые может взять мальчик.
Входящие данные:
Значение N - натуральное число не более 100 (колличество мешочков с конфетами), вводится с клавиатуры или задается как константа;
Ri(i=1,2,...,N) - натуральные числа не более 1000 (колличество конфет в каждом мешочке) вводится с клавиатуры или из файла.
Исходящие данные:
Значение W - наибольшее колличество конфет, которую сможет взять мальчик.
Monk Monk [Off] [#] (15.02.2012 / 21:28)
Короче, поздно уже. Программа работает, но есть недоработки. Пока не знаю как их устранить. Держи то что есть. Пощитает правильно если мешки из наибольшим количеством конфет будут лежать не рядом)
program sweet;
var N, i, W, max11, max22, max1, max2: integer;
R: array [1..100] of integer;
begin
repeat
begin
write('write N ');
readln(N);
end;
until (N<100) and (N>0);
for i:=1 to N do
begin
repeat
begin
write ('R',i,' = ');
readln(R[i]);
end;
until (R[i]>0) and (R[i]<1000);
end;

if N = 1 then W:= R[1]
else if N = 2 then W:= R[1] + R[2]
else if N = 3 then W:= R[1] + R[2] + R[3]
else if N = 4 then W:= R[1] + R[2] + R[3] + R[4]
else
begin
if R[1]>R[2] then
begin
max1:= R[1];
max11:=R[2];
end
else
begin
max1:= R[2];
max11:=R[1];
end;

for i:=3 to N do
begin
if R[i] > max1 then
begin
max2:=max1;
max22:=max11;
max1:=R[i];
if i < N then
begin
if R[i+1]>R[i-1] then
max11:=R[i+1]
else
max11:=R[i-1];
end
else
max11:=R[i-1];
end;
end;

W:= max1 + max11 + max2 + max22;
end;
writeln('W = ',w);
end.
LockeD LockeD [Off] [#] (16.02.2012 / 13:57)
████████████ - сотри и прочитай мой статус
Monk (15.02.2012/21:28)
Короче, поздно уже. Программа работает, но есть недоработки. Пока не знаю как их устранить. Держи то что есть. Пощитает правильно если мешки из наибольшим количеством конфет будут лежать не рядом)
нипральнасчитаетчота
Monk Monk [Off] [#] (16.02.2012 / 14:27)
LockeD (16.02.2012/13:57)
нипральнасчитаетчота
йа говорил что нипральна будет. это тип пробный вариант. там есть недочет один. йа пока низная как его устранить. еще подумаю...
LockeD LockeD [Off] [#] (16.02.2012 / 14:37)
████████████ - сотри и прочитай мой статус
Monk (16.02.2012/14:27)
йа говорил что нипральна будет. это тип пробный вариант. там есть недочет один. йа пока низная как его устранить. еще подумаю...
окда жду
бозон_хиггса бозон_хиггса [Off] [#] (16.02.2012 / 15:59)
царь есть азмъ!!!
LockeD (16.02.2012/14:37)
окда жду
не жди а думай и устраняй недочот, в жизни надо учитса делать самому, и только поле того как научишса что либо делать сам начинай перепоручать )гг
Monk Monk [Off] [#] (16.02.2012 / 16:40)
Вроде теперь норм. если че не так, пешы

program sweet;
var N, n1, j, i, W, max11, max22, max1, max2: integer;
R: array [1..100] of integer;
begin
repeat
begin
write('write N ');
readln(N);
end;
until (N<100) and (N>0);
for i:=1 to N do
begin
repeat
begin
write ('R',i,' = ');
readln(R[i]);
end;
until (R[i]>0) and (R[i]<1000);
end;

if N = 1 then W:= R[1]
else if N = 2 then W:= R[1] + R[2]
else if N = 3 then W:= R[1] + R[2] + R[3]
else if N = 4 then W:= R[1] + R[2] + R[3] + R[4]
else
begin
if R[1]>R[2] then
begin
max1:= R[1];
max11:=R[2];
end
else
begin
max1:= R[2];
max11:=R[1];
end;
j:=2;
for i:=3 to N do
begin
if (R[i] > max1) and (i<>j) then
begin
max2:=max1;
max22:=max11;
max1:=R[i];
j:= i+1;
if i < N then
begin
if R[i+1]>R[i-1] then
max11:=R[i+1]
else
max11:=R[i-1];
end
else
max11:=R[i-1];
end;
end;

W:= max1 + max11 + max2 + max22;
end;
writeln('W = ',w);
end.
LockeD LockeD [Off] [#] (16.02.2012 / 17:12)
████████████ - сотри и прочитай мой статус
бозон_хиггса (16.02.2012/15:59)
не жди а думай и устраняй недочот, в жизни надо учитса делать самому, и только поле того как научишса что либо делать сам начинай перепоручать )гг
бозонянвеликейфилосаф
Я учусе, но ололо пыщ пыщ
LockeD LockeD [Off] [#] (16.02.2012 / 17:14)
████████████ - сотри и прочитай мой статус
Monk (16.02.2012/16:40)
Вроде теперь норм. если че не так, пешы

program sweet;
var N, n1, j, i, W, max11, max22, max1, max2: integer;
R: array [1..100] of integer;
begin
repeat
begin
write('write N ');
rea
окда сэнкс, черис часик тестану - отпишусе
LockeD LockeD [Off] [#] (16.02.2012 / 19:27)
████████████ - сотри и прочитай мой статус
Чота опять не правильно например при N=5 [5,5,5,5,5] -ответ должен быть 5, а программа получает 10 . . .
при N=20 [4 5 6 8 9 7 2 3 5 8 9 4 1 5 2 8 2 9 7 6] должно быть 34, а получаем 31
Monk Monk [Off] [#] (16.02.2012 / 19:34)
LockeD (16.02.2012/19:27)
Чота опять не правильно например при N=5 [5,5,5,5,5] -ответ должен быть 5, а программа получает 10 . . .
при N=20 [4 5 6 8 9 7 2 3 5 8 9 4 1 5 2 8 2 9 7 6] должно быть 34, а получаем 31
хуле если одни пятерки должно быть 5 !?
Программа должна выдать 20, ибо я считал так:
в одну руку 2 пакета, то есть всего 4 пакета, 2 из них самые большие и еще 2 тех что возле больших (по больше ессесно)
я не учел, что пакеты могут быть одинаковыми, поэтому выдало 10))
Monk Monk [Off] [#] (16.02.2012 / 19:44)
LockeD (16.02.2012/19:27)
Чота опять не правильно например при N=5 [5,5,5,5,5] -ответ должен быть 5, а программа получает 10 . . .
при N=20 [4 5 6 8 9 7 2 3 5 8 9 4 1 5 2 8 2 9 7 6] должно быть 34, а получаем 31
прост строгий знак сменил на не строгий Гг.
теперь при N=5 [5,5,5,5,5] ответ 20)

program sweet;
var N, n1, j, i, W, max11, max22, max1, max2: integer;
R: array [1..100] of integer;
begin
repeat
begin
write('write N ');
readln(N);
end;
until (N<100) and (N>0);
for i:=1 to N do
begin
repeat
begin
write ('R',i,' = ');
readln(R[i]);
end;
until (R[i]>0) and (R[i]<1000);
end;

if N = 1 then W:= R[1]
else if N = 2 then W:= R[1] + R[2]
else if N = 3 then W:= R[1] + R[2] + R[3]
else if N = 4 then W:= R[1] + R[2] + R[3] + R[4]
else
begin
if R[1]>R[2] then
begin
max1:= R[1];
max11:=R[2];
end
else
begin
max1:= R[2];
max11:=R[1];
end;
j:=2;
for i:=3 to N do
begin
if (R[i] >= max1) and (i<>j) then
begin
max2:=max1;
max22:=max11;
max1:=R[i];
j:= i+1;
if i < N then
begin
if R[i+1]>R[i-1] then
max11:=R[i+1]
else
max11:=R[i-1];
end
else
max11:=R[i-1];
end;
end;

W:= max1 + max11 + max2 + max22;
end;
writeln('W = ',w);
end.
Monk Monk [Off] [#] (16.02.2012 / 19:53)
со вторым случаем дела хуже... =(
короче смотри:
программа ищет число которое наибольшее вот попадаецца 8. до этого наибольшим считалось 6. 6 переписываецца во вторую руку, а 8 стает наибольшим. теперь берем соседние пакеты тот что был рядом с 6 идет в другую руку, а вот возле 8 было 5 и 9. ессесна берем 9! но пиздец в том, что 9 больше 8!!! теперь снова попадаюцца числа 8, 9. идет перемена. Но потом попадаецца 9, 7! и тут, блять, получаецца, что 9 больше 8(а 8 считалось наибольшим) и берецца пара 9 и 7. поэтому ответ программа у меня дала 33 вместо 34
LockeD LockeD [Off] [#] (16.02.2012 / 19:59)
████████████ - сотри и прочитай мой статус
Monk (16.02.2012/19:34)
хуле если одни пятерки должно быть 5 !?
Программа должна выдать 20, ибо я считал так:
в одну руку 2 пакета, то есть всего 4 пакета, 2 из них самые большие и еще 2 тех что возле больших (по больше ес
дада 20, зачипяталсе я
Monk Monk [Off] [#] (16.02.2012 / 20:36)
все. теперь верно.

program sweet;
var N, n1, j, i, W, max11, max22, max1, max2: integer;
R: array [1..100] of integer;
begin
repeat
begin
write('write N ');
readln(N);
end;
until (N<100) and (N>0);
for i:=1 to N do
begin
repeat
begin
write ('R',i,' = ');
readln(R[i]);
end;
until (R[i]>0) and (R[i]<1000);
end;

if N = 1 then W:= R[1]
else if N = 2 then W:= R[1] + R[2]
else if N = 3 then W:= R[1] + R[2] + R[3]
else if N = 4 then W:= R[1] + R[2] + R[3] + R[4]
else
begin
if R[1]>R[2] then
begin
max1:= R[1];
max11:=R[2];
end
else
begin
max1:= R[2];
max11:=R[1];
end;
j:=2;
for i:=3 to N do
begin
if ((R[i] > max1)or((R[i] = max1) and ((max11 <= R[i+1]) or (max11 <= R[i-1])))) and (i<>j) then
begin
max2:=max1;
max22:=max11;
max1:=R[i];
j:= i+1;
if i < N then
begin
if R[i+1]>R[i-1] then
begin
if R[i+1]>max1 then
begin
max1:=R[i+1];
max11:=R[i];
end
else
max11:=R[i+1]
end
else
begin
if R[i-1]>max1 then
begin
max1:=R[i-1];
max11:=R[i];
end
else
max11:=R[i-1]
end
end
else
max11:=R[i-1];
end;
end;

W:= max1 + max11 + max2 + max22;
end;
writeln('W = ',w);
end.
Monk Monk [Off] [#] (16.02.2012 / 20:39)
LockeD, обрати внимание на эту строку
if ((R > max1)or((R = max1) and ((max11 <= R[i+1]) or (max11 <= R[i-1])))) and (i<>j) then
Гг. прям мего отбор!
ну и помучился же я...
Но задачка все же крутая! прям на 5+
  Всего: 17

Фильтр по автору
Скачать тему

Форум

Новые вверху
0 / 35

Gazenwagen Gegenkulturelle Gemeinschaft