Похожие работы
|
Алгоритмы и способы их описания Понятие алгоритма - страница №9/9
![]() 12.12. ЛАБОРАТОРНАЯ РАБОТА №5ФОРМИРОВАНИЕ И ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ Цель работы: Приобретение навыков разработки алгоритмов формирования и обработки одномерного массива. Закрепление понятий базовых структур цикл, разветвление, понятий конечного цикла, рекурсивного алгоритма. Подготовка к лабораторной работе 1.Повторите вопросы организации циклических алгоритмов, понятия конечного цикла, рекурсивного алгоритма. 2.Изучите следующие вопросы и понятия: - массивы данных (размерность массива, обращение к элементу массива, расположение элементов массива в памяти ПК); - правила работы с массивами данных на языке программирования Си: описание массивов, задание типа и размерности массива; - организация циклов для ввода и формирования элементов массива; - алгоритм поиска максимального (минимального) элемента одномерного массива; - алгоритм поиска суммы элементов одномерного массива; - алгоритм подсчета количества элементов одномерного массива, удовлетворяющих поставленному условию; - организация вывода элементов массива. 3. В соответствии с вариантом (таблица 2) разработайте алгоритм обработки элементов массива.
4.Напишите программу на алгоритмическом языке в соответствии со схемой алгоритма, составленной в п.3. После окончания цикла формирования массива организуйте вывод массива и вывод результатов обработки массива. Результаты, например, могут иметь вид: ИСХОДНЫЙ МАССИВ А: 15.583 19.287 28.385 45.621 39.728 5.456 -8.087 3.897 ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ: МАХ = 45.621
2.Название работы. 3.Вариант задания. 4.Результаты подготовки: - схема алгоритма обработки элементов массива, - программа на заданном алгоритмическом языке. 5.Итоги работы: - результаты расчета с текстовыми комментариями.
1.Какие ограничения накладываются на индексы элементов массивов? 2.Способы описания массивов на языке Си. Понятия размерности массивов, описание размерности массивов. 3.Задание типов элементов массива. Могут ли элементы массива иметь разный тип? 4.Как располагаются элементы массива в памяти? 5.Чем отличаются алгоритмы поиска максимального и минимального элемента массива. 6.Что является общим во всех алгоритмах формирования и обработки массивов? 7. Чем отличаются алгоритмы расчета суммы и подсчета числа элементов массива. Варианты заданий Таблица 2
12.13. Матрицы Двухмерные массивы в математике представляются матрицей: ![]() или сокращенно можно записать: А = строк; n - число столбцов; i,j - индексы (номера) текущих строки и столбца, на пересечении которых находится элемент aij.
Описание матрицы задается структурным типом вида: <тип элементов><имя> [m][ n] ; где m – количество строк; n –количество столбцов матрицы. |По описанию матрицы во внутренней памяти компьютера выделяется область из т float A [3][5]; В памяти компьютера для элементов матрицы выделяется область, состоящая из 3 Обращение к отдельным элементам матрицы осуществляется с помощью переменной с двумя индексами, причем индексы, как и для одномерного массива начинаются с нуля. Например: А[i][j] А[2][3] А[2*n][k+1] Ввод-вывод двухмерного массива Для поэлементного ввода и вывода матрицы используется двойной цикл for.... Если задать индекс i как параметр внешнего цикла, а индекс j как параметр внутреннего цикла, то ввод-вывод матрицы осуществляется построчно. Пример 1. Организовать ввод целочисленной матрицы М по строкам. ![]() Описание матрицы вместе с текущими индексами имеет вид: void main() { int М [2][3] ; int i, j; Ввод в программе реализуется в форме диалога, т.е. сопровождается поясняющим сообщением: printf(“Введите матрицу М\n”); for( i = 0; i<2; i++) for( j = 0; j< 3; j++) scanf(“%f”,&m[i][ j]); На клавиатуре желательно для наглядности восприятия набирать элементы матрицы по строкам, отделяя числа друг от друга одним или несколькими пробелами: 1 2 3 [Enter] 4 5 6 [Enter]
Вывод матрицы необходимо реализовать в удобном для чтения виде, т.е. чтобы на одной строке экрана располагалась одна строка матрицы. С этой целью в тело внешнего цикла, помимо внутреннего, включается оператор printf, который переводит курсор к началу следующей строки экрана после вывода текущей строки матрицы. for ( i = 0; i<2; i++) { for ( j = 0; j< 3; j++) printf(“%3d “,m[i][j]); printf(“\n”); } Вывод матрицы на экран будет следующим: 1 2 3 4 5 6
Обработка матриц Базовыми алгоритмами обработки матриц являются те же алгоритмы, которые используются при обработке одномерных массивов. Однако реализацию этих алгоритмов можно условно рассматривать для двух типов задач.
<начальная установка> for (i = 0; i for (j = 0; j< n; j++)
{
for ( j = 0; j< n; j++)
} Ниже рассмотрены примеры программирования задач каждого типа. Реализация алгоритмов задач первого типа Задача 1. Дана матрица вещественных чисел А = {аij}4х6. Вычислить значение Z = Р1/|Р2|, где Р1 и Р2 – произведения положительных и отрицательных элементов матрицы соответственно. #include #include #include void main() { clrscr(); float A [4][6] ; /* описание матрицы А int i,j; float P1,P2,Z; printf(“Введите матрицу А\n”); for ( i = 0; i<4; i++) for ( j = 0;j<6; j++) scanf(“%f”,A[i][j]); Pl=l; /* установка начальных значений P2=1; произведений for ( i = 0; i<4; i++) for ( j =0; j< 6 ;j++) { if (A[i][j]>0) P1= P1*A[i][j]; /* произведение + */ if ( A[i][j]<0) Р2 = P2*A[i][j]; /* произведение - */ }
Z=Pl/abs(P2); printf(“Z=%10.2f ”,Z); }
Введем обозначения: L1 – счетчик нулевых элементов ниже главной диагонали; L2 – счетчик нулевых элементов выше главной диагонали; L = |L1 -L2|. #include #include #include void main() { clrscr(); int B [5][5] ; /* описание матрицы B */ int i, j, LI, L2, L; printf(“Введите матрицу В\n”); for ( i = 0; i< 5; i++) for (j = 0;j<5; j++) scanf(“%d”,B[i][j]); L1 = 0; /* инициализация счетчиков L1 и L2 */ L2 = 0;
for ( i = 0; i< 5; i++) for (j = 0; j< 5; j++) if (B[i][j]==0 ) /* поиск элементов, равных нулю */ { if ( i>j) Ll=L1+1; /* выше главной диагонали */ if ( i }
L = abs(Ll - L2); printf(“L=%d”, L); }
#include #include #include void main() { clrscr(); float X[3][6 ]; // описание матрицы X int i,j,jmin; float min; printf(“введите матрицу X\n”); for(i=0; i<3; i++) /* ввод значений матрицы */ for (j= 0; j<6; j++) scanf(“%f ”,X[i][j]); for(i=0; i<3; i++) { min=+lE6; for (j=0; j<6; j++) if (X[i][j] {
min=X[i][j]; } X[i][jmin]=X[i][0]; // перестановка первого элемента //матрицы с наименьшим X[i,0]=min; } for(i=0; i<3; i++) { for (j=0; j<6; j++) printf(“%8.2f”,X[i][j]); printf(“\n”); } getch(); } Задача 2. Дана матрица вещественных чисел С = {сij}8х4. Вычислить среднее арифметическое каждого столбца. Результат оформить в виде одномерного массива S = {sj};j = ![]() #include #include main()
{ float С[8][4]; float S[4]; int i, j; printf(“Введите матрицу С:\n”); for(i=0; i<8; i++) for (j= 0; j<4; j++) scanf(“%f ”,C[i][j]); for (j= 0; j<4; j++) { S[j]=0;
for(i=0; i<8; i++) S[j]= S[j] + C[i][j]; S[j]=S[j]/8; }
for (j= 0; j<4; j++) printf(“%8.2f”,S[j]); printf(“\n”); getch(); } В приведенной выше программе для вычисления каждого элемента S[j] организован двойной цикл, в котором индекс j является внешним параметром цикла, а индекс i - внутренним. Приведем вариант программы без использования одномерного массива S. #include #include main()
{ float С[8][4]; float S; int i, j; printf(“Введите матрицу С:\n”); for(i=0; i<8; i++) for (j= 0; j<4; j++) scanf(“%f ”,C[i][j]); for (j= 0; j<4; j++) { S=0;
for(i=0; i<8; i++) S:= S + C[i][j]; S = S/8;
printf(“Среднее арифметическое %d -го столбца =%8.2f\n”,j, S); } }
ОБРАБОТКА ДВУХМЕРНЫХ МАССИВОВ Цель работы: Приобретение навыков обработки двухмерного массива. Закрепление понятий базовых структур цикл, разветвление, понятий конечного цикла, рекурсивного алгоритма. Подготовка к лабораторной работе 1.Повторите вопросы организации циклических алгоритмов, понятия конечного цикла, рекурсивного алгоритма. 2.Изучите следующие вопросы и понятия - двухмерные массивы данных (размерность массива, обращение элементу массива, расположение элементов массива в памяти ЭВМ); - организация циклов для ввода элементов двухмерного массива; - алгоритм поиска максимального (минимального) элемента двухмерного массива; - алгоритм поиска суммы элементов двухмерного массива; - алгоритм подсчета количества положительных (отрицательных) элементов двухмерного массива; - правила работы с массивами данных на языке программирования Си: описание массивов, задание типа и размерности массив; - организация вывода элементов массива по строкам. 3. В соответствии с вариантом разработайте алгоритм обработки элементов двухмерного массива.
4.Напишите программу на алгоритмическом языке в соответствии со схемой алгоритма, составленной в п.3. После окончания цикла обработки массива организуйте вывод массива и результатов обработки массива. Выдача в этом случае, например, может иметь вид: ИСХОДНАЯ МАТРИЦА: 15.583 19.287 28.385 45.621 39.728 5.456 -8.087 3.897 4.890 -8.789 34.008 56.905 -5.789 21.908 94.007 56.345 -6.098 0.087 0.000 -6.098 -8.000 0.000 5.089 8.789 0.000 ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ: МАХ В 1 СТРОКЕ= 45.621 МАХ В 2 СТРОКЕ= 5.456 МАХ В 3 СТРОКЕ= 94.007 МАХ В 4 СТРОКЕ= 56.345 МАХ В 5 СТРОКЕ= 8.789
2.Вариант задания. 3.Результаты подготовки: - схема алгоритма обработки элементов массива, - программа на заданном алгоритмическом языке. 4.Итоги работы: - результаты расчета с текстовыми комментариями. Контрольные вопросы 1.Какие ограничения накладываются на индексы элементов массивов? 2.Способы описания массивов на языке Си. Понятия размерности массивов, описание размерности массивов. 3.Задание типов элементов массива. 4.Как располагаются элементы двухмерного массива в памяти? 5.Чем отличаются алгоритмы поиска максимального и минимального элемента массива, расчета суммы и подсчета числа положительных (отрицательных) элементов массива для массива в целом и для каждой его строки (столбца)? 6.Особенности организации ввода – вывода двухмерных массивов на языке Си.
Дана матрица А (5*5) нецелых элементов. -3.8 0 5.3 4.5 0.5 0.2 -1.3 0 -8.5 3.5 -1.1 1.8 5.1 -8.2 0.32 0 -0.3 0 -1.28 0.52 -0.3 0.5 1.8 -7.3 5.5 Составить программу для обработки исходной матрицы в соответствии с индивидуальным заданием. Варианты заданий 1.Сформировать одномерный массив Х из элементов главной диагонали матрицы А и найти максимальный элемент массива и его номер. 12.19. Лабораторная работа №7 СОЗДАНИЕ И ОБРАБОТКА ФАЙЛОВ Цель работы: Приобретение навыков создания и обработки текстовых и бинарных файлов. Подготовка к лабораторной работе Для успешного выполнения лабораторной работы необходимо изучить следующие вопросы Части 2 раздела 15 лекционного курса: - понятие файла; типы файлов; - описание структурированных данных (struct) и работа с ними; - стандартные функции работы с файлами: открытие , закрытие файла, чтение информации из файла и запись информации в файл, нахождение конца файла и т.д. Содержание отчета.
2. Вариант задания. 3. Результаты подготовки:
4. Итоги работы:
Составить программу решения задачи с использованием файла данных и выполнить ее на ПК. Номер варианта задания должен совпадать с двумя последними цифрами Вашего пароля. Варианты заданий
<< предыдущая страница |
ещё >> |