stasyan
?>

Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. после ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое. нужно написать программу, используя цикл с параметром(for i: = a to b do !

Информатика

Ответы

znaberd786
Var b,i,c:integer;beginread(b);while b<>0 do begin read(b);inc(c);end;write(c);end.
arinaunknown6867

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

Матрица - это множество чисел, сгруппированных в колонки и столбцы. Здесь изображены две матрицы: Матрица А и Матрица В.

56_1.gif (1163 b)

Матрица А - это матрица 2х3 (то есть у нее две строки и три столбца), тогда как матрица В - это матрица 3х3. Мы можем получить доступ к элементу матрицы А, используя запись А[m,n], где m - это строка, а n - столбец. Элемент в верхнем углу матрицы А будет обозначаться А[0,0] и он равен единице.

Произведение операций над матрицами

Вы можете производить большинство операций над матрицами так же, как Вы оперируете и с нормальными числами. Например, Вы можете их складывать или вычитать, соответственно складывая или вычитая каждый из компонентов.

Для примера, рассмотрим сложение двух матриц размерностью 2х3 - матрицы А и матрицы С:

56_2.gif (650 b)

При сложении матриц А и С нужно складывать каждый из элементов m, n. Суммы элементов займут в результирующей матрице соответствующие места:

56_3.gif (896 b)

Мы также можем умножить матрицу на скаляр k. Например, чтобы умножить матрицу А на 3, мы должны умножить на 3 каждый ее элемент.

56_4.gif (725 b)

Теперь поговорим об умножении двух матриц. Эта операция немного отличается от умножения на скалярную величину. Вы должны запомнить несколько правил:

Количество столбцов в первой матрице (n) должно быть равно количеству строк во второй (также n). Это значит, что если размерность первой матрицы (m x n), то размерность второй матрицы должна быть (n x r). Два остальных измерения m и к могут быть любыми.

Произведение матриц не коммутативно, то есть А х В не равно В х А.

Умножение матрицы m x n на матрицу n x r может быть описано алгоритмически следующим образом:

Для каждой строки первой матрицы:

Умножить строку на столбец другой матрицы поэлементно. Сложить полученный результат;

Поместить результат в позицию [i,j] результирующей матрицы, где i - это строка первой матрицы, а j - столбец второй матрицы.

Для простоты посмотрите на рисунок:

56_5.gif (4629 b)

Мы можем это сделать намного проще, написав программу на Си. Давайте определим матрицу 3х3 и напишем функцию, умножающую матрицы. Ниже показан исходный код:

// общая структура матрицы

typedef struct matrix_typ

{

float elem[3][3]; // место для хранения матрицы

} matrix, *matrix_ptr;

void Mat_Mult3x3(matrix_ptr matrix_1, matrix_ptr matrix_2,

matrix_ptr result)

{

index i, j, k;

for(i=0; i < 3; j++)

{

for(j=0; j < 3; j++)

{

result[i][j] = 0; // инициализация элемента

for(k = 0; k < 3; k++)

{

result->elem[i][j] += matrix_1->elem[i][k]

* matrix_2->elem[k][j];

} // конец цикла по k

} // конец цикла по j

} // конец цикла по i

} // конец функции

Единичная матрица

Прежде чем закончить говорить о матрицах, скажем еще об одной вещи: о единичной матрице. Не углубляясь в математические термины, я хочу сказать, что нам нужна такая матрица, умножая на которую мы получали бы исходную матрицу.

Говоря попросту, нам нужно иметь матрицу размерностью

Rustamov741
Скорее всего, условие задачи сформулировано некорректно, ибо составить программу, содержащую не более пяти команд не получится, и сейчас объясню почему.

Так как нужно из числа 4 получить число 80, то первая команда не может являться "2", в противном случае мы уйдем в отрицательные числа. Тогда первая команда - "1", и теперь нам нужно из числа 20 получить число 80. Рассмотрим несколько случаев, когда последней командой мы получаем число 80.

1 случай.

Если последняя команда - "1", то это возможно, когда предпоследний результат будет равен 16, однако так как наша траектория точно содержит число 20, которое кратно 5, то, применяя далее наши команды, мы всегда будем получать число, кратное 5, а нам нужно получить 16. Противоречие.

2 случай.

Теперь рассмотрим ситуацию, когда последняя команда - "2". То есть предпоследний результат равен 85. Если получать число 85 командой "1", то траектория должна содержать число 17. Из соображений  кратности (см. 1 случай) это невозможно. Значит вторая с конца команда должна являться "2". Аналогично рассуждая, приходим к выводу о том, что и третья, и четвертая команды с конца тоже должны быть "2". То есть наша траектория имеет вид 1*2222, причем на месте "*" должна быть такая траектория команд, которая позволит получить из числа 20 число 100. Ясно, что наименьшая траектория будет 112222, но она содержит 6 команд. Противоречие.

Получается, что из числа 4 получить число 80 программой, которая бы содержала не более 5 команд, действительно не получится. Но если говорить о наименьшей траектории, то 112222 - будет являться ответом на эту задачу.

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

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

Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. после ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое. нужно написать программу, используя цикл с параметром(for i: = a to b do !
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

ksvish2012
MonashevFesenko1483
Dragun1684
ksv89
klimenokvapeshop1408
katrinasvr
lenacari
Viktor1316
Yevgenevna
impulsmc715
nelli-bi6
Владислава531
Aleksandr740
yuliyastatsenko3894
Терентьева