Задания для выполнения
I. Произвести решение уравнений методом Гаусса, методом простой итерации и методом Зейделя.
1)
20,9 x1 + 1,2 x2 + 2,1 x3 + 0,9 x4 =21,70
1,2 x1 + 21,2 x2 + 1,5 x3 + 2,5 x4 =27,46
2,1 x1 + 1,5 x2 + 19,8 x3 + 1,3 x4 =28,76
0,9 x1 + 2,5 x2 + 1,3 x3 + 32,1 x4 =49,72
2)
10,9 x1 + 1,2 x2 + 2,1 x3 + 0,9 x4 = 7,0
1,2 x1 + 11,2 x2 + 1,5 x3 + 2,5 x4 = 5,3
2,1 x1 + 1,5 x2 + 9,8 x3 + 1,3 x4 =10,3
0,9 x1 + 2,5 x2 + 1,3 x3 + 12,1 x4 =24,6
3)
4 ,00 x1 + 0,24 x2 - 0,08 x3 + 0,16 x4 = 8
0,09 x1 + 3,00 x2 - 0,15 x3 - 0,12 x4 = 9
0,04 x1 - 0,08 x2 + 4,00 x3 + 0,06 x4 =20
0,02 x1 + 0,06 x2 + 0,04 x3 - 10,00 x4 = 1
4)
8,714 x1 + 2,180 x2 - 5,684 x3 = 49,91
-1,351 x1 + 10,724 x2 - 5,224 x3 = 50,17
0,040 x1 - 0,459 x2 + 6,799 x3 = 32,68
5)
3 ,82 x1 + 1,02 x2 - 0,75 x3 + 0,81 x4 = 15,655
1,05 x1 + 4,53 x2 - 0,98 x3 - 1,53 x4 = 22,705
0,73 x1 - 0,85 x2 + 4,71 x3 + 0,81 x4 = 23,480
0,88 x1 + 0,81 x2 + 1,28 x3 - 3,58 x4 = 16,110
II. Представить преподавателю 2-е рабочие программы для работы с одномерными и 3 – для работы с двумерными массивами из списка задач (задачи 1-52).
III Представить преподавателю 1 программу обработки файлов (задачи 53-60).
Список задач
1. Даны два числа М и N и два упорядоченных массива A[1]≤A[2]≤....≤A[M] и B[1]≤B[2]≤....≤B[M] Образовать из этих элементов упорядоченный массив
C[1]≤C[2]≤....≤C[M+N].
Указание. Эта важная задача принципиально должна быть выполнена за M+N действий. Возьмем из А и В по первому элементу. Меньший из них занесем в С и заменим следующим из того же массива. Снова выберем меньший из двух, занесем в С и т.д. После каждого сравнения в С добавляется элемент - значит, сравнений будет меньше, чем M+N . Нужно только позаботиться о том, чтобы программа работала верно и при исчерпании одного из массивов.
2. В массиве Х[1..N] каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы сначала располагались все нули, затем все единицы и. наконец, все двойки (дополнительного массива не заводить!).
3. Дан двухмерный массив А[1..m,1..n]. Написать программу построения одномерного массива В[1..m], элементы которого соответственно равны а) суммам элементов строк, б) произведениям элементов строк, в) средним арифметическим элементов строк.
4. Найти наибольший элемент данного массива и указать номер этого элемента.
5. Расположить элементы данного массива в обратном порядке (первый элемент меняется с последним, второй - с предпоследним и т.д. до середины; если массив содержит нечетное количество элементов, то средний остается без изменения).
6. В данном массиве поменять местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных местах
7. Найти сумму элементов, стоящих на четных местах в заданном массиве.
8. Элементы массива А записать в виде массивов В и С, причем в массив В записать элементы, стоящие на нечетных местах в массиве А, а в массив С записать элементы, стоящие на четных местах в массиве А
9. Определить, сколько чисел входят в данный массив только по одному разу (более, чем по одному разу).
10. Массив А[1..30,1..7] содержит два (и только два) одинаковых числа. Требуется напечатать их индексы. (Обратите внимание на то, чтобы никакой элемент массива не сравнивался сам с собой)
11. Массив А[1..5,1..7] содержит вещественные числа. Требуется ввести целое число К и вычислить сумму элементов А[I,J], для которых I+J=K. Прежде, однако следует убедиться, что значение К позволяет найти решение, в противном случае нужно напечатать сообщение об ошибке.
12. Заполнить двухмерный массив Т[1..n,1..n] последовательными целыми числами от 1 до n2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке,
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
13. Дан массив А[1..N,1..N]. Составить программу, которая прибавила бы каждому элементу данной строки элемент, принадлежащий этой строке и главной диагонали
14. В данном одномерном массиве целых чисел найти максимальное значение и все номера членов последовательности, равных ему.
15. В данном двухмерном массиве А[1..n,1..n] с целыми коэффициентами для каждой строки найти максимальное значение элемента в этой строке, напечатать этот элемент и его индексы.
16. В данной последовательности целых чисел переставить члены так, чтобы положительные числа шли в порядке возрастания в начале массива.
17. В данной последовательности целых чисел найти количество различных четных неотрицательных чисел.
18. Написать программу замены положительных элементов вещественного массива Y[1..N] на 0.
19. В данном двухмерном массиве А[1..n,1..n] с целыми коэффициентами для каждого столбца найти минимальное значение элемента в этом столбце, напечатать этот элемент и его индексы.
20. В данном числовом массиве найти число повторений элемента, равного заданному.
21. В данной последовательности целых чисел найти количество различных чисел.
22. Найти максимальный элемент среди отрицательных элементов массива А[1..7].
23. Требуется ввести последовательность целых чисел и проверить, есть ли среди них отрицательные. Если они есть, вывести новую последовательность, состоящую из отрицательных членов исходной последовательности, записанных в том порядке, в каком они встречались в исходной.
24. В данной последовательности чисел найти минимальное значение среди положительных элементов и его порядковый номер.
25. Для вещественного массива Y[1..n] определить порядковые номера целых элементов.
26. Для вещественного массива Y[1..n] подсчитать количество его целых элементов.
27. Вычислить след заданной квадратной матрицы A[N,N]. След квадратной матрицы - это число, равное сумме элементов главной диагонали.
28. Для вещественного (целого) массива А[1..N] найти сумму всех элементов, имеющих: а) четные порядковые номера; б) нечетные порядковые номера.
29. Составить программу, увеличивающую ненулевые элементы линейного вещественного массива Y[1..N] на 1.
30. Для линейного вещественного массива Y[1..N] подсчитать количество элементов, имеющих ненулевую дробную часть.
31. Для линейного целого (вещественного!) массива А[1..N] найти сумму всех элементов: а) равных заданному числу 0; б) не равных заданному числу D; в) больше заданного числа D; г) не больше заданного числа 0; д) меньше заданного числа D; е) не меньше заданного числа D.
32. Из массива А[1..N, 1..N] сформировать массив В[1..N2 ], "развернув" его по столбцам (по строкам).
33. Осуществить циклическую перестановку элементов массива: первый элемент должен стать вторым, второй - третьим и т.д., последний - первым. Нового массива не заводить.
34. Написать программу, находящую в двухмерном массиве номера строк с наибольшей суммой элементов.
35. Из массива В[1..8] убрать все отрицательные элементы, заменив их на значения предыдущих элементов.
36. Найти наибольшее из всевозможных попарных произведений элементов массива А[1..4].
37. Определить, имеются ли в массиве А[1 ..4,1..4] строки, равные первой строке.
38. Вывести элементы той строки двухмерного массива Т[1..N,1..М], сумма элементов которой максимальна.
39. Произвести сортировку массива M[1..10] по возрастанию значений элементов. Полученный массив вывести на экран.
40. Написать программу заполнения массива А[1..N,1..N] нулями и единицами в шахматном порядке.
41. Просуммировать элементы двухмерного массива, сумма индексов которых равна заданной константе
42. Заполнить квадратную матрицу NxN последовательными числами от 1 до 100 по спирали.
43. Написать программу, которая меняет местами значения элементов двухмерного массива А[1..N,1.. N], симметричных относительно "вертикальной оси" соответствующей матрицы.
44. Написать программу замены строк соответствующими столбцами в квадратной матрице А[1..N,1.. N] (транспонирование)
45. Написать программу определения номера строки и столбца двухмерного массива чисел А[1..N,1..N], на пересечении которых находится наибольший элемент.
46. Написать программу, которая позволяет напечатать таблицу Пифагора Таблица Пифагора - это квадратная матрица из 10 строк и 10 столбцов, каждый элемент которой определяется формулой: A[i,j]=i*j
47. Заполнить массив А следующим образом:
1 2 . . . 10
11 12 . . . 20
21 22 . . . 30
. . .
91 92 . . . 100
48. Определить, симметрична ли заданная целая квадратная матрица n-го порядка (относительно главной диагонали).
49. Дана матрица NxM Переставляя ее строки и столбцы, переместить наибольший элемент в верхний левый угол.
50. Заполнить массив А следующим образом:
1 2 3 . . . 10
0 1 2 . . . 9
0 0 1 . . . 8
. . .
0 0 0 . . . 1
51. Получить массив В из массива А удалением n-й строка и k-го столбца.
52. Преобразовать массив S, "поворачивая" его вокруг центра на 90 градусов против часовой стрелки.
53. Описать функцию getInt(Name,k) целого типа, возвращающую k-й элемент файла целых чисел с именем Name (элементы нумеруются от 0). Если файл не содержит k-го элемента, то функция возвращает 0. С помощью этой функции вывести пять элементов данного файла с указанными номерами.
54. Описать функцию getLine(Name,k) строкового типа, возвращающую k-ю строку текстового файла с именем Name (строки нумеруются от 0). Если файл не содержит k-й строки, то функция возвращает пустую строку. С помощью этой функции вывести пять строк данного файла с указанными номерами.
55. Описать функцию IntFileSize(Name) целого типа, возвращающую размер файла целых чисел с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами.
56. Описать функцию TextSize(Name) целого типа, возвращающую число строк в текстовом файле с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами.
57. Описать процедуру InvertIntFile(Name), меняющую порядок следования элементов файла целого типа с именем Name на противоположный. Если файл не существует или содержит менее двух элементов, то процедура не выполняет никаких действий. Обработать с помощью этой процедуры три файла с данными именами.
58. Описать процедуру SplitIntFile(Name0,k,Name1,Name2), копирующую первые k (>=0) элементов существующего файла целых чисел с именем Name0 в файл Name1, а остальные элементы — в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k.
59. Описать процедуру SplitText(Name0,k,Name1,Name2), копирующую первые k (>=0) строк существующего текстового файла с именем Name0 в файл Name1, а остальные элементы — в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k.
60. Описать процедуру CodeText(Name,k), шифрующую текстовый файл с именем Name, выполняя циклическую замену каждой русской буквы на букву, расположенную в алфавите на k-й позиции после исходной (0<k<11). Например, при k = 3 "А" перейдет в "Г", "а" — в "г", "Я" — в "В". Букву "ё" в алфавите не учитывать, прочие символы файла не изменять. Используя эту процедуру и зная k, зашифровать1|расшифровать2 данный файл.