Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 20:45   #1
wodafone
Новичок
Джуниор
 
Регистрация: 20.10.2013
Сообщений: 8
Стрелка Помогите решить олимпиаду

Всем привет, помогите кто чем может.
Нужно написать програмный код в Паскаль АБС.. к 3м заданиям
Огромное спасибо
Задание 1

Дана строка , состоящая из символов , каждый из которых является знаком « +» или цифрой, начинается и заканчивается цифрой. Если в строке встречается сочетание « + + » , то выдать сообщение об ошибке , иначе вычислить получившуюся сумму .
Во входном файле - lawn.in задано строка длиной = < 255.
В выходной файл - lawn.out вывести или сообщение об ошибке , или сумму , которая вышла в результате вычисления

Задание 2

В отделе работают 3 сотрудника , которые получают заработную плату в гривнах . Нужно определить : насколько зарплата самого высокооплачиваемого работника отличается от зарплаты самого низкооплачиваемого .
Входные данные
В одной строке входного файла INPUT.TXT записаны размеры зарплат всех сотрудников через пробел . Каждая заработная плата - это натуральное число , не более 105.
выходные данные
В выходной файл OUTPUT.TXT необходимо вывести одно целое число - разность между максимальной и минимальной зарплатой.
Пример
№ INPUT.TXT OUTPUT.TXT
1 100 500 1000 900
2 36 11 20 25

Задание 3

Только что созданная фирма купила заброшенные склады на окраине города. Новом заведующему составами поручили провести учет в короткие сроки. Все шло хорошо , пока случаем не рассыпали контейнеры с болтами и гайками на каждом составе , после чего собрали их в общие ( для болтов и гаек ) контейнеры , потеряв при этом несколько деталей .
Помогите оценить нанесенный ущерб на каждом складе , приняв во внимание , что , кроме утраченных деталей , болт (или гайка ) считается непригодным , если он не имеет соответствующей гайки (или болта ) .
Во входном файле INPUT.TXT описано текущее положение на складе . В первой строке через пробел записано три целых числа : k1 , l1 , m1 - начальное число болтов ( 100 < = k1 < = 30000 , k1 кратно 100 ) , процент потерянных деталей ( 0 < = V1 < = 100) и стоимость одного болта ( 1 < = m1 < = 100 ) соответственно. Во второй строке через пробел записано также три целых числа : k2 , l2 , m2 - начальное число гаек ( 100 < = k2 < = 30000 , k2 кратно 100 ) , процент потерянных деталей ( 0 < = V2 < = 100) и стоимость одной гайки ( 1 < = m2 < = 100 ) соответственно.
выходные данные
В выходной OUTPUT.TXT выведите одно целое число - размер ущерба.
примеры
№ INPUT.TXT OUTPUT.TXT
Январь 1000 10100
1200 20 90 37000
Февраль 5000 15 23
4000 17 22 53600
wodafone вне форума Ответить с цитированием
Старый 20.10.2013, 20:59   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,301
По умолчанию

Так, а где олимпиадные задачи?
Задачки обыкновенные. Что именно вызывает трудности? Или просто лень-матушка не подпускает к клавиатуре? Попробуйте реализовать и задавайте конкретные вопросы.

У 3 задания какие-то странные примеры входных данных.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.10.2013, 21:10   #3
wodafone
Новичок
Джуниор
 
Регистрация: 20.10.2013
Сообщений: 8
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Так, а где олимпиадные задачи?
Задачки обыкновенные. Что именно вызывает трудности? Или просто лень-матушка не подпускает к клавиатуре? Попробуйте реализовать и задавайте конкретные вопросы.

У 3 задания какие-то странные примеры входных данных.
Было 5 заданий, 2 сделал. Вот те что сделал.
Задание 4

Иван Петрович надел новые штаны и сел на только что выкрашенный табуретку . По его брюках появилась квадратная пятно зеленого цвета , длина стороны которого составляла А см. Оказалось , что в химчистку принимают одежду, площадь пятна на котором не превышает S см2. Виначиты , удалось Ивану Петровичу спасти свои штаны.
Во входном файле input.dat указаны два числа - длина стороны пятна и максимальная площадь для обработки в химчистке .
В выходной файл output.dat нужно вывести - « Да» , если удалось спасти брюки , или « Нет» , если не удалось.
Пример :
10 50 « Нет»
10120 « Да»

Задание 5

Если на одну чашу весов посадить Дашу , которая весит n кг, и Наташу , которая весит 5 кг меньше , а на другую - насыпать m кг конфет , то сколько килограммов конфет придется съесть девочкам , чтобы чаши весов уравновесились ? Какова вес девушек и конфет вместе?
Во входном файле intsuker.txt в одной строке два числа - вес Даши и вес конфет.
В выходной файл outtsuker.txt нужно вывести в столбик два числа - вес конфет , которые нужно девочкам съесть , и общий вес девушек и конфет .

Program Shtani;
var
a,s,n:integer;
begin
writeln('Вкажіть довжину сторони плями та максимальну площу для обробки в хімчистці');
readln(a,n);
s:=a*a;
if n>s then writeln('Так') else writeln('Ні');
end.

и

Program Terezi;
var
n,m,x,s:integer;
begin
writeln('Введіть вагу Даринки та вагу цукерок');
readln(n,m);
x:=n-5;
m:=n+(n-5);
s:=x+m;
writeln(m,s);
end.

Остальные задачи не знаю как сделать) Нужна помощь.. буду очень благодарен.
wodafone вне форума Ответить с цитированием
Старый 20.10.2013, 21:22   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,301
По умолчанию

4 задание:
Код:
Program Shtani;
var
  a, s: integer;
begin
  writeln('Вкажіть довжину сторони плями та максимальну площу для обробки в хімчистці');
  readln(a, s);
  if a * a <= s then writeln('Так') else writeln('Ні');
end.
5 задание:
Код:
Program Terezi;
var
  n, m, d: integer;
begin
  writeln('Введіть вагу Даринки та вагу цукерок');
  readln(n, m);
  d := abs(2 * n - 5 - m);
  writeln(d, 2 * n - 5 + m + d);
end.
5 задачу не очень понял. Решение выше для условия:
на одной чаше две девочки, на другой - конфеты (тяжелее девочек)
девочки едят конфеты и тяжелеют
выводится необходимое количество кг конфет и общая сумма (вес девочек + вес конфет на весах + съеденные конфеты)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.10.2013, 21:29   #5
wodafone
Новичок
Джуниор
 
Регистрация: 20.10.2013
Сообщений: 8
По умолчанию спасибо

а как это задание сделать?
Задание 1

Дана строка , состоящая из символов , каждый из которых является знаком « +» или цифрой, начинается и заканчивается цифрой. Если в строке встречается сочетание « + + » , то выдать сообщение об ошибке , иначе вычислить получившуюся сумму .
Во входном файле - lawn.in задано строка длиной = < 255.
В выходной файл - lawn.out вывести или сообщение об ошибке , или сумму , которая вышла в результате вычисления
wodafone вне форума Ответить с цитированием
Старый 20.10.2013, 21:33   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,301
По умолчанию

1 задание
Примерный код:
Код:
d := ord('0');
sum := ord(s[1]) - d;
for i := 2 to length(s) do
  if (s[i] = '+') and (s[i - 1] = '+') then
  begin
    writeln('Ошибка');
    exit;
  end else if s[i] <> '+' then
    sum := sum + ord(s[i]) - d;
writeln(sum);
Осталось объявить 4 переменных и считать данные.

2 задание
Считали 3 числа (в цикле) и выбрали максимальное и минимальное (на каждом шаге цикла делаем):
Код:
if a > max then
  max := a
else if a < min then
  min := a;
Вывели разницу между максимальным и минимальным.
(перед самим циклом нужно правильно инициализировать min и max:
max := 0;
min := 10001; )

3 задание
Практически одна формула (если нигде не напутал):
Код:
k11 := k1 * V1 div 100;
k21 := k2 * V2 div 100;
d := (k1 - k11) - (k2 - k21);
sum := k11 * m1 + k21 * m2 + abs(d) * (ord(d > 0) * m1 + ord(d < 0) * m2);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 20.10.2013 в 21:44.
BDA вне форума Ответить с цитированием
Старый 20.10.2013, 21:52   #7
wodafone
Новичок
Джуниор
 
Регистрация: 20.10.2013
Сообщений: 8
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1 задание
Примерный код:
Код:
d := ord('0');
sum := ord(s[1]) - d;
for i := 2 to length(s) do
  if (s[i] = '+') and (s[i - 1] = '+') then
  begin
    writeln('Ошибка');
    exit;
  end else if s[i] <> '+' then
    sum := sum + ord(s[i]) - d;
writeln(sum);
Осталось объявить 4 переменных и считать данные.

2 задание
Считали 3 числа (в цикле) и выбрали максимальное и минимальное (на каждом шаге цикла делаем):
Код:
if a > max then
  max := a
else if a < min then
  min := a;
Вывели разницу между максимальным и минимальным.
(перед самим циклом нужно правильно инициализировать min и max:
max := 0;
min := 10001; )

3 задание
Практически одна формула (если нигде не напутал):
Код:
k11 := k1 * V1 div 100;
k21 := k2 * V2 div 100;
d := (k1 - k11) - (k2 - k21);
sum := k11 * m1 + k21 * m2 + abs(d) * (ord(d > 0) * m1 + ord(d < 0) * m2);
Поправте програмный код... ошибки у меня
Program Plusi;
var
d,i,sum:integer;
s:array [1..255] of longint;
begin
writeln('Âêàæ³òü ÷èñëà');
readln(d);
d := ord('0');
sum := ord(s[1]) - d;
for i := 2 to length(s) do
if (s[i] = '+') and (s[i - 1] = '+') then
begin
writeln('Ïîìèëêà');
exit;
end else if s[i] <> '+' then
sum := sum + ord(s[i]) - d;
writeln(sum);
end.
wodafone вне форума Ответить с цитированием
Старый 20.10.2013, 21:58   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,301
По умолчанию

Код:
var
  d, i, sum: integer;
  s: string;
begin
  writeln('text');
  readln(s);
1) Оформляйте код с помощью кнопочки Решетка #.
2) Не нужно цитировать все сообщение.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.10.2013, 22:09   #9
wodafone
Новичок
Джуниор
 
Регистрация: 20.10.2013
Сообщений: 8
По умолчанию

Код:
Program Bolti;
var
k1,k2,d,k11,k21,m1,m2,v1,v2,sum:integer;
begin
writeln('ÂÂåä³òü');
read(d);
k11 := k1 * V1 div 100;
k21 := k2 * V2 div 100;
d := (k1 - k11) - (k2 - k21);
sum := k11 * m1 + k21 * m2 + abs(d) * (ord(d > 0) * m1 + ord(d < 0) * m2);
end.
Исправте..
wodafone вне форума Ответить с цитированием
Старый 20.10.2013, 22:17   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,301
По умолчанию

Последнее исправлять не буду
Вы должны считать те данные, которые указаны в задании.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задание, не попавшее на олимпиаду ;) Stilet Свободное общение 41 20.10.2010 15:30
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44