Разработка и оформление программ. Функции для тестирования. Поиск индекса максимального элемента главной диагонали

Страницы работы

14 страниц (Word-файл)

Содержание работы

Введение. 2

Книги по алгоритмам.. 2

Виды алгоритмов. 2

Парадигмы программирования. 2

Простой пример структурного программирования. 3

Задача. 3

Функции для тестирования. 4

Поиск индекса максимального элемента главной диагонали. 5

Поиск индекса максимального элемента побочной диагонали. 6

Обмен максимальными элементами. 6

Функция main. 6

Языки программирования. 7

Основные конструкции. 7

Производные конструкции. 7

Функции. 8

Типы данных и операторы.. 8

Операторы (арифметические) 8

Более строгий способ построения программ.. 9

Задача нахождения НОД.. 9

Прямой способ. 9

Изучение предметной области. 10

Более строгий алгоритм.. 10

Построение цикла. 11

Проверка правильности. 11

Рекуррентные функции. 12

Примеры рекуррентных функций. 12

Преобразование рекуррентных функций в цикл. 12

Оформление программ.. 13

Оформление кода. 13

Комментарии. 14

Макросы.. 14

Диагностические сообщения. 14

Тестирование. 14


Введение

Книги по алгоритмам

Э. Дейкстра Дисциплина программирования

Ю. Вишняков и др. Простое и сложное в программировании

А. Ахо, Дж. Хопкрофт, Дж. Ульман Построение и анализ вычислительных алгоритмов

Т. Кормен, Ч. Лейзер, Р. Ривест Алгоритмы. Построение и анализ

Д. Кнут Искусство программирования.

Виды алгоритмов

Вычислительные алгоритмы с обычной математикой

Алгоритмы обработки данных

Вычислительные алгоритмы с дискретной математикой

Алгоритмы со “сложной структурой”

Парадигмы программирования

Структурное программирование

Функциональное программирование

Объектно-ориентированное программирование


Простой пример структурного программирования

Задача

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

Решение:

·  Ввести матрицу

·  Найти индекс максимального элемента главной диагонали

·  Найти индекс максимального элемента побочной диагонали

·  Поменять местами элементы

Найти индекс максимального элемента:

·  Индекс максимального элемента ← 1, 1

·  Максимальный элемент  ← элемент с индексом 1, 1

·  Для всех элементов начиная со 2:

o  Если текущий элемент больше максимального

§  Индекс максимального элемента ← индекс текущего элемента

§  Максимальный элемент  ← элемент с текущим индексом

Найти индекс максимального элемента побочной диагонали: Аналогично

Поменять элементы местами:

·  Временный элемент ← первые элемент

·  Первый элемент ← второй элемент

·  Второй элемент ← временный элемент


Функции для тестирования

#include "stdio.h"

#include "stdlib.h"

int n = 8;

int a[8][8];

void RandMatrix();

void PrintMatrix();

int main()

{

    srand(1);

RandMatrix();

    printf("\n Source matrix \n");

    PrintMatrix();

    getchar();

}

void RandMatrix()

// Заполняет матрицу а размером n*n случайным образом

{

    int i, j;

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

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

             a[i][j]=rand();

}

void PrintMatrix()

// Печатает матрицу целых чисел а размером n*n

{

    int i, j;

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

    {  

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

             printf("%5i  ", a[i][j]);

        printf("\n");

    }

}


Поиск индекса максимального элемента главной диагонали

int n = 8;

int a[8][8];

int MaxMain, MaxSide;

void RandMatrix();

void PrintMatrix();

int FindMaxMainDiag();

int main()

{

    RandMatrix();

    printf("\n Source matrix \n");

    PrintMatrix();

    MaxMain = FindMaxMainDiag();

    printf("MaxMain %i\n", MaxMain);

    getchar();

}

int FindMaxMainDiag()

// Возвращает индекс максимального элемента главной диагонали

// матрицы a размером n*n

{

    int i;

int IndexMax = 0;

    int Max = a[0][0];

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

        if (a[i][i] > Max)

        {

             IndexMax = i;

             Max = a[i][i];

        }

    return IndexMax;

}


Поиск индекса максимального элемента побочной диагонали

int FindMaxSideDiag()

// Возвращает индекс максимального элемента побочной диагонали

// матрицы a размером n*n

{

    int i;

    int IndexMax = 0;

    int Max = a[0][7];

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

        if (a[i][n-i-1] > Max)

        {

             IndexMax = i;

             Max = a[i][n-i-1];

        }

    return IndexMax;

}

Обмен максимальными элементами

void SwapMax()

// Меняет местами MaxMain элемент главной диагонали с

// MaxSide элементов побочной

{

    int temp = a[MaxMain][MaxMain];

    a[MaxMain][MaxMain] = a[MaxSide][n-MaxSide-1];

    a[MaxSide][n-MaxSide-1] = temp;

}

Функция main

int main()

{

    srand(2);

    RandMatrix();

    printf("\n Source matrix \n");

    PrintMatrix();

    MaxMain = FindMaxMainDiag();

    MaxSide = FindMaxSideDiag();

    SwapMax();

    printf("MaxMain %i\n", MaxMain);

    printf("MaxSide %i\n", MaxSide);

    printf("\n Result matrix \n");

    PrintMatrix();

    getchar();

}

Языки программирования

Основные конструкции

Последовательное выполнение

С

PHP

Pascal

{

      a = 1;

      a = a+1;

}

{

      $a = 1;

      $a = $a+1;

}

begin

      a := 1;

      a := a+1;

end

Похожие материалы

Информация о работе