найти трёхзначные числа квадрат которых равен ...

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

найти трёхзначные числа квадрат которых равен ...

Сообщение rotkart » 27.09.2013 16:47:38

Доброго всем дня!
Решаю задачу из сборника по подготовке к ЕГЭ:
Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа.
Вроде ничего сложного, но проверочных чисел в книге не дано :(

Набросал программу поиска таких чисел для проверки программы:
Код: Выделить всё
var c0,c1,c2 : byte;
   ch, s, i: integer;
BEGIN
   for i:=100 to 999 do
      begin
      ch:=i;
      c0:= ch mod 10; ch:= ch div 10;
      c1:= ch mod 10;
      c2:= ch div 10;
      s:=c0+c1+c2;
      if sqr(i)=s*s*s then writeln (i);
      end   
END.

И оказалось, что таких чисел просто НЕТ! Программа отрабатывает молча.
Это я затупил и неверно понял задание или книжка наврала?
rotkart
незнакомец
 
Сообщения: 8
Зарегистрирован: 27.09.2013 16:30:16

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Лекс Айрин » 27.09.2013 17:17:46

rotkart, Постать после end ";". Лучше в конце добавить вывод сообщения типа найдено ... решений.Чтобы программа не молчала.

Гугление показало, что задача не имеет решений в данном диапазоне.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение svk12 » 27.09.2013 17:21:09

Может быть, так?
Код: Выделить всё
var c0,c1,c2 : byte;
   ch, s, i: integer;
BEGIN
   for i:=100 to 999 do
      begin
      ch:=i;
      c0:= ch div 100; ch:= ch - c0*100; //сотни
      c1:= ch div 10; //десятки
      c2:= ch mod 10; //единицы
      s:=c0+c1+c2;
      if sqr(i)=s*s*s then writeln (i);
      end   
END.
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение bormant » 27.09.2013 20:26:42

Таких чисел действительно нет.
Код: Выделить всё
var
  n, s: longint;
begin
  for n := round(sqrt(27*27*27)) downto 100 do begin
    s := n div 100 + (n div 10) mod 10 + n mod 10;
    if sqr(n) = sqr(s) * s then writeln(n);
  end;
end.
ps. Для случая for n:=100 to 999 и Turbo Pascal нужен longint, integer там 32-разрядный, до 32767, 999^2=998001 не влезет. В приведённом примере достаточно integer и для TP, поскольку sqrt(27*27*27)=140, 140^2=19600.
Последний раз редактировалось bormant 28.09.2013 00:07:33, всего редактировалось 1 раз.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение rotkart » 27.09.2013 21:46:17

Лекс Айрин писал(а):после end ";"


Это прям обязательно? Вроде после последнего оператора перед финальным end-ом можно не ставить точку с запятой?

svk12 писал(а):Может быть, так?


А всё равно действий меньше не стало. Мне так, как я сделал, понятнее - mod определяет цифру, div убирает разряд.
Тогда уж интереснее вариант от bormant - в один оператор.

bormant писал(а):Таких чисел действительно нет.


Это я понял, спасибо. Смущает, что эта задача из сборника для подготовки к ЕГЭ - чему она учит?
rotkart
незнакомец
 
Сообщения: 8
Зарегистрирован: 27.09.2013 16:30:16

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Little_Roo » 27.09.2013 22:26:49

rotkart писал(а):Смущает, что эта задача из сборника для подготовки к ЕГЭ - чему она учит?

Думать, анализировать....
И отсутствие результата - это тоже результат (с)старое....

И как эксперт ЕГЭ (не плюйте в мордочку :) скажу - сборники подготовки к ЕГЭ, как правило, макулатура, изданная идиотами для идиотов :(
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Лекс Айрин » 27.09.2013 23:08:40

rotkart писал(а):Это прям обязательно? Вроде после последнего оператора перед финальным end-ом можно не ставить точку с запятой?


не обязательно. А потом придется дописывать еще пару строк и тогда это вылезет. Поэтому лучше не привыкать к подобным умолчаниям. К тому же за подобное могут и оценку снизить.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Little_Roo » 27.09.2013 23:40:52

Лекс Айрин писал(а):К тому же за подобное могут и оценку снизить.


Нет, это считается корректным - баллы не снижаются...
И, кстати, открою стра-а-а-а-а-шную тайну :( :( :( Орфографический кретинизм (другими словами не обозначтиь), если он НЕ искажает сути решения - НЕ учитывается :shock:
Это, к примеру:
.......
reade(X);
y =: x + 1;;
vrite(x)
writ(y};
конец.
.........

Обязаны, по критериям оценивания, засчитать по-полной :shock:
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Лекс Айрин » 28.09.2013 00:43:22

Little_Roo, обидно. Хотя и не удивительно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение rotkart » 28.09.2013 08:26:04

Лекс Айрин писал(а):А потом придется дописывать еще пару строк и тогда это вылезет. Поэтому лучше не привыкать к подобным умолчаниям.

Это аргумент, согласен.

Little_Roo писал(а):И как эксперт ЕГЭ (не плюйте в мордочку :) скажу - сборники подготовки к ЕГЭ, как правило, макулатура, изданная идиотами для идиотов :(

:D
И что порекомендуете для программирования? Хочется просто сборник задач - числа, строки, массивы и т.д.
rotkart
незнакомец
 
Сообщения: 8
Зарегистрирован: 27.09.2013 16:30:16

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Лекс Айрин » 28.09.2013 10:24:06

rotkart, очень хороша, имхо, книга Ч. Уэзерелла "Этюды для программистов".

Конечно, это старая книга, но, как я понял, тебе нужен пока классический паскаль. Да, в ней нет привязки к конкретному языку, и задачи могут быть сложноваты. Но зато они не являются академическими.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение rotkart » 28.09.2013 11:54:31

Лекс Айрин писал(а):rotkart, очень хороша, имхо, книга Ч. Уэзерелла "Этюды для программистов".


Хмм....

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

Спасибо за хороший совет.
Приберегу эту книгу на потом - в вступлении к ней, имхо, правильно советуется сначала выработать навыки программирования, только затем к этюдам приступать.
rotkart
незнакомец
 
Сообщения: 8
Зарегистрирован: 27.09.2013 16:30:16

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Лекс Айрин » 28.09.2013 12:02:34

rotkart, ну да, без навыков никуда... но это дело наживное.

Лично у меня все эти задачи типа: "получить сумму двух чисел" вызывают некоторое раздражение.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение rotkart » 28.09.2013 12:05:25

Little_Roo писал(а):
Лекс Айрин писал(а):К тому же за подобное могут и оценку снизить.


Нет, это считается корректным - баллы не снижаются...
И, кстати, открою стра-а-а-а-а-шную тайну :( :( :( Орфографический кретинизм (другими словами не обозначтиь), если он НЕ искажает сути решения - НЕ учитывается :shock:
Это, к примеру:
.......
reade(X);
y =: x + 1;;
vrite(x)
writ(y};
конец.
.........

Обязаны, по критериям оценивания, засчитать по-полной :shock:

Почему? Я читал критерии оценивания к задачам Статград - обычно там пишется примерно так:
Программа, возможно, неверно работает при некоторых входных данных, но по
приведенному тексту решения ясно, что экзаменуемый понимает, из каких
этапов должно состоять решение задачи.
Программа, возможно, неверно обрабатывает некоторые входные данные,
например, отсутствует или предложен некорректный алгоритм обработки
строчных или прописных букв, или они подсчитываются по отдельности, или
программа содержит ошибку в алгоритме поиска максимума. Возможно,
выводит только искомую букву и не выводит количество букв. Допускается
наличие не более семи синтаксических ошибок.

В Вашем примере синтаксических ошибок я насчитал восемь, так что 0 баллов.
Хотя, конечно, это дурь - писать программы от руки на листочке.
rotkart
незнакомец
 
Сообщения: 8
Зарегистрирован: 27.09.2013 16:30:16

Re: найти трёхзначные числа квадрат которых равен ...

Сообщение Little_Roo » 28.09.2013 13:12:52

rotkart писал(а):В Вашем примере синтаксических ошибок я насчитал восемь, так что 0 баллов.


Не 0, а все 3!
А критерии Статграда не являются официальными - они указываются в конкретном КИМе
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru