IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача: Боулинг!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Женский

Репутация: -  0  +


Здравствуйте, у меня есть любопытная задача без решения. На первый взгляд кажется довольно легкой, но это только маскировка) Итак, задача про Боулинг. Выполняется только в Паскале.
Цель при игре в боулинг - сбить шаром максимальное количество кеглей. Партия в этой игре состоит из 10 туров. Задача игрока - сбить все 10 кеглей в каждом туре. Для этого игрок может совершить 2 броска шара, за исключением:
- если 10 кеглей сбиты первым броском, то второй бросок не совершается;
- если 10 кеглей сбиты первым броском в десятом туре, то игроку предоставляются два призовых броска, а если двумя бросками - один.
Количество очков в каждом туре равно количеству сбитых кеглей, кроме двух бросков, называемых "Strike" и "Spire".
Strike: игрок сбивает 10 кеглей первым броском, очки в этом туре начисляются из расчета: 10 + сумма очков за два предыдущих броска.
Spire: игрок сбивает 10 кеглей двумя бросками, очки в этом туре начисляются из расчета: 10 + сумма очков за один последующий бросок.
Результат партии складывается из результатов всех 10 туров.
Требуется написать программу, которая определит количество набранных игроком очков.

Входные данные

Входной файл INPUT.TXT содержит в первой строке одно натуральное число, определяющее кол-во совершенных бросков. Вторая строка содержит натуральные числа(разделенные пробелом), обозначающие количество сбитых кеглей за каждый совершенный бросок.

Выходные данные

Выходной файл OUTPUT.TXT должен содержать одно целое число - количество набранных игроком очков.

Примеры

Код
№    INPUT.TXT                                         OUTPUT.TXT1          
1    12                                         300            
    10 10 10 10 10 10 10 10 10 10 10 10          
2    15                                          173              
    10 10 10 8 2 10 3 4 8 2 4 5 10 4 5

Личное мнение:[u] я очень хочу решить эту задачу, но испытываю некоторые трудности, вы можете мне помочь с решением?
wub.gif

Сообщение отредактировано: Лисенок -


--------------------
Улыбнись миру и мир улыбнется тебе!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 227
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  3  +


Я попытаюсь, ничего не обещаю. Только не понял, что значит ''Выполняется только в Паскале''? Что ее на другом языке решить нельзя из-за каких-то технических оссобенностей этого языка или вам дали задачу, указывая, что решение надо дать именно в Паскале?


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 227
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  3  +


Еще вопрос: мне непонятно условие:
Цитата
Strike: игрок сбивает 10 кеглей первым броском, очки в этом туре начисляются из расчета: 10 + сумма очков за два предыдущих броска.
См. здесь, видим "Если во фрейме страйк, сумма очков за этот фрейм будет равна количеству сбитых кеглей в этом фрейме (10 кеглей) плюс количество фактически сбитых кеглей за два следующих броска". Делать как дано в этом задании, или как верно?

ps По моему здесь ошибка не "spire" а ''spare''... Но это не важно smile.gif


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 4
Пол: Женский

Репутация: -  0  +


Да, действительно, два последующих броска) Насчет Паскаля - это условие задачи, если выполнить в другом языке - это будет не засчитано. А на счет spare не уверена, мне передали задачу в таком виде) give_rose.gif

Все равно спасибо, что обратили внимание)

Сообщение отредактировано: Лисенок -


--------------------
Улыбнись миру и мир улыбнется тебе!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 227
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  3  +


Вот, что у меня получилось:
var
a,k:array[1..11] of integer;
i,m,s:integer;

begin

writeln('vybito keglei za 1yi ydar:');

for i:=1 to 10 do
begin
a[i]:=random(11);
write(a[i],' ');
end;

writeln;

writeln('vybito keglei za 2oi ydar:');

for i:=1 to 10 do
begin
k[i]:=random(11-a[i]);
write(k[i],' ');
end;

for i:=1 to 10 do

begin
if a[i]=10
then s:=10+a[i+1]+k[i+1] //esli byl "strike"
else if a[i]+k[i]<>10 then s:=a[i]+k[i]
else s:=10+a[i+1]; //esli byl "spare"
m:=m+s;
end;

writeln;

writeln('koli4estvo o4kov: ',m);

end.

Для input-output доделайте сами - это несложно.


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(Лисенок @ 5.12.2009 6:37) *

Здравствуйте, у меня есть любопытная задача без решения. На первый взгляд кажется довольно легкой, но это только маскировка) Итак, задача про Боулинг. Выполняется только в Паскале.
Цель при игре в боулинг - сбить шаром максимальное количество кеглей. Партия в этой игре состоит из 10 туров. Задача игрока - сбить все 10 кеглей в каждом туре. Для этого игрок может совершить 2 броска шара, за исключением:
- если 10 кеглей сбиты первым броском, то второй бросок не совершается;
- если 10 кеглей сбиты первым броском в десятом туре, то игроку предоставляются два призовых броска, а если двумя бросками - один.
Количество очков в каждом туре равно количеству сбитых кеглей, кроме двух бросков, называемых "Strike" и "Spire".
Strike: игрок сбивает 10 кеглей первым броском, очки в этом туре начисляются из расчета: 10 + сумма очков за два предыдущих броска.
Spire: игрок сбивает 10 кеглей двумя бросками, очки в этом туре начисляются из расчета: 10 + сумма очков за один последующий бросок.
Результат партии складывается из результатов всех 10 туров.
Требуется написать программу, которая определит количество набранных игроком очков.

Входные данные

Входной файл INPUT.TXT содержит в первой строке одно натуральное число, определяющее кол-во совершенных бросков. Вторая строка содержит натуральные числа(разделенные пробелом), обозначающие количество сбитых кеглей за каждый совершенный бросок.

Выходные данные

Выходной файл OUTPUT.TXT должен содержать одно целое число - количество набранных игроком очков.

Примеры

Код
№    INPUT.TXT                                         OUTPUT.TXT1          
1    12                                         300            
    10 10 10 10 10 10 10 10 10 10 10 10          
2    15                                          173              
    10 10 10 8 2 10 3 4 8 2 4 5 10 4 5

Личное мнение:[u] я очень хочу решить эту задачу, но испытываю некоторые трудности, вы можете мне помочь с решением?
wub.gif





вот решение

var
n, i, c, d, s : integer;
a : array [1..21] of integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);
for i:=1 to n do read(a[i]);
n:=0; s:=0;
for i:=1 to 10 do begin
n:=n+1; c:=a[n];
if c=10 then s:=s+10+a[n+1]+a[n+2] else begin
n:=n+1; d:=a[n];
if c+d=10 then s:=s+10+a[n+1] else s:=s+c+d
end
end;
write(s)
end.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 10.01.2025 6:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name