Си++: решение задач с использованием массивов

Решение задач с использованием массивов: теоретическая часть и математическая формулировка задач. Многомерные массивы и инициализация элементов массива. Алгоритмы сортировки массивов и применение при решении задач. Код программы, обнуление матрицы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.02.2011
Размер файла 885,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Ташкентский Университет Информационных технологий

Факультет Информационных Технологий

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

Компьютерной графики

массив задача инициализация код матрица

Курсовая работа

По информатике

Си++. Решение задач с использованием массивов

Выполнила: студентка 1-го курса,

гр. 226-09 ИТр

Тен Наталья

Приняла: Идиатулина Э. М.

Ташкент 2010

Оглавление

  • 1. Теоретическая часть
    • 2. Математическая формулировка задачи
    • 3. Алгоритм решения задачи
    • 4. Код программы
    • 5. Тестовые примеры
    • 6. ЗАКЛЮЧЕНИЕ

7. Список использованной литературы

1. Теоретическая часть

1. Одномерные (линейные) массивы

Линейным массивом в программе на C++ называется упорядоченный набор однотипных переменных, которые располагаются в памяти последовательно

Размещено на http://www.allbest.ru/

Массив является простейшей структурой данных, облегчающей работу с большими объемами информации путем их упорядочения. В случае с массивами, упорядочение происходит за счет индексирования элементов, то есть обращения к каждому из них по порядковому номеру. Показанный на рисунке массив состоит из n элементов с индексами от 0 до n-1, в который записаны числа 5, 21, 0, 12 и т.д.

Любой массив в C++ характеризуется тремя параметрами: именем, типом элементов и размером. Как и обычная переменная, перед использованием массив должен быть объявлен. Общая форма записи объявления:

тип_элементов имя_массива[размер_массива];

Здесь тип_элементов - это любой из известных стандартных типов (int, float, double, char и т.д.), имя_массива - уникальное имя (идентификатор), используемое для обращения к массиву, размер_массива - количество его элементов. В качестве последнего параметра в объявлении может быть использована только целочисленная константа или константное выражение. Примеры объявлений

int A[15]; // массив из 15 целочисленных элементов с именем A

float x[3]; // массив x из 3-х элементов типа float

Объявление массива является командой компилятору на выделение памяти для хранения его элементов. Общее количество выделенной памяти зависит не только от числа элементов, но и от размера каждого элемента, то есть от его типа. Например, текстовая строка из 1000 символов (тип char) займет P = 1000*sizeof(char) = 1000 байтов, а массив из такого же количества вещественных чисел двойной точности (тип double) займет уже в восемь раз больше - P = 1000*sizeof(double) = 8000 байтов.

Нумерация элементов в массиве начинается с нуля. Таким образом, первый элемент массива имеет индекс 0, а последний - индекс n-1, где n - размер массива. Обращение к элементу производится с использованием имени массива и индекса элемента в квадратных скобках. Например, запись “x[0] = 5.5;” означает “присвоить значение 5.5 нулевому элементу массива x”.

Для работы с массивами характерным является использование итерационных циклов for. С их помощью организуется выполнение однотипных операций со всеми элементами массива, в частности, поэлементный ввод-вывод, поэлементные арифметические операции и др. Рассмотрим это на следующем примере.

Пример 1. Напишите программу, запрашивающую у пользователя 10 целых чисел, и выводящую ее на экран их сумму.

Решение. Будем использовать массив с именем A и размером 10 для хранения введенных чисел. Ввод данных и суммирование организуем поэлементно с помощью циклов for.

//----------- Сумма элементов массива -------------

#pragma hdrstop

#include <conio.h>

#include <iostream.h>

#pragma argsused

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

{

int A[10]; // объявляем массив из 10 целых

for(int i=0; i<10; i++) // организуем цикл по i от 0 до 9

{

cout << "input A[" << i << "] = "; // приглашение

cin >> A[i]; // вводим A[i]

}

int sum = 0; // объявляем переменную

for(int i=0; i<10; i++) // организуем цикл

sum = sum + A[i]; // в цикле суммируем элементы

cout << "\nSumma: " << sum; // выводим результат на экран

getch(); // задержка

return 0;

}

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

2. Многомерные массивы

Массивы в программах C++ могут быть не только линейными. Довольно частым является использование двух - (и более) -мерных структур. К примеру, прямоугольная матрица - типичная структура, представимая с помощью двумерного массива; а 3D-тензор может быть записан как соответствующий трехмерный массив.

Многомерный массив в C++ организован по принципу «массива массивов». Общий формат его объявления

тип имя[N1][N2]…[NM];

Размещено на http://www.allbest.ru/

Здесь M - число индексов (или размерность) массива. Индексы изменяются в пределах от 0 до N1 - 1, от 0 до N2 - 1, от 0 до N3 - 1, ..., от 0 до NM - 1, соответственно.

К примеру, запись int G[5][4]; означает объявление двумерного массива целых чисел с именем G и размерами 54. На рис. справа такой массив представлен в виде таблицы. Здесь первый индекс является номером строки, второй - номером столбца таблицы, с диапазонами изменения от 0 до 4, и от 0 до 3, соответственно.

Доступ к элементам многомерного массива в программе производится так же, как и в одномерном случае, то есть путем указания имени массива и набора индексов в квадратных скобках. Например, операция присваивания значения 0 последнему элементу будет записана как G[4][3] = 0.

При работе с многомерными массивами удобно использовать вложенные циклы for. С их помощью можно выполнить заданное действие с каждым из элементов массива путем перебора всех значений индексов. Приведенный ниже фрагмент программного кода выводит на экран все элементы массива G.

for(int i=0; i<5; i++) // цикл по строкам i

{

for(int j=0; j<4; j++) // цикл по строкам j

cout << G[i][j] << “\t”; // выводим G[i][j]

cout << endl; // перевод на новую строку

}

Алгоритм работы этого фрагмента иллюстрируется следующей блок-схемой

Размещено на http://www.allbest.ru/

Здесь внешний цикл по I последовательно пробегает все значения от 0 до 5. При каждом i запускается внутренний цикл по j от 0 до 4. В теле этого цикла на экран выводятся значение элемента G[i][j] и знак табуляции (горизонтальный отступ). Внутренний цикл продолжается до тех пор, пока не будут перебраны все значения j, то есть не будет выведена вся i-я строка. По завершении внутреннего цикла, экранный курсор перемещается на новую строку манипулятором endl, и далее внешний цикл продолжает свою работу, последовательно выводя на экран другие строки массива.

Пример 2. Имеется вещественная квадратная матрица размером 44. Напишите программу, вычисляющую произведение элементов в каждой ее строке. Матрица вводится с клавиатуры.

Решение. Условимся использовать для хранения матрицы массив float X[4][4]. Расчет произведения реализуем согласно следующему алгоритму. Введем вспомогательную переменную (к примеру, float P). Заметим, что в i-й строке расположены элементы X[i][j], где j меняется от 0 до 3, включительно. Организуем цикл по j, внутри которого будем домножать P на X[i][j]. Тогда на выходе из цикла P будет содержать искомое произведение. Выведем его на экран и продолжим расчеты для следующей строки. Для правильной работы алгоритма перед началом расчетов в каждой строке матрицы необходимо присвоить P значение 1.

//-------- Произведение элементов строки ----------

#pragma hdrstop

#include <conio.h>

#include <iostream.h>

#pragma argsused

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

{

float X[4][4]; // объявляем массив 44

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

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

{

cout << "input X[" << i <<

"," << j << "] = ";

cin >> X[i][j]; // вводим элементы матрицы

}

cout << "\n Results:\n";

for(int i=0; i<4; i++) // цикл по строкам

{

float P = 1.0; // вспомогательная переменная

for(int j=0; j<4; j++) // цикл по элементам в строке

P = P * X[i][j]; // домножаем P на X[i][j]

cout << "\n proizvedenie " << i

<< "-i stroki = " << P; // выводим результат на экран

}

getch();

return 0;

}

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

3. Инициализация элементов массива

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

тип имя[размерN] = { знач1, знач2, знач3, ..., значN };

Запись означает, что сразу после размещения массива в оперативной памяти каждому из элементов должно быть присвоено соответствующее значение из списка. Если список значений в фигурных скобках короче, чем размер массива, то оставшиеся элементы будут инициализированы значением по умолчанию, то есть обнулены.

В следующем примере

float mark[5] = { 7.3, 4.0, 2.2, 12.1, 8.9 };

создается массив с именем mark, состоящий из 5 чисел типа float, которые инициализируются значениями 7.3, 4.0, 2.2 и т.д. Это эквивалентно следующему набору операторов

float mark[5]; mark[0]=7.3; mark[1]=4.0; mark[2]=2.2 и т.д.

Многомерный массив также может быть инициализирован в строке объявления. Для этого достаточно помнить о том, что многомерный массив в C++ - это «массив массивов», о чем уже говорилось выше. Пример

int F[3][3] = { {3, 0, 2} , (1, 9, 8}, {5, 7, 4} };

Здесь создается двумерный массив с именем F и размерами 33, элементы которого получают начальные значения F[0][0] = 3, F[0][1] = 0, F[0][2] = 2, F[1][0] = 1 и т.д.

Пример 3. Пусть и - две квадратные матрицы размером 33. Требуется написать программу, рассчитывающую их произведение

Решение. Искомое произведение - это также матрица 33, элементы которой рассчитываются по формуле (). Аналогично Примеру 1, организуем суммирование с помощью вспомогательной переменной s и цикла по k. Для перебора всех используем два дополнительных вложенных друг в друга цикла по i и по j. Эти циклы будут внешними по отношению к циклу по k.

//-------------- Перемножение матриц --------------

#pragma hdrstop

#include <conio.h>

#include <iostream.h>

#pragma argsused

const int N = 3; // используем константу N=3

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

{

float A[N][N] = { {1, 1, 1},

{2, 2, 2},

{3, 3, 3} }; // исходная матрица A

float B[N][N] = { {1, 2, 3},

{1, 2, 3},

{1, 2, 3} }; // исходная матрица B

float C[N][N]; // матрица произведения С

for(int i=0; i<N; i++) // цикл по строкам С

{

for(int j=0; j<N; j++) // цикл по столбцам С

{

float s = 0.0; // вспомогательная переменная

for(int k=0; k<N; k++) // цикл суммирования по k

s += A[i][k]*B[k][j]; // добавляем к s новое слаг-ое

C[i][j] = s; // записываем s в C[i][j]

}

}

cout << " Results: \n"; // далее выводим C на экран

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

{

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

cout << C[i][j] << "\t";

cout << endl;

}

getch();

return 0;

}

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

2. Математическая формулировка задачи

Задача № 1:

Задан список участников соревнований по плаванию и их результаты. Напечатать фамилию и результат чемпиона. Расположить результаты и фамилии участников в соответствии с занятыми местами.

Задача сводится к упорядочению массива результатов в порядке возрастания, но при выполнении перестановки в массиве результатов нужно переставлять соответствующие элементы и в массиве фамилий.

Задача № 2:

Сформировать из матрицы А (10,10) матрицу В (10,10) по следующим правилам:

1) элементы матриц А и В принимают только значения 0 или 1;

2) соседями элемента aij считаются все элементы, расположенные рядом с данным по горизонтали, вертикали или диагонали;

3) если сумма S значений соседей элемента aij меньше двух или больше трех, то bij=0;

4) если сумма S значении у соседей элемента aij равна двум, то aij=bij ;

5) если сумма S значении у соседей элемента aij равна трем, то bij=1.

По окончании формирования матрицы В значения элементов построчно вывести на печать, заменяя 0-символом i , 1- символом *

Для решения задачи, нужно заполнив предварительно нулями матрицу В, просматривать элементы матрицы А и для каждого определить сумму элементов, являющихся ее соседями. В зависимости от ответа присваивать элементу массива В соответствующее значение (значение 0 присваивать не нужно). Перед выводом на печать преобразовать матрицу В к символьному виду. Чтобы просмотр элементов матрицы А и суммирование ее соседей не зависело от того, находится элемент на границе или со всех сторон имеет соседей, можно работать с расширенной матрицей 12*12. Элементам расширяющим матрицу (i=1,12; j=1,12), значений не присваивать, они всегда имеют значения 0.

Задача №3:

Составить программу для контроля знаний. В программе задается один вопрос, ответ на который включает несколько наименований (например, «Назовите все элементы периодической системы, представляющие группу галогенов?» или «Назовите все города с населением свыше одного миллиона?» и т. п.). В памяти ЭВМ хранится список наименований, являющийся полным ответом на вопрос. Введенный ответ необходимо сравнить с правильным.

Решение задачи требует использования подпрограмм. Список наименований, являющийся полным ответом на вопрос, хранить в символьном массиве. Ответы обучаемого вводить в другой символьный массив. Для повышения эффективности программы можно правильные ответы ввести в массив упорядоченными (или упорядочить сразу после ввода), а после ввода ответов, перед сравнением, упорядочить и массив ответов. Для сравнения использовать алгоритм сравнения двух упорядоченных массивов. Алгоритмы упорядочения массивов и сравнения двух упорядоченных массивов оформить в виде подпрограмм.

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

Задача №1:

Задача №2:

Задача №3:

4. Код программы

Задача №1:

#include <iostream.h>

#include <conio.h>

using namespace std;

int main(){

int const SIZE = 5;

int i, j , temp, a[SIZE];//={30, 40, 35, 28, 37};

char *b[SIZE];// ={"Ivanov", "Petrov", "Sidorov", "Medvedev", "Kirkorov"} ;

char *tempname;

char buff[100];

for (int k = 0; k<SIZE; k++) //Ручной ввод

{

cout << "Введите фамилию участника\n";

cin >> buff;

b[k] = &buff[0];

cout << "Введите бал\n";

cin >> a[k];

}

// печатаем исходные массивы

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

cout << b[i] << " - " << a[i] << endl;

// сортируем пузырьком и изменяем фамилии

for( i=0; i < SIZE; i++) {

for( j = SIZE-1; j > i; j-- ) {

if ( a[j-1] > a[j] ) {

temp=a[j-1]; tempname = b[j-1];

a[j-1]=a[j]; b[j-1]=b[j];

a[j]=temp; b[j]=tempname;

} } }

// печатаем результаты

cout << "==========" << endl;

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

cout << (i + 1) << " place : " << b[i] << " - " << a[i] << endl;

getch();

return 0;}

Задача№2:

#include <iostream.h>

using namespace std;

 const short size = 5; // Размерность матрицы

int main ()

{ int buff , flag = 0;

int summ = 0;

int matrixA[size][size] = {

{1,1,0,0,1},

{1,0,1,1,0},

{0,0,1,0,1},

{1,0,0,1,0},

{0,1,1,1,0},

}; // Инициализация матрицы 5х5

int matrixB[size][size];

for (int i = 0; i <size;i++) // Обнуление матрицы B

{

for (int l = 0; l< size; l++)

{

matrixB[i][l] = 0;

}

}

/*for (int i = 0; i < size;i++) // Ручной ввод.

{

do

{

cin >> buff;

if (buff == 0 || buff == 1){matrixA[i][flag] = buff; flag++; cout << "ok";}

else{cout << "Попробуй еще раз !\n";}

}while(flag != size);

cout << i << "test\n";

flag = 0;

}*/

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

{

for (int l = 0; l<size;l++)

{

if (i == 0 && l == 0) //Верхний левый угол

{

summ +=matrixA[i][l+1];

summ +=matrixA[i+1][l];

summ +=matrixA[i+1][l+1];

}

if (i == size-1 && l == 0) // Нижний левый угол

{

summ +=matrixA[i-1][l];

summ +=matrixA[i][l+1];

summ +=matrixA[i+1][l+1];

}

if(i == 0 && l == size-1) // Верхний правый

{

summ +=matrixA[i+1][l];

summ +=matrixA[i+1][l-1];

summ +=matrixA[i][l-1];

}

if (i == size-1 && l==size-1) // Нижний правый

{

summ +=matrixA[i-1][l];

summ +=matrixA[i][l-1];

summ +=matrixA[i-1][l-1];

}

if ((i > 0 && i<size-1) && l == 0) // Левый столбец

{

summ +=matrixA[i+1][l];

summ +=matrixA[i][l+1];

summ +=matrixA[i+1][l];

summ +=matrixA[i+1][l+1];

summ +=matrixA[i-1][l+1];

}

if ((i > 0 && i<size-1) && l == size-1) // Нижняя строка

{

summ +=matrixA[i-1][l];

summ +=matrixA[i+1][l];

summ +=matrixA[i][l-1];

summ +=matrixA[i+1][l-1];

}

if (i == 0 && (l > 0 && l <size-1)) // Правый столбец

{

summ +=matrixA[i][l+1];

summ +=matrixA[i][l-1];

summ +=matrixA[i+1][l];

summ +=matrixA[i+1][l-1];

summ +=matrixA[i+1][l+1];

}

if(i == size-1 && (l > 0 && l <size-1)) // Верхняя строка

{

summ +=matrixA[i][l+1];

summ +=matrixA[i][l-1];

summ +=matrixA[i-1][l];

summ +=matrixA[i-1][l-1];

summ +=matrixA[i-1][l+1];

}

if ((i > 0 && i < size-1) && (l > 0 && l < size-1)) // Элементы не на границах

{

summ +=matrixA[i+1][l+1];

summ +=matrixA[i-1][l-1];

summ +=matrixA[i+1][l-1];

summ +=matrixA[i-1][l+1];

summ +=matrixA[i][l+1];

summ +=matrixA[i][l-1];

summ +=matrixA[i+1][l];

summ +=matrixA[i-1][l];

}

if (summ == 2){matrixB[i][l] = matrixA[i][l];}

if (summ == 3){matrixB[i][l] = 1;}

summ = 0;

}

}

for (int i = 0; i < size; i++) // Вывод как есть.

{

for (int l = 0; l <size; l++)

{

cout << matrixB[i][l]<<" ";

}

cout << '\n';

}

cout << "\n";

for (int i = 0; i < size; i++) // Вывод с изменением.

{

for (int l = 0; l <size; l++)

{

if (matrixB[i][l] == 0){cout << "i"<<" ";}

else{cout << "*"<<" ";}

}

cout << '\n';

}

return 1;

}

Задача №3:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

typedef struct QUESTION {

char *qst;

char **answ;

int cnt;

struct QUESTION *next;

} question_t;

typedef enum RESULT {

R_OK = 0, R_NOT_MATCH = 1, R_BAD_QUESTION = 2, R_BAD_ANSWER = 3

} result_t;

 

question_t * new_question(question_t *last){

static char buf[BUFSIZ], *p;

question_t *q;

int i;

if ( ( q = (question_t *)malloc(sizeof(question_t)) ) == NULL ){

fprintf(stderr, "memory error!\n");

return NULL;

}

printf("Enter question:\n> ");

if ( ! fgets(buf, BUFSIZ, stdin) ){

fprintf(stderr, "Can't get string!\n");

free(q);

return NULL;

}

if ( p = strrchr(buf, '\n') )

*p = '\0';

if ( ! *buf ){

fprintf(stderr, "Empty string!\n");

free(q);

return NULL;

}

if ( ( q->qst = strdup(buf) ) == NULL ){

fprintf(stderr, "Memory error!\n");

free(q);

return NULL;

}

printf("Enter answers one by string with empty one at finish:\n");

q->cnt = 0;

q->answ = NULL;

while ( 1 ){

printf("> ");

if ( ! fgets(buf, BUFSIZ, stdin) ){

fprintf(stderr, "Can't get string!\n");

if ( q->answ ){

for ( i = 0; i < q->cnt; ++i )

free(q->answ[i]);

free(q->answ);

}

free(q->qst);

free(q);

return NULL;

}

if ( p = strchr(buf, '\n') )

*p = '\0';

if( ! *buf )

break;

if ( ( q->answ = (char**)realloc(q->answ, sizeof(char*) * (q->cnt + 1)) ) == NULL ){

fprintf(stderr, "Memory error!\n");

if ( q->answ ){

for ( i = 0; i < q->cnt; ++i )

free(q->answ[i]);

free(q->answ);

}

free(q->qst);

free(q);

return NULL;

}

if ( ( q->answ[q->cnt] = strdup(buf) ) == NULL ){

fprintf(stderr, "Memory error!\n");

if ( q->answ ){

for ( i = 0; i < q->cnt; ++i )

free(q->answ[i]);

free(q->answ);

}

free(q->qst);

free(q);

return NULL;

}

q->cnt += 1;

}

if ( ! q->answ ){

fprintf(stderr, "No answers given!\n");

free(q->qst);

free(q);

return NULL;

}

q->next = NULL;

if ( last )

last->next = q;

return q;

}

void delete_questions(question_t *q){

question_t *t;

int i;

while ( q ){

t = q->next;

for ( i = 0; i < q->cnt; ++i )

free(q->answ[i]);

free(q->answ);

free(q->qst);

free(q);

q = t;

}

}

 

result_t check_answer(const question_t *q, const question_t *a){

int i, j;

if ( ! q )

return R_BAD_QUESTION;

if ( ! a )

return R_BAD_ANSWER;

if ( q->cnt > a->cnt )

return R_NOT_MATCH;

/* Не слишком оптимальное решение. Продиктовано тем фактом, что порядок слов в ответе

может не совпадать с порядком слов в вопросе. */

for ( i = 0; i < q->cnt; ++i ){

for ( j = 0; j < a->cnt; ++j )

if ( ! strcmp((q->answ)[i], (a->answ)[j]) )

break;

if ( j == a->cnt )

return R_NOT_MATCH;

}

return R_OK;

}

void print_questions(const question_t * q){

printf("\n");

while ( q ){

printf("%s\n", q->qst);

q = q->next;

}

printf("\n");

}

int print_menu(void){

int ret;

printf("\n*** Menu ***\n");

printf("1 Show questions\n");

printf("2 Add question\n");

printf("3 Answer a question\n");

printf("0 Exit\n");

printf("> ");

if ( scanf("%d%*c", &ret) != 1 )

return -1;

return ret;

}

int main(void){

question_t *qHead, *qTail, *qFound, *dummy;

int menu;

result_t res;

qHead = NULL;

qTail = NULL;

dummy = NULL;

while ( menu = print_menu() ){

switch(menu){

case 1:

if ( ! qHead )

printf("No questions in base!\n");

else

print_questions(qHead);

break;

case 2:

if ( ( qTail = new_question(qTail) ) == NULL ){

printf("Can't add a question!\n");

delete_questions(qHead);

exit(1);

}

if ( ! qHead )

qHead = qTail;

break;

case 3:

if ( ! qHead ){

printf("No questions in base!\n");

break;

}

if ( ( dummy = new_question(NULL) ) == NULL ){

printf("Can't process question!\n");

delete_questions(qHead);

exit(1);

}

for ( qFound = qHead; qFound && strcmp(qFound->qst, dummy->qst); qFound = qFound->next )

;

if ( ! qFound )

printf("Can't find question in base!\n");

else {

res = check_answer(qFound, dummy);

switch ( res ){

case R_OK:

printf("Good answer!\n");

break;

case R_NOT_MATCH:

printf("Wrong or not complete answer!\n");

break;

case R_BAD_QUESTION:

printf("Bad question!\n");

break;

case R_BAD_ANSWER:

printf("Bad answer!\n");

break;

default:

printf("Unknown error!\n");

break;

}

}

delete_questions(dummy);

break;

default:

printf("Unknown menu action!\n");

break;

}

}

delete_questions(qHead);

exit(0);

}

5. Тестовые примеры

Задача №1:

Задача №2:

Задача №3:

6. ЗАКЛЮЧЕНИЕ

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Шолмов Л.И. Руководство по турбо Си. М.: Наука, 1994. - 94-98с.

Уинер Р. Язык Турбо Си : Пер. с англ. -М.:: Мир, 1991. - 384 с.

Керниган Б.В, Ричи Д.М. Си для профессионалов. М.: Энергия, 1996.- 213 с.

Грейд Дж. Математическое программирование. М.: Наука, 1987. - 241 с.

Либерман М. Алгоритмы сортировки массивов. М.: Наука, 1997. - 43-81с.

«Методические указания и задания к выполнению курсовой работы» ТУИТ

Размещено на Allbest.ru


Подобные документы

  • Изучение понятия и основных видов массивов. Ввод массива с клавиатуры и вывод на экран. Сортировка массивов. Метод простых обменов (пузырьковая сортировка). Сортировка простым выбором и простым включением. Решение задач с использованием массивов Паскаля.

    курсовая работа [82,1 K], добавлен 18.03.2013

  • Разработка программы для решения инженерных задач с использованием функций, процедур и сложных типов данных, в том числе динамических массивов и объединений. Интерфейс ввода/вывода. Схемы алгоритмов отдельных подзадач. Технические требования к программе.

    курсовая работа [60,7 K], добавлен 26.11.2012

  • Объявление, выделение, освобождение памяти под динамические массивы. Обращение к элементам. Решение задач с использованием динамических массивов на языке C++. Разработка и реализация программы для формирования и обработки динамического двумерного массива.

    курсовая работа [813,4 K], добавлен 13.06.2014

  • Решение оптимизационных задач и задач с размерными переменными с использованием итерационного цикла при помощи прикладного пакета Mathcad. Проведение исследования на непрерывность составной функции. Решение задач на обработку двухмерных массивов.

    контрольная работа [467,2 K], добавлен 08.06.2014

  • Широкое использование компьютерных и информационных технологий. Концепции типов данных. Алгоритмы сортировки одномерных массивов. Описание двумерного массива Паскаля. Методы доступа к элементам массивов. Индексные, динамические и гетерогенные массивы.

    курсовая работа [66,3 K], добавлен 07.12.2010

  • Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ на языке С для всех рассмотренных алгоритмов. Примеры решения задач по обработке одномерных массивов.

    учебное пособие [1,1 M], добавлен 22.02.2011

  • Централизованное создание массивов нормативно-справочной информации для разнообразных расчетов при решении задач предприятия, их информационное обеспечение. Решение задач по технической подготовке производства (ТПП) в программной среде СУБД Visual FoxPro.

    контрольная работа [160,9 K], добавлен 03.06.2009

  • Реализация различных методов сортировки. Алгоритмические языки программирования. Обработка большого числа единообразно организованных данных. Алгоритмы сортировки массивов. Анализ проблем реализации и использования различных видов сортировок массивов.

    курсовая работа [640,3 K], добавлен 07.07.2011

  • Линейные алгоритмы, условия и циклы. Массивы, строки, множества, подпрограммы и файлы. Определение позиций экстремальных элементов в массивах вещественных чисел. Осуществление циклических сдвигов элементов массива. Определение элементов матрицы.

    контрольная работа [719,6 K], добавлен 10.04.2015

  • Решение задач, прямо связанных с применением циклов и массивов. Условия применения различных видов циклической структуры. Операторы цикла с предусловием while, постусловием do-while и for. Особенности работы с одномерными и двумерными массивами.

    курсовая работа [1,1 M], добавлен 31.08.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.