Среди чисел 1 до N найдите и выведите на экран такие,запись которых совпадают с последними цифрами их квадрата (например 6 в квадрате=36).N введите с клавиатуры.Буду очень благодарен за решение(и если вас не затруднит объяснени...

Среди чисел 1 до N найдите и выведите на экран такие,запись которых совпадают с последними цифрами их квадрата (например 6 в квадрате=36).N введите с клавиатуры.Буду очень благодарен за решение(и если вас не затруднит объяснение,т.к я новенький в этом деле и хотел бы научиться у знающих людей)спасибо за внимание.
Гость
Ответ(ы) на вопрос:
Гость
ОТДЕЛ Задание+; ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\", Приём; ПЕР   N, сч, ч, кв: ЦЕЛ; УКАЗ   N := Приём.Число();   ОТ сч := 0 ДО N ВЫП     кв := сч * сч;     ч := сч;     КОЛЬЦО       ПОКА ч > 0 И кв > 0 ВЫП         ЕСЛИ ч ОСТАТОК 10 # кв ОСТАТОК 10 ТО           ВЫХОД         КОН;         ч := ч ДЕЛИТЬ 10;         кв := кв ДЕЛИТЬ 10       КОН;       Вывод.ЧЦел("^%d", сч, 0, 0, 0)     КОН   КОН КОН Задание. Отдел "Приём", раз уж Издатель не успел его включить в выпуск (хотя стоило бы рассматривать это как стандартный ввод): ОТДЕЛ Приём;  ИСПОЛЬЗУЕТ    ОС ИЗ "...\Отделы\Обмен\",    КОС ИЗ "...\Отделы\Обмен\",   Ввод ИЗ "...\Отделы\Обмен\",    Вывод ИЗ "...\Отделы\Обмен\",    Знак ИЗ "...\Отделы\Иное\";  ЗАДАЧА Строка-(строка+: РЯД ИЗ ЗНАК);  (* Текстовая строка *)  ПЕР    отКлавиш: Ввод.ОтКлавиш;    отМышки: Ввод.ОтМышки;    Счётчик: ЦЕЛ;  УКАЗ    Счётчик := 0;    КОЛЬЦО      ЕСЛИ КОС.Опрос(отКлавиш, отМышки) = Ввод.клавиши ТО        ЕСЛИ отКлавиш.знак = 0DX ТО          ЕСЛИ Счётчик < РАЗМЕР(строка) ТО строка[Счётчик] := 0X КОН;          ВЫХОД        АЕСЛИ отКлавиш.код = 08H ТО           ЕСЛИ Счётчик > 0 ТО             строка[Счётчик-1] := 0X; УМЕНЬШИТЬ(Счётчик);             Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" ");             Вывод.ЗнакЦепи(отКлавиш.знак)           КОН        АЕСЛИ (отКлавиш.код = 2DH) И (ОС.РазмерЦепочкиОбменника() # 0) ТО          ПОКА Счётчик > 0 ВЫП            строка[Счётчик-1] := 0X; УМЕНЬШИТЬ(Счётчик);            Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X)          КОН;          ОС.ЦепочкуИзОбменника(строка);          ЕСЛИ ОС.РазмерЦепочкиОбменника() > РАЗМЕР(строка) ТО            Счётчик := РАЗМЕР(строка)          ИНАЧЕ Счётчик := ОС.РазмерЦепочкиОбменника() КОН;          Вывод.Цепь(строка)        АЕСЛИ отКлавиш.знак = 0X ТО        ИНАЧЕ          ЕСЛИ Счётчик < РАЗМЕР(строка) ТО            строка[Счётчик] := отКлавиш.знак;            УВЕЛИЧИТЬ(Счётчик);            Вывод.ЗнакЦепи(отКлавиш.знак)          КОН        КОН      ИНАЧЕ ОС.Спать(50) КОН    КОН КОН Строка;  ЗАДАЧА Число-(): ЦЕЛ; (* Целое число *) ПЕР    отКлавиш: Ввод.ОтКлавиш;    отМышки: Ввод.ОтМышки;    Счётчик, сч: ЦЕЛ;    Результат: ЦЕЛ;    Буфер: ДОСТУП К РЯД ИЗ ЗНАК;    Отрицательное: КЛЮЧ; УКАЗ    Результат := 0; Счётчик := 0; Отрицательное := ОТКЛ;    КОЛЬЦО      ЕСЛИ КОС.Опрос(отКлавиш, отМышки) = Ввод.клавиши ТО        ЕСЛИ отКлавиш.знак = 0DX ТО          ЕСЛИ Отрицательное ТО ВОЗВРАТ -Результат ИНАЧЕ ВОЗВРАТ Результат КОН        АЕСЛИ отКлавиш.код = 08H ТО          ЕСЛИ Счётчик > 0 ТО           Результат := Результат ДЕЛИТЬ 10;            Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак); УМЕНЬШИТЬ(Счётчик)         АЕСЛИ Отрицательное ТО           Отрицательное := ОТКЛ;           Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак)         КОН        АЕСЛИ (отКлавиш.код = 2DH) И (ОС.РазмерЦепочкиОбменника() # 0) ТО          ПОКА Счётчик > 0 ВЫП            УМЕНЬШИТЬ(Счётчик); Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X)          КОН;          ЕСЛИ Отрицательное ТО           Отрицательное := ОТКЛ; Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X)         КОН;         Результат := 0;          СОЗДАТЬ(Буфер, ОС.РазмерЦепочкиОбменника());          ОС.ЦепочкуИзОбменника(Буфер^);          ЕСЛИ (Буфер[0] >= "0") И (Буфер[0] <= "9") ТО            Результат := Результат * 10 + (ВЦЕЛ(Буфер[0]) - ВЦЕЛ("0"));            Вывод.ЗнакЦепи(Буфер[0]); УВЕЛИЧИТЬ(Счётчик)          АЕСЛИ Буфер[0] = "-" ТО Вывод.ЗнакЦепи("-"); Отрицательное := ВКЛ КОН;         ОТ сч := 1 ДО РАЗМЕР(Буфер^)-1 ВЫП            ЕСЛИ (Буфер[сч] >= "0") И (Буфер[сч] <= "9") ТО              Результат := Результат * 10 + (ВЦЕЛ(Буфер[сч]) - ВЦЕЛ("0"));              Вывод.ЗнакЦепи(Буфер[сч]); УВЕЛИЧИТЬ(Счётчик)            КОН          КОН;          Буфер := ПУСТО        АЕСЛИ (отКлавиш.знак = "-") И (НЕ Отрицательное) ТО          ЕСЛИ Результат = 0 ТО Отрицательное := ВКЛ; Вывод.ЗнакЦепи("-") КОН       АЕСЛИ отКлавиш.знак = 0X ТО        АЕСЛИ (Результат < МАКС(ЦЕЛ) ДЕЛИТЬ 10) И ((отКлавиш.знак >= "0") И (отКлавиш.знак <= "9")) ТО          Результат := Результат * 10 + (ВЦЕЛ(отКлавиш.знак) - ВЦЕЛ("0"));          Вывод.ЗнакЦепи(отКлавиш.знак); УВЕЛИЧИТЬ(Счётчик)        КОН      ИНАЧЕ ОС.Спать(50) КОН    КОН КОН Число;  ЗАДАЧА Ждать-; (* Простаиваем, пока не будет нажата любая клавиша *) ПЕР    отКлавиш: Ввод.ОтКлавиш;    отМышки: Ввод.ОтМышки; УКАЗ    ПОКА КОС.Опрос(отКлавиш, отМышки) # Ввод.клавиши ВЫП      ОС.Спать(50)    КОН КОН Ждать;  КОН Приём.
Гость
1. Современный вариант // PascalABC.NET 3.2, сборка 1362 от 14.12.2016 // Внимание! Если программа не работает, обновите версию! begin   var n:=ReadInteger('N=');   Range(1,n).Select(i->(i.ToString,(i*i).ToString)).     Where(t->t[0]=t[1].Right(t[0].Length)).Println; end. Пример N= 1000 (1,1) (5,25) (6,36) (25,625) (76,5776) (376,141376) (625,390625) 2. А вот так примерно учат в большинстве школ var   n,i,j,li,li2:integer;   si,si2:string; begin   Write('N= '); Read(n);   for i:=1 to n do begin     Str(i,si);     li:=Length(si);     Str(i*i,si2);     li2:=Length(si2);     si2:=Copy(si2,li2+1-li,li);     if si=si2 then Write('(',si,',',i*i,') ')     end end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы