Текст программы на языке Python 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Текст программы на языке Python



# В качестве матрицы используется тип list

# (список), элементами которого являются списки

print("Введите N -- размер квадратной матрицы C: ")

N=int(input())  

C = [] # Создаем пустой список строк

# в Python списки индексируются с 0:

for i in range(0, N):

C.append([])

# Добавляем пустой список элементов i-й строки

for j in range(0, N):

print("Введите C[{0},{1}]: ".format(i+1,j+1))

C[i].append(float(input()))

print("Исходная матрица:")

for i in range(0, N):

for j in range(0, N):

print("{0:8.3}".format(C[i][j]),sep='',end=' ')

print(" ")

min = abs(C[0][0])

for i in range(1, N):

# i = 1,..., N-1 - всего N-1

if abs(C[i][i]) < min:

min = abs(C[i][i])

print("min = {:6.2}".format(min))

Текст программы в системе Матлаб

n=input('Введите размер матрицы n ');

disp('Введите элементы матрицы');

for i=1:n

for j=1:n

c(i,j)= input(' ');

end

end

min=abs(c(1,1));

for i=2:n

ab=abs(c(i,i));

if ab < min

min=ab;

end

end 

disp('Элемент главной диагонали,')

disp(sprintf('наиболее близкий к 0 =%6.2f',min))

С использованием матричных операций и функций

n=input('Введите размер матрицы n ');

disp('Введите элементы матрицы');

for i=1:n

for j=1:n

c(i,j)= input(' ');

end

end

min_el= min(abs(diag(с)));

disp('Элемент главной диагонали,')

disp(sprintf('наиболее близкий к 0 =%6.2f',min_el))

 

Задача 44. Проверка элементов в части матрицы, ограниченной диагональю

Условие задачи. Дана целочисленная квадратная матрица С. Найти в ней среднее арифметическое элементов, кратных 3 или заканчивающихся цифрой 3, среди элементов, лежащих ниже главной диагонали.

В данной задаче исходным данным является матрица целых чисел А. Ее размер в условии не определен. Поэтому число строк и число столбцов матрицы (целочисленное n) также является исходным данным и должно вводиться пользователем. Результатом будет среднее арифметическое некоторых элементов, удовлетворяющих условию, — вещественное число s.

Элементы, лежащие ниже главной диагонали, находятся в строках со второй по последнюю, причем во второй строке под диагональю находится только один элемент, в третьей — два, в четвертой — три, в последней — n -1. То есть в каждой строке матрицы требуется рассматривать только элементы, начиная с первого и заканчивая элементом, предшествующим лежащему на главной диагонали. С учетом того, что у диагональных элементов номер строки и столбца совпадает, элемент, лежащий слева, будет иметь номер столбца, на 1 меньше номера строки. Таким образом, для перебора всех элементов под главной диагональю требуется организовать два цикла: внешний, изменяющий номер строки i от 2 до n, и внутренний, изменяющий номер элемента в строке j от 1 до i-1.

Для вычисления среднего требуется сначала вычислить сумму s и количество k удовлетворяющих поставленным условиям элементов среди рассматриваемых, затем поделить сумму на количество. Кратность трем можно проверить, сравнив с нулем остаток от деления числа на 3 (операцию получения остатка от деления, как и во всех предшествующих задачах, обозначим mod). Последняя цифра – остаток от деления числа на 10.

Структурированная запись алгоритма 44

1. Ввести размеры матрицы n и элементы самой матрицы А.

2. Обнулить счетчик k =0.

3. Обнулить сумму s =0.

4. В цикле для каждой строки i =2, n повторять:

4.1. в цикле для каждого элемента строки j =1, i -1 повторять:

Если A[i,j] mod 3 = 0 или A[i,j] mod 10 = 3, то

4.1.1. Увеличить сумму s=s+A[i,j]

4.1.2. Увеличить количество k = k +1

5. Если k >0,

5.1. то вычислить среднее s = s / k и вывести его на экран,

5.2. иначе вывести сообщение «Элементов, кратных 3 или оканчивающихся на 3, в массиве нет»

Схема алгоритма

Текст программы на языке Си

#include <stdio.h>

int main (void)

{

int a[20][20], n, i, j, k=0, s=0;

printf (″Введите размер квадратной матрицы\n″);

scanf (″%d”, &n);

if (n>20) n=20;

printf (″Введите значения элементов:\n″);

for (i=0; i<n; i++)

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

    scanf (″%d″, &a[i][j]);

for (i=1; i<n; i++)

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

    if (a[i][j]%3==0 || a[i][j]%10==3)

    {

       s+=a[i][j];

       k++;

    }

if (k>0)

printf (″S = %lf″, (double)s/k);

else

printf (″Элементов, кратных 3 или\
оканчивающихся на 3, под диагональю нет″);

return 0;

}  

Программа на языке Паскаль

Program Pr_44;

var a: array [1..20, 1..20] of integer;

n, i, j, k, s: integer;

begin

writeln (ʹВведите размер квадратной матрицы’);

read (n);

if n>20 then n:=20;

writeln (ʹВведите значения элементов:’);

for i:=1 to n do

   for j:=1 to n do

    read (a[i,j]);

s:=0; k:=0;

for i:=2 to n do

   for j:=1 to i-1 do

    if (a[i,j] mod 3 = 0)or(a[i,j] mod 10 = 3)

      then begin

         s:=s+a[i,j];

         k:=k+1

      end;

if k>0

then write (‘S =’, s/k:8:2)

else write (ʹЭлементов, кратных 3 или ‘,
    ʹоканчивающихся на 3, под диагональю нет’)

end.



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 190; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.12.172 (0.006 с.)