1)дано натуральное число, удалить все цифры А (А вводится с клавиатуры)2)найти все числа от 1 до 200,у которых количество делителей равно N(N вводится с клавиатуры)3)найти сумму чисел от 1 до 200,у которых 5 делителей — Pascal(Паскаль)

{1)дано натуральное число, удалить все цифры А(А вводится с клавиатуры)
 2)найти все числа от 1 до 200,у которых количество делителей равно N
   (N вводится с клавиатуры)
 3)найти сумму чисел от 1 до 200,у которых 5 делителей.
 ===
 Решение без подпрограмм, а потому не лучшее}
uses CRT;
VAR
  src, a, c, N: Longint;
  err, a_int, count: Integer;
  i, j: Integer;
  ch: Char;
  S:  String;
BEGIN
 ClrScr;
 {ПЕРВОЕ ЗАДАНИЕ}
 WriteLn('Удаление заданной цифры из числа');
 repeat
  Write('Введите целое число: '); {$I-} ReadLn(src); {$I+}
  err:= IOResult;
  if err <> 0 then WriteLn('Ошибка ввода! Попробуйте еще раз');
 until err = 0;
 Write('Введите цифру: ');
 repeat
   ch:=ReadKey;
 until ch in ['0'..'9'];
 WriteLn(ch);
 {Удаление. Первый способ - с помощью строки}
 Str(src, s);
 if POS(ch, S) = 0 then WriteLn('Цифры ',ch,' в числе ',src,' нет')
 else
 begin
    while (POS(ch, S) <> 0) do delete(S, POS(ch, S), 1);
    WriteLn('Число после удаления: ',S);
    (* {Вывод с преобразованием в число}   Val(S, c, err); WriteLn(c); *)
 end;
 {Удаление. Прямой метод}
 { Для простоты работы переворачиваем цифры в числе }
 a := 0;
 while (src <> 0) do begin
   a:= a* 10 + (src mod 10);
   src := src div 10;
 end;
 c:= 0;
 count:= 0; {Число удалений}
 VAL(ch, a_int, err);
 while a <> 0 do begin
    if a mod 10 = a_int then inc(count)
     else c := c*10 + (a mod 10);
    a := a div 10;
 end;
 if count = 0 then
    WriteLn('Цифры ',ch,' в числе ',src,' нет')
 else WriteLn('После удаления: ',c);
 WRiteLn;

 {второе задание. Считаю делителями и 1 и само число}
 WriteLn('========= ВТОРОЕ ЗАДАНИЕ =========');
 repeat
  Write('Введите целое число (количество делителей): '); {$I-} ReadLn(N); {$I+}
  err:= IOResult;
  if err <> 0 then WriteLn('Ошибка ввода! Попробуйте еще раз');
 until err = 0;
 WriteLn('Числа с числом делителей = ',N);
 c:=0; {было ли хоть одно число?}
 for i:=1 to 200 do
 begin
   count:=0;
   for j:=1 to i do
    if i mod j = 0 then inc(count);
   if count = N then begin
    Write(i:8); inc(c);
   end;
 end;
 WriteLn;
 if c = 0 then WriteLn('Чисел с числом делителей ',N,' нет')
  else WriteLn('Таких чисел: ',c);
 WriteLn;

 {третье задание}
 WriteLn('========= ТРЕТЬЕ ЗАДАНИЕ =========');
 WriteLn('Сумма чисел с числом делителей = 5');
 a:=0; {будет сумма}
 for i:=1 to 200 do
 begin
   count:=0;
   for j:=1 to i do
     if i mod j = 0 then inc(count);
   if count = 5 then
   begin
     a := a + i;
     WriteLn(i);
   end;
 end;
 WriteLn('Сумма чисел, у которых число делителей равно 5: ',a);

END.

Leave a Comment

1 + 4 =