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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2012, 23:35   #1
HappyR
 
Регистрация: 07.05.2012
Сообщений: 5
Хорошо Задачи для решения на языке Pascal

Найти все двузначные числа, разность квадратов цифр которых равна заданному числу N.

Последний раз редактировалось HappyR; 14.06.2012 в 01:43.
HappyR вне форума Ответить с цитированием
Старый 14.06.2012, 02:20   #2
weech
Пользователь
 
Аватар для weech
 
Регистрация: 16.11.2011
Сообщений: 91
По умолчанию

Код:
for i:=10 to 99 do
   if (i div 10)*(i div 10) - (i mod 10)*(i mod 10) = n then
       writeln(i);
weech вне форума Ответить с цитированием
Старый 14.06.2012, 08:02   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я бы уточнил:
Код:
abs(...) = n
Нигде ведь не написано, что нужно вычитать квадрат младшей цифры из квадрата старшей, а не наоборот.
Опять же, что выведет программа, если ей задать число, скажем, 1? Правила хорошего тона требуют, чтобы факт отсутствия искомого обрабатывался отдельно.
s-andriano вне форума Ответить с цитированием
Старый 14.06.2012, 08:28   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от s-andriano
Опять же, что выведет программа, если ей задать число, скажем, 1?
s-andriano, это Вы, коллега, "мимо кассы" Во-первых, в задании чётко сказано, что числа ТОЛЬКО двухзначные, а во-вторых, где Вы в коде weech увидели ввод i ? там цикл. причём такой, что 1 получится ну никак не может.
согласитесь, так будет выглядть, мягко говоря, глупо:
for i:=10 to 99 do
if (i>9) and (i<100) then ...вычисления....


с первым замечанием, про модуль разности - полностью согласен!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.06.2012, 13:33   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ткните пальчиком, где написано, что N должно быть двузначным.
s-andriano вне форума Ответить с цитированием
Старый 14.06.2012, 14:01   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от s-andriano
Ткните пальчиком, где написано, что N должно быть двузначным.
Вот. я понял. к чему Вы....
значность N нигде не используется.
Да и какая разница, какое N ввели ?! Хоть 8-значное...


Цитата:
Сообщение от s-andriano
Опять же, что выведет программа, если ей задать число, скажем, 1?
кстати, при N=1 цикл выдаст число 10
при N=4 - результатом будет число 20
при N=5 - результатом будут числа 23,32



p.s. но в принципе, я согласен с вами,
добавить переменную, которая установит, было ли хоть одно совпадение, действительно несложно.
и тогда в конце, после цикла можно выдать, что мол, WriteLn('Ни одного подходящего числа не найдено');
так гораздо опрятнее и аккуратнее..

Последний раз редактировалось Serge_Bliznykov; 14.06.2012 в 14:11.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.06.2012, 18:28   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
кстати, при N=1 цикл выдаст число 10
Да, это я промахнулся. В примере должно было быть N=2, 6, 10...
s-andriano вне форума Ответить с цитированием
Старый 15.06.2012, 10:09   #8
HappyR
 
Регистрация: 07.05.2012
Сообщений: 5
По умолчанию

Товарищи тогда полный код как будет выглядеть %)
HappyR вне форума Ответить с цитированием
Старый 15.06.2012, 10:24   #9
HappyR
 
Регистрация: 07.05.2012
Сообщений: 5
По умолчанию

Код:
uses crt;
var
i,n,j:integer;
begin
clrscr;
Writeln('Введите число N');
readln(n);
j:=0;
for i:= 10 to 99 do
if sqr(i div 10)-sqr(i mod 10)=n then
begin
j:=j+1;
writeln(i)
end;
if j=0 then
Writeln('Чисел, квадрат разности цифр которых равен N нет!');
end.

вот так да? потому как при n=2, нет чисел.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.06.2012 в 11:18.
HappyR вне форума Ответить с цитированием
Старый 15.06.2012, 11:21   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну да. всё так.
но я бы учёл поправку s-andriano из пост #3 насчёт модуля числа:
Код:
uses crt;
var
  i, n, j: integer;
begin
  clrscr;
  Writeln('Введите число N');
  readln(n);
  j := 0;
  for i := 10 to 99 do
    if abs(sqr(i div 10) - sqr(i mod 10)) = n then
    begin
      j := j + 1;
      writeln(i)
    end;
  if j = 0 then
    Writeln('Чисел, квадрат разности цифр которых равен N нет!');
end.

p.s. да. при N=2, 6, 10, и т.п..... решений действительно НЕТ.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить алгоритм (блок-схема) и написать программу для решения задачи(Pascal) sadim Помощь студентам 2 18.12.2011 14:53
Алгорим решения олимпиадной задачи "Язык програмирования XY" ( в языке XY всего две операции X и Y....) morgan97 Паскаль, Turbo Pascal, PascalABC.NET 0 17.11.2011 20:07
Решение задачи на языке Pascal FishOK Помощь студентам 4 23.11.2010 14:34