Алгоритмы и способы их описания Понятие алгоритма - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
4. Перечень экзаменационных тем Дисциплина «Алгоритмы и их сложность» 1 69.64kb.
Алгоритмы и программирование Урок 1 Понятие алгоритма. Линейные алгоритмы 1 168.58kb.
Вопросы к зачету «Теория алгоритмов» 1 7.27kb.
Программа «Системы корпоративного управления» 1 50.59kb.
Команд исполнителя (на примере учебного исполнителя). Свойства алгоритма. 1 119.82kb.
введение. 3 Понятие алгоритма и его свойства. 4 Способы описания... 6 515.83kb.
М. В. Ломоносова Специальность "Физика атомного ядра и частиц" Билет... 1 219.98kb.
Алгоритмы и способы повышения точности работы системы ориентации... 1 311.94kb.
Лабораторная работа №1 "исследование одноключевых блочных криптографических... 1 45.8kb.
1 краткая история возникновения квантовой механики 1 253.19kb.
Лабораторная работа №4 «симметричные криптоалгоритмы» Студенты гр. 1 100.25kb.
Лекция №2 (16. 02. 10) Определение 4 1 51.47kb.
Направления изучения представлений о справедливости 1 202.17kb.

Алгоритмы и способы их описания Понятие алгоритма - страница №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

Содержание отчета.


  1. Титульный лист с указанием ФИО студента, номера учебной группы, номера студенческого билета, названия лабораторной работы

2.Название работы.

3.Вариант задания.

4.Результаты подготовки:

- схема алгоритма обработки элементов массива,

- программа на заданном алгоритмическом языке.

5.Итоги работы:

- результаты расчета с текстовыми комментариями.

Контрольные вопросы

1.Какие ограничения накладываются на индексы элементов массивов?

2.Способы описания массивов на языке Си. Понятия размерности массивов, описание размерности массивов.

3.Задание типов элементов массива. Могут ли элементы массива иметь разный тип?

4.Как располагаются элементы массива в памяти?

5.Чем отличаются алгоритмы поиска максимального и минимального элемента массива.

6.Что является общим во всех алгоритмах формирования и обработки массивов?

7. Чем отличаются алгоритмы расчета суммы и подсчета числа элементов массива.



Варианты заданий

Таблица 2


вар.


Исходные данные

Действия по обработке массива

1

Массив Х[30] нецелых элементов задать датчиком случайных чисел.

Записать в массив Y подряд положительные элементы массива Х и найти их среднее арифметическое.



12.13. Матрицы

Двухмерные массивы в математике представляются матрицей:



или сокращенно можно записать: А =, где т - число

строк; n - число столбцов; i,j - индексы (номера) текущих строки и столбца, на пересечении которых находится элемент aij.

Описание двухмерного массива

Описание матрицы задается структурным типом вида:



<тип элементов><имя> [m][ n] ;

где m – количество строк;

n –количество столбцов матрицы.

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

float A [3][5];

В памяти компьютера для элементов матрицы выделяется область, состоящая из 35=15 последовательных ячеек вещественного типа. Из описания видно, что матрица состоит из трех строк и пяти столбцов.

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

А[i][j] aij;

А[2][3] a23;

А[2*n][k+1] a2n,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]

Пример 2. Организовать вывод матрицы М на экран.

Вывод матрицы необходимо реализовать в удобном для чтения виде, т.е. чтобы на одной строке экрана располагалась одна строка матрицы. С этой целью в тело внешнего цикла, помимо внутреннего, включается оператор 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


Обработка матриц

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



  1. Алгоритмы реализуются при просмотре всех элементов матрицы (просмотр может быть с условием). Начальная установка алгоритма выполняется перед двойным циклом. В этом случае запись операторов цикла для параметров i и j осуществляется последовательно друг за другом и имеет вид:

<начальная установка>

for (i = 0; i

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

<тело цикла>;


  1. Алгоритмы реализуются внутри каждой строки или каждого столбца матрицы. В этом случае начальная установка алгоритма выполняется между операторами цикла, записанными для параметров i и j. Например, если алгоритм реализуется для каждой строки, то запись в программе имеет следующий вид:

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

{

<начальная установка>

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);

}

Задача 2. В квадратной целочисленной матрице В= {bij}5х5 вычислить модуль разности между числом нулевых элементов, стоящих ниже главной диагонали, и числом нулевых элементов, стоящих выше главной диагонали.

Введем обозначения:

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);

}
Реализация алгоритмов задач второго типа

Задача 1. В матрице X ={хij}3х6 вещественных чисел первый элемент каждой строки поменять местами с минимальным элементом этой строки. Вывести матрицу X после обмена.

#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];



jmin=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);

}

}

12.14. Лабораторная работа №6



ОБРАБОТКА ДВУХМЕРНЫХ МАССИВОВ

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

Подготовка к лабораторной работе

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

Содержание отчета.


  1. Титульный лист с указанием ФИО студента, номера учебной группы, номера студенческого билета, названия лабораторной работы

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) и работа с ними;

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



Содержание отчета.

  1. Титульный лист с указанием ФИО студента, номера учебной группы, номера студенческого билета, названия лабораторной работы

2. Вариант задания.

3. Результаты подготовки:



  • схема алгоритма обработки файла,

  • программа на заданном алгоритмическом языке.

4. Итоги работы:

  • результаты расчета с текстовыми комментариями

Составить программу решения задачи с использованием файла данных и выполнить ее на ПК. Номер варианта задания должен совпадать с двумя последними цифрами Вашего пароля.

Варианты заданий

Вариант


Условие задачи


I

Создать файл, содержащий массив целых чисел. Найти наименьшее из модулей отклонения чисел от их среднего значения.

<< предыдущая страница  



Некоторые рок-музыканты зарабатывают кучу денег, чтобы запихнуть их себе в нос. Фрэнк Заппа
ещё >>