М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
DashaV19022001
DashaV19022001
03.01.2020 10:16 •  Информатика

Составить программу на паскале. дано натуральное число: а) найти количество четных цифр; б) верно ли, что цифра а встречается в числе более двух раз а вводится с клавиатуры.

👇
Ответ:
Nasti12
Nasti12
03.01.2020
Var a,b,c,c1,a1:integer;
begin
write('введите число => ');
readln(a);
write('введите число а => ');
readln(a1);
c:=0;
c1:=0;
while (a<>0) do begin
b:=a mod 10;
a:=a div 10;
if (b mod 2 =0) then c:=c+1;
if (b=a1) then c1:=c1+1;
end;
writeln('количество чётных цифр =>', c);
if (c1>2) then writeln('а встречается в числе больше двух раз');
end.
4,8(14 оценок)
Открыть все ответы
Ответ:
danilstal14
danilstal14
03.01.2020
Const
  n = 5;

type
  tM = array[1..n, 1..n] of integer;
  tV = array[1..n] of integer;

procedure ProdMV(a: tM; b: tV; var c: tV);
var
  i, j, s: integer;
begin
  for i := 1 to n do
  begin
    s := 0;
    for j := 1 to n do s := s + a[i, j] * b[j];
    c[i] := s;
  end
end;

procedure SumV(a, b: tV; var c: tV);
var
  i: integer;
begin
  for i := 1 to n do c[i] := a[i] + b[i]
end;

procedure InitMatrix(var a: tM; p, q: integer);
{ Инициализация элементов случайными числами на [p;q]}
var
  i, j, k: integer;
begin
  k := q - p + 1;
  for i := 1 to n do
    for j := 1 to n do
      a[i, j] := Random(k) + p
end;

procedure InitVector(var a: tV; p, q: integer);
{ Инициализация элементов случайными числами на [p;q]}
var
  i, k: integer;
begin
  k := q - p + 1;
  for i := 1 to n do
    a[i] := Random(k) + p
end;

procedure DisplayMatrix(a: tM; s: string);
var
  i, j: integer;
begin
  Writeln(s);
  for i := 1 to n do
  begin
    for j := 1 to n do Write(a[i, j]:5);
    Writeln
  end
end;

procedure DisplayVector(a: tV; s: string);
var
  i: integer;
begin
  Writeln(s);
  for i := 1 to n do Write(a[i]:5);
  Writeln
end;

var
  A, B: tM;
  x, y, r, r1, r2: tV;

begin
  Randomize;
  InitMatrix(A, -50, 50);
  DisplayMatrix(A, 'Матрица А');
  InitMatrix(B, -20, 65);
  DisplayMatrix(B, 'Матрица B');
  InitVector(x, -10, 14);
  DisplayVector(x, 'Вектор x');
  InitVector(y, 5, 40);
  DisplayVector(y, 'Вектор y');
  ProdMV(A, x, r1);
  ProdMV(B, y, r2);
    { Для отладки раскомментарить две нижележащие строчки }
  { DisplayVector(r1,'Вектор r1');
    DisplayVector(r2,'Вектор r2'); }
  SumV(r1, r2, r);
  DisplayVector(r, 'Вектор результата')
end.

Тестовое решение:
Матрица А
  -19   27   30   25  -14
   32  -35    9  -38   16
  -39  -36   13   41  -37
    7  -18   -8   35  -10
    1  -48    1  -19   -2
Матрица B
  -15   62  -18   58   62
   32   58   43    3   12
   15   11   39  -20  -16
   47  -10   24   16   55
   -8   46   10    0   45
Вектор x
    2   -6   10    0   -3
Вектор y
   15   14   22   14   15
Вектор результата
 2131 2776 1096 2214 1725
4,4(75 оценок)
Ответ:
rudaniladanilov
rudaniladanilov
03.01.2020

Решение "в лоб": на логических конструкциях.

isInt(s) - целочисленное ли число в строке

isFloat(s) - вещественное ли число в строке

Стоит внести ясность в конструкции на строках 25,  27 и 28. Начнём  по порядку:

1. (int(a) if isIntA else float(a)) + (int(b) if isIntB else float(b)) - сумма результатов двух тернарных операторов, имеющих вид:

<результат при True> if <условие> else <результат при False>

Если перевести на русский язык: <перевод строки в целочисленное число>, если <в строке a целочисленное число>, иначе <перевод строки в вещественное число>. Аналогично с выражением после +.

2. isIntOrFloatA ^ isIntOrFloatB - логическая операция XOR, которая возвращает True только в двух случаях: когда только один из операторов равен True или False.

3. 1 if isIntOrFloatA == False else 2 - аналогичная первому выражению запись тернарного оператора: если isIntOrFloatA равняется False (если первый аргумент - не число), то выводим 1, иначе - 2.

Код:

def isInt(s):    try:          int(s)        return True    except ValueError:        return False def isFloat(s):    try:          float(s)        return True    except ValueError:        return False def sum(a, b):  isIntA = isInt(a)  isFloatA = isFloat(a)  isIntB = isInt(b)  isFloatB = isFloat(b)  isIntOrFloatA = isIntA or isFloatA  isIntOrFloatB = isIntB or isFloatB  if isIntOrFloatA and isIntOrFloatB:    return (int(a) if isIntA else float(a)) + (int(b) if isIntB else float(b))  else:    if isIntOrFloatA ^ isIntOrFloatB:      return "{}st argument is not a number".format(1 if isIntOrFloatA == False else 2)    else:      return "all arguments are not a numbers" a = input() b = input() print(sum(a, b))
4,7(21 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ