Лаба по информатике. Лабораторная работа 7. Ниу мэи
Скачать 493.64 Kb.
|
НИУ «МЭИ»Лабораторная работа № 7. Нисходящее проектирование: программы с использованием подпрограмм и модулей. Вариант 14. Выполнила: Ратникова М.А. Группа: Э-01-21 Проверил: Воробьёва И.А. 14 вариант:Дана целочисленная матрица А(n,m). Проверить, равны ли элементы последнего столбца соответствующим элементам предпоследнего столбца. Если да, то найти в этом столбце номер первого элемента, значение которого принадлежит отрезку [x,y]. В противном случае поменять местами последнюю и предпоследнюю строки матрицы. УПЗ:Считать размерность двумерного массива А(n,m) и его элементы из файла. Проверить, равны ли элементы последнего столбца (A[i][m-1]) соответствующим элементам предпоследнего столбца(A[i][m-2]). Если да (flg=True), то найти в этом столбце номер(idx) первого элемента, значение которого принадлежит отрезку [x,y], координаты которого также считываются из файла. В противном случае поменять местами последнюю и предпоследнюю строки матрицы. Таблица данных:
Блок-схемы: Головной модуль Проверка на равенство столбцов Нахождение номера первого элемента, принадлежащего отрезку [x,y] Замена последней и предпоследней строк матрицы
Функциональные тесты:
Код программы: #Головной модуль import checkRavno, search_idx, zamena, readA, readXY, write NMAX=MMAX=10 n=0 m=0 x=0 y=0 idx=0 nameF='test1.txt' nameF2='otrezok.txt' A= [0.0]*NMAX for i in range(NMAX): A[i]=[0.0]*MMAX print('Массив A:\n') A =readA(A, nameF) write(A,n,m) x,y =readXY(nameF2) flg1=checkRavno(A,n,m) if flg1: print('Все элементы последнего и предпоследнего столбцов равны') flg2,idx =search_idx(A,n,m,x,y) if flg2: print('Номер первого элемента из [x,y]: ', idx) else: print('Элемент не был найден.') else: print('Элементы последнего и предпоследнего столбцов не равны. Меняем последнюю и предпоследнюю строки матрицы местами:') zamena(A,n,m) #Ввод и вывод def readA(A, nameF): fd=open(nameF, 'r') s=fd.readline() s_in=s.split(',') n=int(s_in[0]) m=int(s_in[1]) for i in range(n): s=fd.readline() s_in=s.split(',') for j in range(m): A[i][j]=float(s_in[j]) fd.close() return A def readXY(nameF2): fd=open(nameF2, 'r') s=fd.readline() s_in=s.split(',') x=int(s_in[0]) y=int(s_in[1]) return x,y def write(A, n, m): for i in range(n):for j in range(m): print((A[i][j]), end = '') print('\n')#Сама задача #Проверка равенства элементов последнего и предпоследнего столбцов def checkRavno(A,n,m): i=0 flg1=True while (i flg1 = False else: i=i+1 return flg1 #Нахождение номера первого элемента, принадлежащего отрезку [x,y] def search_idx(A,n,m,x,y): i=0 idx=0 flg2=True while (i if ((A[i][m-1] >= x) and (A[i][m-1] <= y)): flg2=False idx=i else: i=i+1 return flg2, idx #Замена последней и предпоследней строк матрицы def zamena(A,n,m): j=0 last = 0 for j in range (m): last = A[n-2][j] A[n-2][j] = A[n-1][j] A[n-1][j] = last print('A=', A) return A |