Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф_техн_метод_указания_КР_211000(З).DOC
Скачиваний:
3
Добавлен:
16.11.2019
Размер:
2.03 Mб
Скачать

Описание переменных

Идентификатор переменной

Тип данных

Функция, выполняемая в программе

определение

ключевое слово

N

целый

int

Задает размер массива

A

вещественный

float

Указатель на вводимый массива

B

вещественный

float

Указатель на вспомогательный массива

i, j

целый

int

Индексы текущего элемента массива

m

целый

int

Индекс текущего элемента вспомогательного массива В

A[i]

вещественный

float

Элемент основного массива

B[m]

вещественный

floa

Элемент вспомогательного массива

kol

целый

int

Количество повторений элемента в массиве А

М

-

-

Метка

Алгоритм решения задачи

Листинг программы

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#include <conio.h> //библиотека подключения функции getch()

#include <iostream.h> //библиотека для cin и cout

#include <malloc.h> //библиотека для динамического выделения памяти

#include <fstream.h> //библиотека для ввода/вывода в файл

#include <windows.h> //библиотека используется в функции RUS

#include <math.h> //библиотека математических функций

#include <ctype.h> // библиотека проверки принадлежности символов

#include <stdlib.h> // библиотека некоторых стандартных функций

#include <string.h> // библиотека функций работы со строками

//

char bufRus[256];

//---------------------------------------------------------------------------

char* RUS(const char*text) //функция поддержки русского языка

{

CharToOem(text,bufRus);

return bufRus;

}

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

cout<<RUS("***Курсовя работа, задание 3*** \n");

int N,m=0,kol;

cout<<RUS("\nВедите количество элементов в массиве: ");

cin>>N;

float *A= new float[N]; //динамическое выделение памяти

float *B= new float[N];

if(!A||!B) //проверка факта выделения памяти

{

cout<<RUS("\nНедостаточно памяти");

goto M;

}

for(int i=0;i<N;i++) //обнуление вспомогательного массива В

B[i]=0;

cout<<RUS("\nВведите массив\n");

for(int i=0;i<N;i++) //ввод массива А

cin>>A[i];

for(int i=0;i<N;i++) //сортировка

{

kol=0;

for(int j=0;j<N;j++)

if(A[i]==A[j])

kol++;

if(kol==1)

{

B[m]=A[i];

m++;

}

}

delete [] A; //освобождение памяти от введенного массива

A=B; //связывание указателя A с вспомогательным массивом

cout<<RUS("\nОтсортированный массив\n");

for(int i=0;i<N;i++)

cout<<' '<<A[i];

delete [] A; //освобождение памяти от отсортированного массива

M:

cout<<RUS("\nНажмите любую клавишу для завершения программы ...\n");

getch();

return 0;

}

//---------------------------------------------------------------------------

Результаты тестирования программы

ЗАДАНИЕ 4

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

Даны два вещественных массива A(n) и B(m). Вывести тот из них, в котором количество перестановок при сортировке по возрастанию пузырьковым методом больше. Для решения задачи создать функции: для ввода массива, для вывода массива, для вычисления количества перестановок при сортировке по возрастанию пузырьковым методом. Глобальные переменные не использовать.

Метод решения задачи

Так как размерности массивов не заданы числами, то следует массивы А и В объявить динамическими. Кроме того, такой подход позволит передавать данные массивов в функции через указатель. При созданий функций для ввода массива или для вывода массива можно воспользоваться известным кодом для ввода или вывода одномерного динамического массива. Тип данных у этих функций можно задать как void, так как функции ничего не возвращают. В качестве параметров у этих функций используется указатель на массив и размер массива. Для функции ввода это обязательно, так как эта функция должна изменить значения элементов массива при вводе. Использование в качестве параметра размера массива дает возможность написать функции, выполняющие операции с массивами, размер которых задает пользователь. Такой подход позволяет написать функции, которые не используют глобальные переменные.

При созданий функции для вычисления количества перестановок при сортировке по возрастанию пузырьковым методом, можно воспользоваться известным кодом для сортировки одномерного массива, добавив в код счетчик числа перестановок. Функция должна возвратить число перестановок, поэтому тип данных у неё целый. В качестве параметров у этой функции так же используется указатель на массив и размер массива.

Поскольку при сортировке введенные массивы будут изменены, поэтому при решении задачи создаются их копии. Именно с ними выполняется задача сортировки.