isaev
?>

Напишите программу на языке C++, которая находит сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры. Входные данные: Три целых числа вводятся в одной строке через пробелы. Выходные данные: Программа должна вывести сумму, произведение и среднее арифметическое введенных чисел. Среднее арифметическое нужно вывести с точностью 3 знака после десятичной точки. Примеры: входные данные: 4 5 7 выходные данные: 4+5+7=16 4*5*7=140 (4+5+7)/3=5.333

Информатика

Ответы

Kazantsevv_kostya

Код программы:

#include <iostream>

using namespace std;

int main()

{

   int a, b ,c;

   cout<<"Введите 3 целых числа"<<endl;

   cin >>a>>b>>c;

   cout<<a<<"+"<<b<<"+"<<c<<"="<<a+b+c<<endl;

   cout<<a<<"*"<<b<<"*"<<c<<"="<<a*b*c<<endl;

   cout.precision(4);

   cout<<"("<<a<<"+"<<b<<"+"<<c<<")/3"<<"="<<(a+b+c)/3.<<endl;

   return 0;

}

valeron7hair7
1. 16-битная арифметика со знаком предполагает, что самый левый бит используется для хранения знака. Отрицательные числа хранятся в дополнительном коде. При этом диапазон представления данных составляет -32768..32767.
32760+9 можно записать как 32767+2. Это позволит избежать перевода 32760 в двоичную систему счисления, а 32767 - это 15 двоичных единиц. В знаковом разряде, конечно же, ноль.
После сложения в знаковом разряде появляется единица, что означает наличие отрицательного числа в дополнительном коде. Знаковый разряд мы не трогаем, а остальные инвертируем и арифметически прибавляем к полученному числу единицу. Тем самым переходим к прямому коду, который переводим в десятичную систему представления. И результат, конечно, же, будет со знаком минус, т.е. -32767. Вот к чему приводит переполнение разрядной сетки в целочисленной арифметике. Кстати, аппаратно оно не обнаруживается, поскольку криминала нет - просто +1 переходит в самый старший (левый) разряд. "Железо" ведь не знает, сколько разрядов мы отвели под представление чисел и как биты нужно рассматривать! Соответствующая картинка находится в первом вложении.

2. В восьмибитной арифметике все происходит аналогично. 127 представляется знаковым нулем и семью единицами в остальных разрядах, т.е. 01111111₂. Тройка - это 0..011₂
Складываем и получаем 10000010₂. Опять знаковый разряд единичный, инвертируем остальные: 11111101. А теперь прибавляем единицу и получаем 11111110₂. Числу 1111110₂ (знаковый разряд мы не учитываем) соответствует 126₁₀, а с учетом знака окончательно получаем -126.

3. Тут немного больше нужно повозиться. Арифметика снова 16-битная, диапазон представления чисел -32768..32767.
Выпишем факториалы в пределах этого диапазона и одно значение вне его. 1!=1, 2!=2, 3!=6, 4!=24, 5"=120, 6!=720, 7!=5040, 8!=40320.
Делаем вывод, что максимальное значение факториала можно вычислить для n=7 и n!=5040. Тогда n+1=8 и при его вычислении у нас возникнет арифметическое переполнение. Переведем число 5040 в двоичную систему и умножим его на 8, поскольку 8! = 7! × 8. Поскольку 8 = 2³, то умножение на 8 в двоичной системе равносильно сдвигу числа влево на три разряда. Подробности приведены на рисунке во втором вложении. Мы получим "странный" результат: 8! = -25216.

1)выполните сложение десятичных чисел 32760 + 9 в 16-битной арифметике со знаком. 2)каков будет резу
1)выполните сложение десятичных чисел 32760 + 9 в 16-битной арифметике со знаком. 2)каков будет резу
А Дзукаев1562
Алгоритм сортировки строки массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая строку массива от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая строку массива от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.

Решение:

//Pascal
const
  n = 7;

var
  a: array[1..n, 1..n] of integer;
  i, j, min, ind: integer;

//Заполнение массива сл. числами и вывод на экран
begin
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      a[i, j] := random(100);
      write(a[i, j]:4);
    end;
    writeln;
  end;
 
  //Сортировка строки матрицы прямым выбором
 
  for i := 1 to n - 1 do
  begin
    min := a[4, i];
    ind := i;
    for j := i + 1 to n do
      if a[4, j] < min then
      begin
        min := a[4, j];
        ind := j;
      end;
    a[4, ind] := a[4, i];
    a[4, i] := min;
  end;
  writeln;
 
    //вывод отсортированной строки
  for j := 1 to n do
  begin
    write(a[4, j]:4);
  end;
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Напишите программу на языке C++, которая находит сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры. Входные данные: Три целых числа вводятся в одной строке через пробелы. Выходные данные: Программа должна вывести сумму, произведение и среднее арифметическое введенных чисел. Среднее арифметическое нужно вывести с точностью 3 знака после десятичной точки. Примеры: входные данные: 4 5 7 выходные данные: 4+5+7=16 4*5*7=140 (4+5+7)/3=5.333
Ваше имя (никнейм)*
Email*
Комментарий*