МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ
Воскресенье, 22.12.2024, 22:49
ГлавнаяРегистрацияВход Приветствую Вас Гость | RSS

Меню сайта

Категории раздела
Учимся оформлять задачи [6]
Практика [9]
Это интересно [2]
ЗАДАНИЕ 1 [1]

Наш опрос
Какой язык программирования Вы изучаете
Всего ответов: 1029

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа


Главная » Файлы » МОИ ПЕРВЫЕ ЗАДАЧИ » Практика

Решаем вместе задачи 0001 и 0006
15.10.2012, 06:26

Решаем вместе задачи 0001 и 0006

Анализируем основные ошибки, и разбираем варианты решения задач:  первая задача, вторая задача.

_____________________________________________________________________________________


Ответы слушателей

Задача 1


Племянник спросил дядю, сколько тому лет. Дядя ответил: «Если к половине моих лет прибавить A, то узнаешь мой возраст B лет тому назад». Сколько лет дяде?

Формат входных данных

Во входном файле через пробел записано два целых числа A и B (0 ≤ A, B ≤ 2 000 000 000).

Формат выходных данных

В выходной файл выведите, сколько лет дяде.

Пример

input.txt

output.txt

10 5

30

3 18

42

ВАРИАНТЫ ОТВЕТОВ СЛУШАТЕЛЕЙ:

 Ответ 1

var a, b, c, d :integer;
begin
readln (a, c, b);
d:=(a+c)+b;
writeln (d);
end.

Ошибки

по условию задачи в файле input.txt две величины, а в решении считываются три! readln (a, c, b);

d:=(a+c)+b;

Подставляю в формулу в условии есть А и В. Что такое С?

d = (10 +?) + 5 = должна получить 30

PS (от учителя): файлы даются для проверки, по два примера; в первой строке - первый пример: значения А=10 и В=5 - входные, 30 - выходное (дяде 30 лет); во второй строке  - второй пример: А=3 и В=18 - входные, 42 - выходное (или 42 года дяде).


Ответ 2 (почти правильный)
var a, b, x: integer;
begin
readln (a, b);
x:=2*(a+b);
writeln (x);
end.

Очень хорошо, при подстановке значений из файла
input.txt получаются значения output.txt
Интересно? задачу решили? или догадались по выходным значениям?


Самые простые задачи на олимпиаде по программированию решают с помощью уравнений и неравенств, записывая конечное выражение неизвестной величины через известные.

АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ
Я решаю задачу так: 
составляю выражение, пусть дяде Х- лет, тогда
x/2 + A= x - B
это по условию задачи,
выражаю из уравнения  Х
и получаю х=2*(А+В).


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

Система PascalABC 
удобна на этапе отладки программы, но не работает с текстовыми файлами, поэтому для окончательного оформления задачи нужно использовать другую версию программы паскаль, например Turbo Pascal

Окончательное решение для отправки на олимпиадный портал должно быть записано в таком варианте:

var a, b, x: integer;
begin
assign(input,'input.txt');  //
связывается с реальным  файлом ('input.txt')//
 reset(input);   //
открытие файла для считывания //
 assign(output,'output.txt');
 rewrite(output); //
перезапись или создание файла //
readln (a, b);
x:=2*(a+b);
writeln(x:0:0);
 close(input);  //
закрытие файла 'input.txt' //
 close(output);
end.








Черепаха Тортилла поселилась на A-ом этаже нового дома. Когда она идет гулять, то с этажа на этаж спускается за B минут, а поднимается ‑ за C минут. Сколько времени тратит бедное животное, перемещаясь между этажами?

Формат входных данных

Во входном файле через пробел записано три целых числа A, B и С (1 ≤ A ≤ 2 000, 0 ≤ B, С ≤ 2 000 000).

Формат выходных данных

В выходной файл выведите сколько времени тратит черепаха.

Пример

input.txt

output.txt

2 5 30

35

3 10 20

60


Ответ 1

var a, b, c, d: integer;
begin
readln (a, b, c);
d:=(a*b)+(a*c);
writeln (d);
end.

Ошибка 1

При решении задачи обязательно проверяем тестовые значения. Задача тест не проходит.

Подставляем в формулу a, b, c

d = (2*5) +(2*30) = ?

Результат не равен 35!

Аналогично подставляем вторые значения. Опять не совпадает ответ.

Значит d:=(a*b)+(a*c) выражение для задачи составлено неверно!

Читаем условие ещё раз  и ищем ошибку!

Ответ 2 (можно отправлять на портал)
var a,b,c, d: integer;
 begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);
 read(a,b,c);
 d:=(a-1)*b+(a-1)*c;
 write(d);
 close(input);
close(output);
 end.
В системе тестирования задача набирает 60 баллов! (что уже неплохо)
Ответ 3 (практически идеальный) {$N+} var a,b,c, d: comp; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(a,b,c); d:=(a-1)*b+(a-1)*c; write(d:0:0); close(input); close(output); end.

В системе тестирования задача набирает 100 баллов!
(найди отличия с предыдущим вариантом)
Вопрос: Не пойму зачем даны имя входного и выходного файла, что означает формат входных и выходных данных?

Ответ: прочитайте ещё раз внимательно правила проведения олимпиады.

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

Формат входных и выходных данных специально дан в условии, чтобы мы могли проверить в каком виде, порядке программа выдает результат.

Еще раз  самое основное из правил проведения олимпиады.

Категория: Практика | Добавил: i_elf
Просмотров: 3250 | Загрузок: 0 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 1
1 сергей  
0
(A&B-C)-(A-(B-C))

Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Творческий учитель
  • Сайт ООАКМР
  • Школьный сайт
  • Информатика учебник
  • МОИ

  • Copyright MyCorp © 2024 Сделать бесплатный сайт с uCoz