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

Функция Аккермана на С++ Требуется вычислить значение A(m,n) — где A это функция Аккермана.

Функция Аккермана определяется рекурсивно для неотрицательных целых чисел m и n следующим образом:

A(m,n)=n+1, при m=0
A(m,n)=A(m−1,1), при m>0, n=0
A,(m,n)=A(m−1,A(m,n−1)), при m>0, n>0

👇
Ответ:
ankadudka
ankadudka
16.05.2022

#include <stdio.h>

 

unsigned akkerman(unsigned m, unsigned n) {

  return ( ! m ) ? n + 1 : ( ! n ) ? akkerman(m - 1, 1) : akkerman(m - 1, akkerman(m, n - 1));

}

 

int main(void) {

  unsigned m, n;

   

  while ( printf(" ") && scanf("%u%u", &m, &n) == 2 )

      printf("%u\n", akkerman(m, n));

   

  return 0;

}

4,4(82 оценок)
Открыть все ответы
Ответ:
ntaskaeva2
ntaskaeva2
16.05.2022
Type
  mass = array[1..10, 1..10] of real;

var
  a, b, c: mass;
  n, m, i, j, n1, m1: integer;

procedure MatrA(var a: mass);
var
  i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to m do
    begin
      writeln('a[', i, ',', j, ']: ');
      readln(a[i, j])
    end
end;

procedure MatrB(var b: mass);
var
  i, j: integer;
begin
  for i := 1 to n1 do
    for j := 1 to m1 do
    begin
      writeln('b[', i, ',', j, ']: ');
      readln(b[i, j])
    end
end;

procedure Sum(a, b: mass; var c: mass);
var
  i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to m do
      c[i, j] := a[i, j] + b[i, j];
end;

begin
  writeln('Введите n,m матрицы A');
  readln(n, m);
  MatrA(a);
  writeln('Введите n,m матрицы B');
  readln(n1, m1);
  MatrB(b);
  if (n1 <> n) and (m1 <> m) then
    writeln('Матрицы сложить нельзя')
  else begin
    Sum(a, b, c);
    writeln('A+B');
    for i := 1 to n do
    begin
      for j := 1 to m do
        write(c[i, j]:1:3, ' ');
      writeln
    end
  end;
  readln;
end.
4,7(39 оценок)
Ответ:
tasss1
tasss1
16.05.2022
1) Происходит 16000 измерений в секунду, на одно измерение отводится 16 бит, значит, на секунду необходимо 16000 * 16 бит = 16000 * 2 байт = 32000 байт, а на 30 секунд - 30 * 32 000 байт = 960 000 байт = 937,5 Кб

2) Необходимо 1 760 000 байт на 20 секунд, т.е. 1 760 000 / 20 = 88 000 байт. Есть 2 канала по 16 бит = 2 байта, одно измерение занимает 2 * 2 = 4 байта, тогда всего измерений в секунду 88 000 / 4 = 22 000, частота дискретизации 22 000 Гц.

3) 2 * 1 * 48000 * 16 бит = 48000 * 4 байт = 187,5 Кб
4,6(12 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ