">
Информатика Программирование
Информация о работе

Тема: Программирование на языке высокого уровня

Описание: Методические указания по выполнению курсовой работы для подготовки бакалавров по направлению Информатика и вычислительная техника. Описание вычислительных методов. Текст программы и схема алгоритма. Ручной просчет отладочного варианта. Машинное тестирование.
Предмет: Информатика.
Дисциплина: Программирование.
Тип: Методические рекомендации
Дата: 10.08.2012 г.
Язык: Русский
Скачиваний: 44
Поднять уникальность

Похожие работы:

Министерство образования и науки Российской Федерации

Кубанский государственный технологический университет

Кафедра вычислительной техники и АСУ

Программирование

на языке высокого уровня

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

для подготовки бакалавров по направлению

230100 Информатика и вычислительная техника

2011

Краснодар Составители: канд. техн. наук, проф. М.П.Малыхина;

канд. техн. наук, доц. Л.Н. Миклашевская;

канд. техн. наук, доц. В.А. Частикова.

УДК 681.31(031)

Программирование на языке высокого уровня. Методические указания по выполнению курсовой работы для подготовки бакалавров по направлению 230100 Информатика и вычислительная техника / Сост. М.П. Малыхина; Л.Н. Миклашевская; В.А. Частикова. Кубан. гос. технол. ун-т. Каф. вычислительной техники и АСУ. – Краснодар: Изд.КубГТУ, 2011. – 37 с.

Методические указания содержат требования к оформлению курсовой работы, приведены тематика и содержание курсовых работ, задания по курсовому проектированию по дисциплине "Программирование на языке высокого уровня", разработанные в соответствии с учебным планом КубГТУ, требованиями государственного образовательного стандарта высшего профессионального образования и стандарта предприятия СТП 4.2.6. Составлены в соответствии с рабочей программой курса «Программирование на языке высокого уровня» подготовки бакалавров по направлению 230100 Информатика и вычислительная техника.

Предназначены для студентов первого курса.

Ил.1. Табл. 3. Библиогр.: 7 назв. Прил. 4

Печатается по решению методического совета

Кубанского государственного технологического университета

Рецензенты: д-р техн. наук, профессор Л.А. Видовский;

канд. техн. наук, зав. кафедрой Су и ТК

профессор В.Г. Корниенко

© КубГТУ, 2011 Содержание

Нормативные ссылки………………………………………………….…...4

Введение ………………………………………………………………………

1 Общие требования к курсовой работе …………………………………..…

Темы курсовых работ ………………………………………………….

Состав курсовой работы ………………………………………………

Пояснительная записка ……………………………………………….

Коллективные работы ………………………………………………..

2 Краткие методические указания …………………………………………..

3 Типовой пример …………………………………………………………….

3.1 Формулировка задачи ………………………………………………

3.2 Спецификации задачи ………………………………………………

3.3 Математическая постановка задачи ……………………………….

3.4 Описание вычислительных методов ………………………………..

3.5 Схема алгоритма. Описание………………………………………….

3.6 Текст программы и схема алгоритма………………………………

3.7 Ручной просчет отладочного варианта ……………………………

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

4 Перечень тем курсовых работ ………………………………………………

4.1 Задание №1 …………………………………………………………..

4.2 Задание №2 …………………………………………………………..

4.3 Дополнительные задания…………………………………………..

Список рекомендуемой литературы…..………………………………….

Приложение А (обязательное). Титульный лист курсового работы ….…

Приложение Б (обязательное). Форма задания на курсовое

проектирование ……………………………………………………………….

Приложение В (справочное). Запись алгоритма с помощью схем ………..

Приложение Г (справочное). Правила оформления текстовых

документов ……………………………………………………………………

Нормативные ссылки

В настоящих методических указаниях используются ссылки на следующие нормативные документы:

ГОСТ Р 7.05-2008 – СИБИД. Библиографическая ссылка. Общие требования и правила составления.

ГОСТ 2.105-95 – ЕСКД. Общие требования к текстовым документам.

ГОСТ 7.9-95 – СИБИД. Реферат и аннотация. Общие требования.

ГОСТ 19.701-80 – ЕСПД. Схемы алгоритмов, программ, данных и систем.

Введение

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

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

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

1 Общие требования к курсовой работе

1.1 Темы курсовых работ

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

1.2 Состав курсовой работы

Курсовая работа состоит из пояснительной записки, к которой прилагается электронная копия отлаженных программ.

В пояснительную записку должны входить:

титульный лист (приложение А);

задание на курсовое проектирование (приложение Б) с подписью студента и датой выдачи;

реферат (объем ПЗ, количество таблиц, рисунков, схем, программ, приложений, краткая характеристика и результаты работы); (по ГОСТ 7.9);

содержание;

нормативные ссылки;

введение;

основная часть, включающая:

а) спецификации задачи (входные, выходные данные программ и используемых процедур и функций);

б) математическую постановку задачи;

в) описание методов вычислительной математики, используемых при решении;

г) алгоритмы решения задачи (блок-схемы алгоритмов);

д) тексты программ на алгоритмическом языке высокого уровня;

е) описание алгоритмов и программ в соответствии с ЕСПД и нормативными документами;

ж) ручной просчет отладочного варианта (или часть его, если для достижения заданной точности необходимо большое количество итераций);

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

и) инструкция пользователя;

заключение (основные результаты работы, включая предложения по их реализации);

список использованных источников;

подпись, дата.

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

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

В списке используемых источников представляются сведения об источниках (литературе), используемых автором курсовой работы в процессе ее выполнения.

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

1.3 Пояснительная записка

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

Текст пояснительной записки набирается в формате WORD с использованием следующих установок:

шрифт - Times New Roman;

межстрочный интервал - 1,5;

размер шрифта - 14 пт.

Поля страницы составляют:

левое - 30 мм ;

правое - 15 мм ;

верхнее - 15 мм;

нижнее - 25 мм.

После окончания набора страницы ее следует отформатировать с выравниванием по обоим краям.

Заголовки разделов начинаются с абзацного отступа. Заголовки подразделов набирают с абзаца строчными буквами (кроме первой прописной). Перенос слогов в заголовках не допускается, точка в конце не ставится. Номера разделов обозначают арабскими цифрами без точки в конце. Подразделы нумеруются арабскими цифрами в пределах каждого раздела (например, «2.3»). Пункты нумеруются арабскими цифрами в пределах каждого подраздела (например, «2.3.1»).

Иллюстрации обозначаются словом «Рисунок» и нумеруются последовательно арабскими цифрами.

Размеры знаков для формул: прописные - 5 мм, строчные 2,5 мм, показатели степени и индексы - 2 мм.

Формулы нумеруются арабскими цифрами в пределах раздела. Номер формулы состоит из номера раздела и порядкового номера формулы (например, «(3.5)») и помещается в круглых скобках у правого поля листа на строке самой формулы.

Текст программы в пояснительной записке и на электронном носителе в обязательном порядке должен быть в достаточной степени комментирован. Среди прочих комментариев в начале программы должна присутствовать формулировка задачи и указан автор программы.

Более подробно правила оформления текстовых документов рассматриваются в Приложении Г.

1.4 Коллективные работы

Если программа является коллективным продуктом, то пояснительная записка оформляется каждым студентом с четким определением, какая часть работы была выполнена именно им.

2 Краткие методические указания

Для задания, указанного преподавателем, необходимо:

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

записать условие задачи либо в виде уравнений, либо в виде последовательности формул, которая может быть использована при решении задачи;

разработать схему алгоритма, применяя только типовые структуры алгоритмов и их сочетания; развитие алгоритма должно происходить постепенно вглубь или вширь с использованием метода пошаговой детализации; при создании алгоритма следует придерживаться методологии проектирования «сверху вниз»; схема алгоритма каждой функции должна быть приведена в пояснительной записке отдельно;

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

в программе нужно предусмотреть печать необходимых заголовков и пояснений к вводимым данным и выводимым результатам;

ввести программу в компьютер;

отладить и протестировать ее.

Типовой пример

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

Формулировка задачи

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

Спецификации задачи

Входные данные:

знак числа;

последовательность двоичных цифр (0 или 1, 2-ввод числа закончен).

Выходные данные:

произведение и количество положительных десятичных чисел;

сумма и количество отрицательных десятичных чисел.

3.3 Математическая постановка задачи

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

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

В зависимости от знака числа В накапливается либо в произведении Р, либо в сумме S, что приводит к изменению значения либо М (счетчика положительных чисел), либо N (счетчика отрицательных чисел).

Таблица 1

3.4 Описание вычислительных методов

Двоичное число представляет собой последовательность, составленную только из цифр 0 и 1. Причем, в отличие от десятичного числа, в котором каждый разряд обозначает степень десятки, в двоичном числе каждый разряд обозначает степень двойки. Так, младший разряд обозначает 20, второй разряд –21, третий – 22 и т. д.

Например, двоичное число 101001 в десятичной системе счисления будет иметь вид: 1*20+ 0*21+ 0*22+1*23+ 0*24+1*25= 41.

Таким образом, если вводить двоичное число в обратном порядке, то перевод его в десятичное число D можно осуществлять по формуле

, (1)

где B[k] – цифра в k-м разряде двоичного числа.

3.5 Схема алгоритма. Описание

Схема алгоритма содержит следующие типовые структурные элементы: внутренний цикл, ветвление, внешний цикл. При выполнении тела внутреннего цикла осуществляется ввод цифр двоичного числа, начиная с последнего, и перевод двоичного числа в десятичное, используя формулу перевода (1).

Ветвление осуществляется по коду знака числа. Если число положительное, работает левая ветвь, где переменная Р накапливает произведение положительных чисел и значение М (счетчика положительных чисел) увеличивается на 1. Если число отрицательное, работает правая ветвь, где полученному числу присваивается знак (-), а затем оно прибавляется к сумме предыдущих отрицательных чисел, а значение переменной N (счетчика отрицательных чисел) увеличивается на 1.

Пользователь имеет возможность либо продолжить ввод двоичных чисел – ввести 1, либо прекратить ввод – ввести 0. В последнем случае на печать будут выданы значения Р, М, S, N, и алгоритм завершит свою работу. К указанным в п. 3.3 списку переменных добавлены необходимые дополнительные (табл. 2).

Таблица 2

3.6 Текст программы и схема алгоритма

using System;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

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

P, // Произведение чисел

S, // Сумма чисел

N, // Количество отрицательных

B, // Двоичное число

K, // Степень двойки

L, // Цифра двоичного числа

M, // Количество положительных

R, // Знак числа

A;

{

// Присвоение начальных значений

P = 1; // Начальное значение счетчика произведения

S = 0; // Начальное значение счетчика суммы

N = 0; // Количество отрицательных чисел

M = 0; // Количество положительных чисел

string buf; // Объявление врем. переменной

do // Цикл ввода двоичных чисел

{

Console.WriteLine("Ввод двоичного числа ...");

Console.WriteLine("Введите код знака числа (+) - 0, (-) – 1");

buf = Console.ReadLine(); // Ввод знака числа

R = Convert.ToInt32(buf);

Console.WriteLine("Ввод: по одной цифре, начиная с последней");

B = 0; // Обнуление врем. переменной

K = 1; // Вес первого разряда =1

Console.WriteLine("Введите 0 или 1, если ввод числа закончен, введите 2");

// Повторять, пока L меньше 2

do // Цикл ввода двоичного числа

{

buf = Console.ReadLine(); // Ввести цифру 0 или 1

L = Convert.ToInt32(buf);

if (L < 2) // Пpовеpка ввода 2

{

B = B + L * K; // Суммировать весовой коэффициент

K = K * 2; // Вычислить вес нового разряда

}

}

while (L < 2);

if (R == 0) // Пpовеpка знака числа

{ // Если положительное

P = P * B; // Вычислить произведение

M = M + 1; // Увеличить счетчик

}

else

{ // Если отрицательное

B = -B; // Изменить знак десятичного числа

S = S + B; // Вычислить сумму

N = N + 1; // Увеличить счетчик

}

Console.WriteLine(" Ввод чисел закончен ?"); //Опрос конца ввода чисел

Console.WriteLine(" Введите 0 - Нет, 1 - Да ");

buf = Console.ReadLine();

A = Convert.ToInt32(buf);

}

while (A != 1);

// Вывод результатов вычислений

Console.WriteLine("Произведение положит. чисел P="+P+" кол-во M=" + M);

Console.WriteLine("Сумма отрицательных чисел S="+S + " кол-во N=" + N);

}

}

}

}

Ввод двоичного числа

_ _ _ _ _ Введите код знака

(+) – 0, (-) - 1

– – – – – Ввод осуществляется по

одной цифре, начиная

с последней

– – – – – – Введите 0 или 1,

если ввод закончен, введите 2

_ _ _

Рисунок 1 – Схема алгоритма

3.7 Ручной просчет отладочного варианта

Для случая, когда исходная информация содержит следующие двоичные числа: -101, 111.

-101 (2) = -5 (10) 111 (2) =7 (10)

N=1 M=1

S= -5 P=7

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





4 Перечень тем курсовых работ

4.1 Задание №1

Даны натуральные числа n, k, причем n > 0. Напечатать k десятичных знаков числа 1/n. Вывести эти знаки в виде гистограммы. Программа должна использовать только целые числа.

Дано натуральное число N. Определить длину периода 1/n. Период дроби равен периоду в последовательности остатков. Построить график зависимости периода от N.

Найти наименьшее значение функции:



и значение аргумента, при котором оно получено, если X изменяется от 0 до 10 с шагом 0,1. Для найденного x подсчитать сумму членов ряда:  Построить график y(x).

Реализовать перевод чисел между десятичной, двоичной и восьмеричной системами счисления.

На заданном отрезке изменения X {a, b} с шагом h найти наименьшее и наибольшее значения функции и запомнить значения аргумента, при которых они получены. Приняв последние за новые границы интервала изменения аргумента, вычислить на нем 10 значений y, включая граничные точки. По полученным значениям построить график y(x).

Даны взаимно простые натуральные числа p, q ( p < q ). Найти периодическую и непериодическую части десятичной дроби, равной p/q. Вывести эти части на графики в виде гистограмм.

Получить все четырехзначные натуральные числа, в записи которых нет двух одинаковых цифр. Вывести их в виде гистограммы.

Дано натуральное k. Вставить между некоторыми цифрами, записанными в таком порядке: (1, 2, 3, 4, 5, 6, 7, 8, 9), знак (+ ) или (-) так, чтобы значением получившегося выражения было число k. Напpимеp, если k=122, то подойдет следующая расстановка: 12+34-5-6+78+9.

Даны k значений натуральных чисел n. Найти все различные цифры, входящие в запись чисел n и их количество. Найти число с наибольшим и наименьшим количеством различных цифр. Построить гистограмму зависимости количества различных цифр в записи числа от его порядкового номера.

На заданном отрезке изменения X {a, b} с шагом h найти наибольшее и наименьшее значения функции:

. Построить на данном отрезке график y(x). Значение многочлена вычислять, используя схему Горнера.

Напечатать все перестановки из 0 и 1 на n позиций. Отсортировать их как десятичные числа по убыванию. Вывести полученные числа на график в виде гистограммы.

Ввести натуральное n, значение которого записано с помощью 0 и 1. Сдвинуть на k-позиций по кольцу запись числа n (n = 1001, k = 2, n = 0110). Не использовать специальных операций.

Даны k (k > 1) натуральных n. Выбросить из записи числа n цифры 0 и 2, оставив прежним порядок остальных цифр.

Пример: 590125012 —> 59151.

На заданном отрезке изменения X {a, b} с шагом h подсчитать значения:

,

построить график S(X) и найти значения X, при которых S принимает наименьшее и наибольшее значения. Для этих значений вычислить:

 .

Даны k (k>1) натуральных x. Расположить цифры в числах так, чтобы в начале стояла максимальная цифpа, а в конце – наименьшая. Массивы не использовать. Пример: 3829 —> 9382.

"Вечный календарь". По дате 23.04.2039 или другой дате XXI века определить день недели. Напечатать календарь на текущий месяц.

Получить все перестановки из цифр 1, 2, 3, 4. Отсортировать их как десятичные числа по убыванию.

Получить все сочетания из девяти цифр 0, 1, 2, ..,8 по 4 элемента в каждом. Отсортировать их как десятичные числа по убыванию. (В сочетаниях цифры можно использовать несколько раз, сочетания типа 1234 и 4321 считаются одинаковыми).

Получить все размещения из 9 элементов 1,2,3,..9 по 3 элемента в каждом. Отсортировать их как десятичные числа по убыванию (В размещениях цифры можно использовать только один раз).

На заданном отрезке изменения X {a, b} с шагом h подсчитать значения:

 ,

а также сумму (Q), произведение (Р), количество (М) отрицательных S. Построить график S(X).

Даны натуральные числа a, b, c, которые обозначают число, месяц, год. Проверить корректность даты. Напpимеp: дата 30.02.1998 некорректна. Найти номер этого дня с начала года.

В процессе голодания вес пациента за 30 дней снизился с m до n кг. Установлено, что ежедневные потери веса пропорциональны весу тела. Вычислить таблицу снижения веса пациентов для различных стартовых весов для k дней после начала голодания.

Ввести натуральное n, состоящее из записи цифрами 0,1,2 и 3. На выходе n должно быть таким, что вначале записи идут 0, затем 1,2 и 3. Напpимеp : 200131 —> 001123.

Получить все шестизначные “счастливые” номера (0 <= n <=999999 ). («Счастливым» считается номер, у которого сумма первых трех цифр равна сумме последних трех цифр, например: 246813.)

На заданном отрезке изменения X {a, b} с шагом изменения h и заданном А вычислить S:

,

а затем У по формуле:

Построить график Y(X) и определить, при каком Х Y имеет минимальное значение.

По коэффициентам многочлена x?+ax?+bx+c найти корни уравнения x?+ax?+bx+c=0.

Даны k значений целых натуральных n. Определить сколько пар одинаковых соседствующих цифр входит в запись этих чисел. Построить гистограмму зависимости количества пар одинаковых цифр от порядкового номера числа n.

Дано натуральное n. Получить сумму тех из чисел вида:

, которые являются утроенными нечетными числами. Вывести все эти числа на график в виде гистограммы.

Даны k значений натуральных n. Найти количество и сумму тех n, которые делятся на 5 и не делятся на 7. Вывести эти числа на график в виде гистограммы.

Даны действительные числа a, b ( a << b ). Найти третий член из генерации чисел , который не пpинадлежит отрезку [a, b].

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

Напечатать в порядке возрастания корни уравнений:

 ,

вычисленные с заданной точностью ???? > 0????, и вывести их на график в виде гистограммы.

Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны треугольника (при определении расстояний учесть, что площадь треугольника вычисляется и через его стороны, и через основание и высоту).

Реализовать арифметические операции над двумя комплексными числами (+, –, *, /, возведение в степень одного числа).

Найти наименьшее общее кратное четырех заданных натуральных чисел.

По вещественному числу a>0 вычислить величину . Корни  вычислять с точностью ???? = 0.0001???? по следующей итерационной формуле:  (n=0, 1, 2,…), приняв за ответ приближение yn+1, для которого .

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

Напечатать все перестановки чисел 1....n, чтобы каждая следующая получалась из предыдущей перестановкой двух соседних чисел. Например, при n=3 следует переставлять:

3.21 > 23.1 > 2.13 > 12.3 >1.32 >3.12.

Точка расположена там, где намечается перестановка.

Вывести все разбиения целого положительного числа n на целые положительные слагаемые. Пример: n=4, разбиения 1+1+1+1, 2+1+1, 2+2, 3+1, 4.

Даны две функции: y=ax?+bx+c и z=x?+dx?+ex+f. Выяснить, в каких точках их графики пересекают оси OX и OY, а также пересекаются между собой (если пересекаются). Построить оба графика.

Даны координаты трех точек на плоскости. Выяснить, какой треугольник образуют эти точки (равнобедренный, равносторонний, разносторонний). Найти все углы треугольника и его площадь.

Найти площадь n-угольника по введенным координатам его вершин.

Даны k значений натуральных n. Найти количество и произведение тех n, которые делятся на 6 и не делятся на 11. Вывести эти числа на график в виде гистограммы.

По первому члену и коэффициенту найти все n членов, их сумму и произведение для арифметической и геометрической прогрессий.

4.2 Задание №2

Дан неубывающий массив положительных целых чисел a[1]?a[2]?…?a[n]. Найти наименьшее целое положительное число, которое нельзя представить в виде суммы нескольких элементов этого массива (элемент массива должен быть использован один раз).

Даны два массива: x[1] ?… ? x[k], y[1] ? … ? y[l] и число q. Найти сумму вида x[i] + y[j], наиболее близкую к числу q (число действий порядка k + l, дополнительная память – фиксированное число переменных, массивы не изменять).

Даны два массива x[1] ?… ? x[k], y[1] ? … ? y[l]. Найти их «пересечение», т.е. массив z[1] ?… ? z[m], содержащий их общие элементы, причем, кратность каждого элемента в массиве z равняется минимуму из его кратностей в массивах x и y .Число действий должно быть порядка k+ l.

Дана матрица размера n*n. Развернуть ее на 90°, 180°, 270°. Сосчитать сумму элементов главной диагонали всех матриц и найти их определители.

Массив целых чисел x[1] ... x[n] «свернуть в кольцо» и повернуть вправо на К позиций может быть больше n).

Реализовать операции с очередью в массиве. Пусть очередь прирастает справа, убывает слева. Длина массива должна соответствовать длине очереди.

Даны четыре матрицы размера m*n. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны – поместить их в новую матрицу на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю. Найти определитель новой матрицы.

Реализовать операции со стеком в массиве. Количество элементов в стеке должно соответствовать длине массива.

В системе координат X, Y заданы координаты вершин выпуклого многоугольника: массив координат X; массив координат Y; число вершин многоугольника и координаты произвольной точки Q, Z. Определить, принадлежит ли точка Q, Z многоугольнику.

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

1 0 1 0 0

1 1 1 1 0

0 0 0 1 0

1 0 1 1 0

1 0 1 1 0 таких областей будет три.

Написать программу формирования матрицы размером n * n, являющейся магическим квадратом.

Доказать, что можно найти самый легкий и самый тяжелый из камней (одновременно), количество которых равно (2*n+1), сделав 3*n взвешиваний. Указание: разбить камни на пары (n пар и один камень) и сравнить камни внутри пар.

Массив целых чисел x[1] ... x[n] (n – четное ) «свернуть в кольцо», а затем разбить его на два кольца, содержащих одинаковое число элементов.

Используя массивы, реализовать основные операции над множествами:

определение принадлежности элемента a множеству S;

добавление элемента а в S;

удаление элемента а из S;

объединение элементов двух множеств.

Разработать и запрограммировать нерекурсивный вариант алгоритма быстрой сортировки. [Указание. Для хранения упорядоченных пар (i, j) использовать магазин. Пара, хранящаяся в магазине, означает, что должны быть упорядочены элементы Xi, ..., Xj. Например, первоначально магазин должен был бы содержать пару (1, 8). После того, как значение Х5=5 выбрано в качестве среднего, пара (1, 8) должна быть удалена из магазина, а в магазин должны быть помещены пары (1, 4) и (6, 8). Алгоритм заканчивает работу, когда магазин пуст.]

Описать процедуру sort(x), упорядочивающую по неубыванию числа массива x следующим методом: все числа из x упорядочить по последней цифре и перенести во вспомогательный массив y; затем числа из y упорядочить по предпоследней цифре (при равенстве этих цифр сохранять упорядоченность по последней цифре) и записать их снова в массив x; далее числа из x упорядочить по третьей от конца цифре и перенести в массив y и т.д. (Учесть, что в конце концов числа должны оказаться в x).

Дан массив. Реализовать сортировку несколькими методами (перестановкой, выбором, вставкой).

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

Даны три целые матрицы размером 9?4. Напечатать ту из них, где больше нулевых строк.

type имя = (Алла, … , Юрий, нет);

Предполагая уже описанные функции Отец (х) и Мать (х), значениями которых являются имена соответственно отца и матери человека по имени х или идентификатор нет, если отсутствуют сведения о соответствующем родителе, описать логическую функцию Потомок (а, b).

Даны вещественные матрицы A, B и C размером 10?20 . Вычислить для каждой из них величину : 

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

Напечатать все цифры десятичной записи чисел 2500 и 1!+2!+3!+…+100!. (Рекомендация: представить «длинные» натуральные числа в виде массивов из цифр и реализовать нужные операции над ними).

Дано n вещественных чисел (n=100). Упорядочить их по неубыванию методом фон Неймана: завести два массива A и B и записать исходные числа в А; упорядочить пары соседних чисел (A1 и А2, А 3 и А 4 и т.д.) и записать их В; взять из В по две соседние упорядоченные пары и, слив их в упорядоченные четверки, снова записать в А; затем каждые две соседние четверки из В слить в упорядоченные восьмерки и перенести в А и т.д.

Описать логическую функцию поиск (s, ss, k, n), проверяющую, входит ли подстрока ss в ту часть строки s, которая начинается с k-й позиции, и, если входит, присваивающую параметру n номер позиции, с которой начинается первое вхождение ss в эту часть строки s. Используя данную функцию, заменить в строке x все вхождения подстроки y в подстроку z.

Описать функцию изм(x, y, z), которая в том из векторов (одномерных массивов) x, y и z, где больше всего отрицательных элементов (считать, что такой вектор один), все его положительные элементы заменяет: на их кубы, если это вектор x или вектор z, и на их обратные величины, если это вектор y.

Заданный вещественный массив из n различных элементов (n=100) упорядочить по возрастанию следующим методом быстрой сортировки: выбрать какой-нибудь (например, средний) элемент массива и переставить элементы массива так, чтобы слева от выбранного элемента оказались только меньшие элементы, а справа – только большие (тем самым выбранный элемент окажется на своем окончательном месте), после чего рекурсивно применить этот же метод к левой и правой частям массива.

Дан двумерный массив. Рассматривая его построчно, написать программу, удаляющую дубликаты строк (сделать так, чтобы строки не повторялись).

Массив целых чисел x[1] ... x[n] использовать для формирования кольцевого списка и организовать следующие операции обработки списка:

создать копию списка;

добавить элемент в начало списка;

удалить n-й элемент из списка;

вставить элемент после n-го элемента списка.

Дана последовательность из n*m цифр. Найти среднее арифметическое значение этой последовательности и переставить в ней цифры так, чтобы, разбив эту последовательность на n групп по m элементов, получить среднее арифметическое значение каждой группы, приблизительно (с точностью ????????) равное среднему арифметическому значению всей последовательности.

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

В данном массиве целых чисел найти и вывести все те числа, цифры которых представляют упорядоченную последовательность.

В данном массиве целых чисел найти и вывести те числа, все цифры которых не превосходят вводимое с клавиатуры значение.

Входная данная строка символов может содержать целые числа. Выделить их и найти максимальное из них.

Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива.

Поменять местами первый и последний элементы стека, а затем развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном».

Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива. Удалить элемент, который находится в середине стека, если нечетное число элементов, а если четное, то два средних. Затем удалить каждый второй элемент стека.

Массив целых чисел x[1] ... x[n] «свернуть в кольцо» и упорядочить элементы в списке по возрастанию. Вставить в кольцо три произвольных числа и переупорядочить его по убыванию.

«Поле чудес». Программа читает из файла слово и его описание. Игрок пытается угадать слово, вводя буквы. Угаданные буквы открываются. Предусмотреть подсчет очков и возможность участия нескольких игроков (1, 2 или 3).

В файле хранится следующая информация: названия ПК (модель), их производительность, год выпуска и цена. По запросу пользователя обеспечить вывод всех ПК, удовлетворяющих запросу и отсортировать их по любому параметру. Запрос может быть как по одному, так и по нескольким параметрам.

Элементами динамического списка являются записи, в которых хранится информация о студентах ФКТАС: имя, фамилия, группа и оценки за последнюю сессию. Обеспечить ввод этих данных и разбить всех студентов в новые списки по группам, элементами которых являются записи с полями: группа, количество студентов в группе, массив с фамилиями студентов (отсортированный по алфавиту), средний балл группы за сессию. Найти лучшую по успеваемости группу.

В тексте встречаются различные символы, числа, а также знаки математических операций: +, -, *, /. Прочитать текст слева направо, выделяя из него числа и производя над ними заданные математические операции. (Например, текст оры!№;12ппр+?5пр дает результат 17.)

Даны 50 слов различной длины. В тексте эти слова «зашумлены» – т.е. некоторые буквы заменены другими буквами или символами. Обеспечить «распознавание» этих слов по наибольшему соответствию образцам и выдать «чистый» текст.

Заданы координаты n городов (А,Б,В,…). По введенным названиям городов, времени отправления и средней скорости поезда вычислить время его прибытия из первого города во второй.

1 2