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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2014, 02:51   #1
Оляя
Пользователь
 
Регистрация: 11.01.2014
Сообщений: 11
Печаль Простая задача на цикл

Помогите, пожалуйста, срочно решить задачу (понимаю, что простая, но мозг тормозит):
Задача 1. Управляющий совет

В управляющий совет школы входят родители, учителя и учащиеся школы, причём родителей должно быть не менее одной трети от общего числа членов совета. В настоящий момент в совет входит N человек, из них K родителей. Определите, сколько родителей нужно дополнительно ввести в совет, чтобы их число стало составлять не менее трети от числа членов совета.
Программа получает на вход два целых числа N и K (N > 0, 0 ≤ K ≤ N), записанные в отдельных строках, — текущее число членов совета и число родителей в совете.
Программа должна вывести единственное число — минимальное число родителей, которое необходимо ввести в совет.
Пример

Ввод

Вывод

27

7

3

В примере совет состоит из 27 человек, из которых родители составляют 7 человек. Если в совет ввести ещё 3 родителей, то в совете станет 30 человек, из которых родителей будет 10.
правильно работающее в случае, когда числа N и K не превосходят 2∙109
Оляя вне форума Ответить с цитированием
Старый 11.01.2014, 03:14   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Было: N,K
Стало:N+x,K+x
Найти x, такое, чтобы: (K+x)>=(N+x)/3

Ответ: x>=(N-3K)/2
type_Oleg вне форума Ответить с цитированием
Старый 11.01.2014, 20:50   #3
Оляя
Пользователь
 
Регистрация: 11.01.2014
Сообщений: 11
По умолчанию DСистема выдает неполное решение на паскале.

Ни один из тестов не прошел, выдает не верный формат донных.
Program Str1;
VAR N,K: real;
x:real;
BEGIN
Readln(N,K);
if K <= N then begin
x:=(N-3*K)/2;
Write(x);
end;
END.
Оляя вне форума Ответить с цитированием
Старый 11.01.2014, 21:08   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

А как вводите данные ? У меня прошел...
Кстати, N,K - можно и Integer, так в задании прямо есть намёк на это. А x - конечно только Real, если ничего не менять.
PS После Write(x) наверное надо поставить ReadLn; Иначе сразу закроется. Я запускал в Geany, поэтому не закрывалось.
Изображения
Тип файла: jpg pas1.jpg (31.3 Кб, 135 просмотров)

Последний раз редактировалось type_Oleg; 11.01.2014 в 21:20.
type_Oleg вне форума Ответить с цитированием
Старый 11.01.2014, 22:23   #5
Оляя
Пользователь
 
Регистрация: 11.01.2014
Сообщений: 11
По умолчанию

я делала и с integer N и К, но надо чтобы Х был в другом формате.
систему не устраивает формат вывода: не 3, а 3.00000000
1.jpg
2.jpg

Последний раз редактировалось Оляя; 11.01.2014 в 22:27.
Оляя вне форума Ответить с цитированием
Старый 11.01.2014, 23:01   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Код:
Program Str1;
uses Math;   //  в нем - функция Ceil
var x,N,K: Integer; // целые значения до 2147483647	
begin
 Readln(N,K);
 if K <= N then 
  begin
   x:=Ceil((N-3*K)/2); // округление до большего целого
   if x<0 then x:=0;  // чтобы минусов не было 
   Write(x);
  end; 
ReadLn;  // чтобы не закрывалась сразу
end.
Правда, я не пойму, а где должен быть цикл ?
type_Oleg вне форума Ответить с цитированием
Старый 11.01.2014, 23:14   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Зачем проверка K <= N?
На http://informatics.mccme.ru/moodle/m...ew.php?id=9742 прошло только с longint (компилятор FreePascal).
Код:
uses Math;
var
  x, N, K: longint;
begin
  Readln(N, K);
  x := Ceil((N - 3 * K) / 2);
  if x < 0 then x := 0;
  Write(x);
end.
Кто-то зарегистрировал учительский аккаунт?)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 11.01.2014, 23:26   #8
Оляя
Пользователь
 
Регистрация: 11.01.2014
Сообщений: 11
По умолчанию

Выдает ошибку компилятора и опять не полное решение, если взять div
Изображения
Тип файла: jpg 4.jpg (26.3 Кб, 102 просмотров)
Тип файла: jpg 3.jpg (39.9 Кб, 127 просмотров)

Последний раз редактировалось Оляя; 11.01.2014 в 23:38.
Оляя вне форума Ответить с цитированием
Старый 11.01.2014, 23:32   #9
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Цитата:
Сообщение от Оляя Посмотреть сообщение
когда числа N и K не превосходят 2∙109
BDA , да, лучше на LongInt. Integer - он зависимый.

А K <= N? наверное защита от дурака.
type_Oleg вне форума Ответить с цитированием
Старый 11.01.2014, 23:33   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
x := Ceil((N - 3 * K) / 2);
Floor вместо Ceil
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Простая задача bgwqa Помощь студентам 1 17.12.2013 18:26
Простая задача Abuhamed Visual C++ 0 18.06.2013 00:40
Простая задача Arsenx777 Помощь студентам 1 04.03.2012 11:18
С++ (простая задача) slim>>> Помощь студентам 3 13.01.2010 20:13
Цикл for в С++ - простая математическая задача Blondy Помощь студентам 4 21.09.2009 19:47