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

Вид материалаДокументы

Содержание


С – температура по Цельсию, а F
F между телами с массами m1
С – температура по Цельсию, а F
Глава 2. работа с одномерными статическими массивами: поиск, замена, сортировка.
Глава 3. работа со строками.
Глава 4. работа с двумерными массивами.
M месяцев (первого магазина – в первой строке, второго – во второй и т.д.). Определить: а) среднюю выручку каждого магазина за К
Глава 5. работа с файлами и массивами строк
Глава 6. работа со структурами
Глава 7. работа с функциями
Глава 8. модульные программы
Подобный материал:

ГЛАВА 1. ПРОСТЫЕ ПРОГРАММЫ

Требования к выполнению заданий



На оценку 3 балла написать программу в соответствии с заданием.


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


На оценку 5 баллов:
  1. выполнить требования по форматированию исходного кода программы;
  2. определить ограничения на вводимые пользователем значения и не допустить ввода неверных значений (не продолжать программу пока не будут введены корректные значения).

Вариант 1


Даны катеты прямоугольного треугольника. Найти гипотенузу.

Вариант 2


Идентификация треугольника по двум его углам (U1, U2). Определяемое свойство: остроугольный, прямоугольный, тупоугольный. Следует учесть, что для выполнения условия (U1 + U2 < 180) на оценку 4 и 5 баллов при вводе второго угла необходимо учитывать величину первого угла.

Вариант 3


Написать программу, которая переводит температуру в градусах по Фаренгейту в градусы Цельсия по формуле:

,

где С – температура по Цельсию, а F – температура по Фаренгейту.

Вариант 4


Треугольник задан координатами своих вершин. Найти периметр треугольников.

Вариант 5


Идет k-я секунда суток. Определить, сколько полных часов (h) и полных минут (m) прошло к этому моменту.

Вариант 6


Определить силу притяжения F между телами с массами m1 и m2, находящимися на расстоянии r друг от друга.

Вариант 7


Идентификация треугольника по двум сторонам и углу между ними. Определить, является ли треугольник равносторонним, равнобедренным или прямоугольным (второе и третье может быть одновременно).

Для корректного анализа необходимо определить длину третьей стороны по формуле:


Вариант 8


Даны основание и высота равнобедренной трапеции. Найти её периметр.

Вариант 9


Идентификация треугольника по трем его сторонам. Определить является ли треугольник прямоугольным или нет.

Вариант 10


Напишите программу, которая вычисляет площадь треугольника, если известны длины его сторон.

Вариант 11


Напишите программу, которая переводит сантиметры в дюймы.

Вариант 12


Напишите программу, которая вычисляет синус угла, значение которого вводится с клавиатуры в градусах.

Вариант 13


Напишите программу, которая вычисляет площадь треугольника, если известны его высота и основание.

Вариант 14


Напишите программу, которая вычисляет синус квадрата угла, значение которого вводится с клавиатуры в градусах.

Вариант 15


Найти площадь кольца по заданным внешнему и внутреннему радиусам.

Вариант 16


Масса тела k грамм. Определить, сколько полных тонн и полных килограмм составляет масса этого тела.

Вариант 17


Написать программу, которая переводит температуру в градусах Цельсия в градусы по Фаренгейту. Зависимость между градусами Цельсия и градусами по Фаренгейту выражается формулой:

,

где С – температура по Цельсию, а F – температура по Фаренгейту.

Вариант 18


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

Вариант 19


Напишите программу, которая вычисляет cos2. Угол вводится с клавиатуры в градусах.

Вариант 20


Высота дерева k миллиметров. Определить, сколько полных метров и полных сантиметров составляет высота этого дерева.

Вариант 21


Посчитать значение следующего математического выражения, x вводится с клавиатуры.



Вариант 22


Посчитать значение следующего математического выражения, x вводится с клавиатуры.


Вариант 23


Посчитать значение следующего математического выражения, x вводится с клавиатуры..


Вариант 24


Посчитать значение следующего математического выражения, x вводится с клавиатуры.


Вариант 25


Посчитать значение следующего математического выражения, x вводится с клавиатуры.


Вариант 26


Посчитать значение следующего математического выражения, x вводится с клавиатуры.



Вариант 27


Дан радиус окружности. Найти ее диаметр.

Вариант 28


Известен объем и масса тела. Определить плотность материала этого тела.

Вариант 29


Дан радиус окружности. Определить длину окружности и площадь круга.

Вариант 30


Известно количество жителей в государстве и площадь его территории. Определить плотность населения в этом государстве.

Вариант 31


Посчитать значение следующего математического выражения, x вводится с клавиатуры.




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

  1. Как производится вывод на экран в программе на языке Си?
  2. Как вывести на экран значение целой и вещественной переменной?
  3. Как производится ввод данных с клавиатуры?
  4. Как произвести ввод целого и вещественного числа?
  5. Для чего нужна функция main()?
  6. Для чего нужен оператор return?
  7. Как оформляется арифметическое выражение?
  8. Можно ли в арифметическом выражении использовать круглые скобки? С какой целью? А квадратные?
  9. Как оформляется оператор присваивания? Как он работает (что происходит при его выполнеии)?
  10. Какие знаки арифметических операций используются в арифметических выражениях? Укажите приоритет выполнения арифметических операций при расчете значения выражения.



ГЛАВА 2. РАБОТА С ОДНОМЕРНЫМИ СТАТИЧЕСКИМИ МАССИВАМИ: ПОИСК, ЗАМЕНА, СОРТИРОВКА.




Требования к выполнению заданий



На оценку 3 балла написать программу в соответствии с заданием, используя статические массивы


На оценку 4 балла:
  1. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
  2. использовать динамические массивы (размер массива вводится пользователем с проверкой ввода);
  3. выявить ограничения на вводимые пользователем значения и, если таковые имеются, не допустить их ввода.
  4. организовать повтор программы по желанию пользователя.


На оценку 5 баллов:
  1. выполнить пункты a, b и c на оценку 4 балла.
  2. реализовать меню пользователя, состоящее как минимум из 4-х пунктов:
    1. ввод элементов массива;
    2. обработка массива;
    3. вывод массива на экран
    4. выход.



Вариант 1


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

Вариант 2


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

Вариант 3


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

Вариант 4


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

Вариант 5


Найти пять наибольших элементов одномерного массива целых чисел.

Вариант 6


В одномерном массиве, состоящем из n целых элементов, вычислить номер максимального элемента массива.

Вариант 7


Найти три наименьших положительных элементов одномерного массива целых чисел.

Вариант 8


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

Вариант 9


Найти пять наименьших элементов одномерного массива целых чисел.

Вариант 10


В одномерном массиве, состоящем из n вещественных элементов, найти среднее значение всех элементов.

Вариант 11


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

Вариант 12


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

Вариант 13


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

Вариант 14


Поменять местами элементы массива стоящие на четных и нечетных позициях.

Вариант 15


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

Вариант 16


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

Вариант 17


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

Вариант 18


В одномерном массиве, состоящем из n целых элементов, вычислить:
  1. номер максимального элемента;
  2. сумму элементов, расположенных после максимального элемента.

Вариант 19


В одномерном массиве, состоящем из n вещественных элементов, вычислить:
  1. среднее арифметическое всех положительных элементов;
  2. сумму элементов, расположенных до максимального элемента.

Вариант 20


В одномерном массиве, состоящем из n целых элементов, найти максимальный элемент, и поменять порядок следования всех элементов на противоположный (перевернуть массив).

Вариант 21


Дан массив целых чисел. Выяснить, а) является ли s-й элемент массива положительным числом, б) является ли k-й элемент массива четным числом; в) какой элемент массива больше: k-й или s-й.

Вариант 22


Дан массив целых чисел. а) Разделить все элементы массива на его первый элемент; б) увеличить все элементы массива в два раза; в) уменьшить элементы массива на число A.

Вариант 23


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

Вариант 24


В массиве хранится информация о сопротивлении каждого из элементов электрической сети. Определить общее сопротивление сети при а) параллельном подключении элементов; б) последовательном.

Вариант 25


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

Вариант 26


В массиве записаны результаты игр футбольной команды. Если игра окончилась выигрышем данной команды, записано 3. Если игра окончилась ничьей, записано 2, и если игра окончилась проигрышем команды, записано 1. Определить количество выигрышей, количество ничьих и количество проигрышей данной команды.

Вариант 27


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

Вариант 28


В массиве хранится масса людей. Людей, имеющих массу более 100 кг, условно назовем «людьми с излишним весом». Определить а) среднюю массу людей с излишним весом; б) среднюю массу остальных людей.

Вариант 29


Известен рост каждого ученика класса. Рост мальчиков задан отрицательными числами. Верно ли утверждение, что средний рост мальчиков превышает средний рост девочек на 10 см.?

Вариант 30


Определить, имеются ли в одномерном массиве одинаковые элементы и, если имеются, вывести на экран элементы и их индексы.

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




Вариант 31


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

Вариант 32


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

Вариант 33


Найти элемент, наиболее близкий по значению к среднему арифметическому всех элементов массива.

Вариант 34


Известно количество осадков, выпавших за последние N лет (в миллиметрах). Вычислить среднее количество осадков и отклонение от среднего для каждого года.

Вариант 35


Найти количество уникальных элементов массива (значения которых не повторяются). Выполнить как можно меньше «проходов» по массиву.

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

  1. Дать определение понятию «массив».
  2. В чем отличие статического и динамического массивов?
  3. Что такое элемент массива?
  4. Что такое индекс элемента массива?
  5. Какой индекс имеет первый элемент массива в языке программирования Си? Последний? Почему?
  6. Нарисовать принципиальную блок-схему, объяснить принцип работы оператора цикла for?
  7. Нарисовать принципиальную блок-схему, объяснить принцип работы оператора цикла while?
  8. Нарисовать принципиальную блок-схему, объяснить принцип работы оператора цикла do..while?
  9. В чем отличия циклов с предусловием от циклов с постусловием?
  10. Как выделить память под динамический массив размером N элементов?
  11. Как освободить память, занимаемую динамическим массивом из N элементов?
  12. Нарисовать блок-схему вывода на экран нулевых элементов массива.



ГЛАВА 3. РАБОТА СО СТРОКАМИ.




Требования к выполнению заданий



На оценку 3 балла написать программу в соответствии с заданием.


На оценку 4 балла:
  1. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
  2. для хранения строк использовать динамические массивы символов (размер массива определять в процессе ввода);
  3. организовать повтор программы по желанию пользователя.


На оценку 5 баллов:
  1. выполнить пункты a и b на оценку 4 балла.
  2. реализовать меню пользователя, состоящее как минимум из 4-х пунктов:
    1. ввод данных;
    2. обработка данных;
    3. вывод результата на экран;
    4. выход.
  3. Для корректной работы меню организовать промежуточное хранение результата.



Вариант 1


Написать программу, которая будет находить самое короткое слово в строке, введенной с клавиатуры.

Вариант 2


Дан текст, определить, сколько в нем предложений. Вывести на экран самое длинное.

Вариант 3


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

Вариант 4


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

Вариант 5


Написать программу, которая будет находить самое длинное слово в строке, введенной с клавиатуры.

Вариант 6


Дан текст, найти наибольшее количество идущих подряд букв.

Вариант 7


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

Вариант 8


Написать программу, которая определяет, сколько глассных символов введено с клавиатуры и сколько из них символов ‘a’.

Вариант 9


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

Вариант 10


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

Вариант 11


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

Вариант 12


Написать программу, которая в строке введенной с клавиатуры находит и выводит на экран симметричные слова.

Вариант 13


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

Вариант 14


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

Вариант 15


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

Вариант 16


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

Вариант 17


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

Вариант 18


Написать программу, которая выводит на экран слова введенной с клавиатуры строки, в которых гласных букв больше чем согласных.

Вариант 19


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

Вариант 20


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

Вариант 21


Даны два слова, напечатать только те символы, которые встречаются только в одном из слов. Например, для слов процессор и информация. Ответом должно быть: пессифмая.

Вариант 22


Даны два слова, напечатать только те символы, которые встречаются в обоих словах одновременно. Например, для слов процессор и информация. Ответом должно быть: роц.

Вариант 23


Даны два предложения. Для каждого слова первого предложения определить, входит ли оно во второе предложение.

Вариант 24


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

Вариант 25


Дана строка текста, в котором нет начальных и конечных пробелов. Необходимо изменить её так, чтобы длина строки стала равна заданной длине (проверить: текущая длина должна быть меньше заданной!). Изменение следует сделать путем вставки между словами дополнительных пробелов. Количество пробелов между отдельными словами должно отличаться не более чем на 1.


Вариант 26


Даны два предложения. Напечатать слова, которые есть только в одном из них.

Вариант 27


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

Вариант 28


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

Вариант 29


Дан текст, вывести на экран только те слова, в которых нет повторяющихся букв.

Вариант 30


Дан текст, вывести на экран только те слова, которые содержат введенную пользователем подстроку. Например, если пользователь введет рек для строки «Ехал Грека через реку», результат будет Грека, реку.


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

  1. Как реализованы строки с языке программирования Си?
  2. Почему строки называют нуль-терминальными?
  3. Сколько байт памяти необходимо для корректного хранения строки «Привет!» (без кавычек?
  4. Нарисуйте блок-схему и объясните принцип работы алгоритма вычисления длины строки.
  5. Как произвести склейку двух строк?
  6. Как разделить текст на слова?
  7. Нарисуйте блок-схему и объясните принцип работы алгоритма подсчета цифр в тексте.
  8. Как определить содержит ли строка S1 подстроку S2?

ГЛАВА 4. РАБОТА С ДВУМЕРНЫМИ МАССИВАМИ.

Требования к выполнению заданий



На оценку 3 балла написать программу в соответствии с заданием.


На оценку 4 балла:
  1. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
  2. размерность массива должна определяться пользователем программы;
  3. организовать повтор программы по желанию пользователя.


На оценку 5 баллов:
  1. выполнить пункты a и b на оценку 4 балла.
  2. реализовать меню пользователя, состоящее как минимум из 4-х пунктов:
    1. ввод данных;
    2. обработка данных;
    3. вывод результата на экран;
    4. выход.
  3. Для корректной работы меню организовать промежуточное хранение результата.

Вариант 1


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

Вариант 2


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

Вариант 3


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

Вариант 4


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

Вариант 5


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

Вариант 6


Дана прямоугольная матрица. Определить является ли заданная матрица симметричной относительно главной диагонали.

Вариант 7


Дана матрица А размера nm. Упорядочить строки матрицы в порядке возрастания их первых элементов.

Вариант 8


Написать программу для транспонирования прямоугольной матрицы.

Вариант 9


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

Вариант 10


Дана прямоугольная матрица. Заменить строку, имеющую наименьшую сумму, на элементы главной диагонали.

Вариант 11


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

Вариант 12


Дана прямоугольная матрица. Определить является ли заданная матрица симметричной относительно побочной диагонали.

Вариант 13


В кинотеатре N рядов M кресел. Информация о проданных билетах хранится в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов – номерам мест. Если билет продан на то или иное место, то значение соответствующего элемента массива равно 1, если не продан – 0. Посчитать: а) количество проданных билетов на сеанс; б) количество билетов в заданном ряду.

Вариант 14


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

Вариант 15


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

Вариант 16


Дана матрица А размера nm. Упорядочить строки матрицы в порядке возрастания их последних элементов.

Вариант 17


Дана произвольная матрица nm. Меняя местами строки и столбцы упорядочите элементы матрицы так, чтобы элементы каждой строки (слева направо) и каждого столбца (сверху вниз) возрастали. Выводить массив на экран на каждом шаге с комментариями действий.

Вариант 18


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

Вариант 19


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

Вариант 20


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

Вариант 21


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

Вариант 22


Вводятся начальные и конечные координаты положения шахматного коня (x1[1..8], y1[1..8], x2[1..8], y2[1..8]), написать программу, определяющую за сколько ходов конь переместиться в указанные координаты. Распечатать эти ходы на экране.

Вариант 23


В поезде N вагонов по M мест в каждом. Информация о проданных билетах хранится в двумерном массиве. Номера строк соответствуют вагонам, номера столбцов - местам. Если билет на то или иное место продан, в соответствующий элемент массива заносится значение 1. Если не продан – 0. Посчитать: а) коли свободных проданных мест в выбранном вагоне; б) среднюю загрузку поезда в процентах (100% - заполнен полностью, 0% - поезд пуст).

Вариант 24


В двумерном массиве хранятся данные об оценках N студентов по М предметам. Номер строки соответствует номеру студента в группе, номер столбца – предмету. Посчитать: а) средний балл по каждому студенту; б) количество студентов, получающих стипендию (у студента не должно быть троек).

Вариант 25


В двумерном массиве хранятся данные об оценках N студентов по М предметам. Номер строки соответствует номеру студента в группе, номер столбца – предмету. Определить K самых успешных студентов.

Вариант 26


Фирма имеет N магазинов. В двумерном массиве хранятся данные о выручке каждого магазина за последние M месяцев (первого магазина – в первой строке, второго – во второй и т.д.). Определить: а) среднюю выручку каждого магазина за К произвольных идущих подряд месяцев (с К1 по K2); б) магазин с наибольшей выручкой за выбранный период.

Вариант 27


Написать программу, перемножающую заданные пользователем две матрицы.

Вариант 28



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





Вариант 29



Дана квадратная матрица. Поменять местами выбранные пользователем сектора матрицы:

Вариант 30


В двумерном массиве хранятся результаты футбольных матчей. Каждый элемент матрицы содержит информацию о результате игры i-й и j-й команд. 3- i-я команда выиграла, 1 – ничья, 0 – i-я команда проиграла, -1 – команды не играли. Определить а) наиболее успешную команду; б) вывести списки команд, которым еще предстоят игры.

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

  1. Для чего в программах используются двумерные массивы? Как они описываются?
  2. Как в программе использовать значение конкретного элемента двумерного массива?
  3. Как изменяются индексы элементов, располагающиеся на главной диагонали?
  4. Как изменяются индексы элементов, располагающиеся на побочной диагонали?
  5. Как описывается двумерный динамический массив?
  6. Как выделить память под двумерный динамический массив? Как удалить память?

ГЛАВА 5. РАБОТА С ФАЙЛАМИ И МАССИВАМИ СТРОК

Требования к выполнению заданий



На оценку 3 балла написать программу в соответствии с заданием.


На оценку 4 балла:
  1. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
  2. размерность массива может определяться пользователем программы;
  3. организовать повтор программы по желанию пользователя.


На оценку 5 баллов:
  1. выполнить пункты a и b на оценку 4 балла.
  2. реализовать меню пользователя, состоящее как минимум из 4-х пунктов:
    1. загрузка данных из файла с возможностью выбора файла;
    2. обработка данных;
    3. вывод результата на экран;
    4. выход.
  3. Размер массива должен определяться автоматически на основе данных, находящихся в файле.
  4. Для корректной работы меню организовать промежуточное хранение результата.
  5. Вывод программы отсортировать в алфавитном порядке, если заданием не оговорено иное.

Вариант 1


В файле хранятся имена, в формате: одно имя - одна строка. Написать программу, которая читает строки из файла в массив строк, и выводит их на экран а) отсортировав по алфавиту, б) отсортировав по количеству гласных букв в них.

Вариант 2


В файле хранятся названия фирм. Каждая строка запись об отдельной фирме.

ЗАО Рога и Копыта

ООО Три поросенка

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

Вариант 3


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

Вариант 4


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

Вариант 5


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

Вариант 6


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

Вариант 7


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

Вариант 8


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

Вариант 9


В файле хранятся названия фирм. Каждая строка запись об отдельной фирме.

ЗАО Рога и Копыта

ООО Три поросенка

ОАО Аврора


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

ОАО Аврора

ЗАО Рога и Копыта

ООО Три поросенка

Вариант 10


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

Вариант 11


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

Вариант 12


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

Вариант 13


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

Вариант 14


Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Вывести на экран а) симметричные слова, например, «казак», «комок», б) слова, заканчивающиеся на согласную.

Вариант 15


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

Вариант 16


Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Вывести на экран: а) три самых длинных слова; б) слова в порядке возрастания количества согласных букв в них.

Вариант 17


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

Вариант 18


Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Вывести на экран: а) слова длиной менее пяти символов, б) слова, содержащие сдвоенные символы (например: «нн», «ее»).

Вариант 19


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

Вариант 20


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

Вариант 21


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


Вариант 22


В файле хранится строка вида d1± d2± …± dn, где di – числа (0 ≤ di ≤ 9). а) вывести на экран числа в порядке возрастания, б) вывести на экран записанную в тексте алгебраическую сумму в) (задание повышенной сложности) выполнить «а» и «б» при условии, что di – любые неотрицательные числа (di ≥ 0).

Вариант 23


Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Вывести на экран а) только те слова, которые являются правильной записью десятичного числа (например, 123, 1024, 2), б) сумму этих десятичных чисел. Для перевода строки в число можно использовать функцию atoi().

Вариант 24


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

Вариант 25


В файле хранятся названия фирм. Каждая строка запись об отдельной фирме.

ЗАО Рога и Копыта

ООО Три поросенка

ОАО Аврора


Написать программу, которая читает строки из файла в массив строк, и выводит их на экран только названия, состоящие из нескольких слов:

ЗАО Рога и Копыта

ООО Три поросенка

Вариант 26


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


Пример:

Дано

Сортировка без учета артиклей

Перенос артиклей

The Pink Panther

A Fish Called Wanda

The Balance Sheet Barrier

The Balance Sheet Barrier

A Fish Called Wanda

The Pink Panther

Balance Sheet Barrier, The

Fish Called Wanda, A

Pink Panther, The



Вариант 27


В файле хранятся названия и года выхода фильмов в формате «Название (год выпуска)». Одна строка – один фильм. Вывести на экран список фильмов, отсортировав в обратном хронологическом порядке (по убыванию годов выпуска).

Вариант 28


В файле хранится список доменных имен интернета. Вывести на экран имена, принадлежащие зоне .ru. Вывод отсортировать в алфавитном порядке.

Вариант 29


В файле хранится список адресов электронной почты. Вывести на экран имена, записанные с ошибкой. Правильным считать имена, записанные в формате имя@сервер.ru. Например, имя ivan.petrov@sfu-kras.ru является правильным, а имя ivan.petrov@sfu-kras – ошибочным.

Вариант 30


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

Вариант 31


В файле хранится текст, содержащий положительные десятичные числа, разделенные пробелами. Вывести на экран а) слова, являющиеся правильной десятичной записью числа (1, 200, 8000), б) слова, являющиеся неправильной десятичной записью числа (1b2, 6-7).


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

  1. Для чего используются файлы?
  2. Перечислите функции для открытия файла, закрытия файла, чтения данных из файла.
  3. Как открыть файл на чтение? На запись? Как создать новый файл на диске?
  4. Как прочитать из файла текст заданной длины?
  5. Как узнать размер файла?
  6. Как прочитать из файла текст произвольной длины?
  7. Как реализовать одномерный массив, содержащий строки?
  8. Как выполнить сортировку массива строк в алфавитном порядке?



ГЛАВА 6. РАБОТА СО СТРУКТУРАМИ

Требования к выполнению заданий



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


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


На оценку 3 балла:

а) ввод данных с клавиатуры (добавляя новые данные в массив),

б) удаление выбранного элемента массива;

в) вывод данных на экран (без сортировки).


На оценку 4 балла:

а) выполнить задание на оценку 3 балла;

б) реализовать запись данных в файл,

в) чтение данных из файла;

г) вывод данных на экран, отсортировав по одному из строковых полей.


На оценку 5 баллов:

а) выполнить требования на оценку 4 балла;

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

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

Задания

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



  1. Фирмы: наименование, количество сотрудников, годовой оборот, ИНН. Дополнить вывод информацией о том, следует ли фирме предоставлять дополнительные формы годовой отчетности (оборот более 1 млн. руб.).



  1. Автомобили: марка, год выпуска, объем двигателя, пробег. Вывод данных дополнить напоминанием о прохождении ТО, если пробег автомобиля больше 100 тыс. км.



  1. Служебные собаки: порода, кличка, вес, год рождения. Вывод данных дополнить информацией о годности к службе (служебный возраст собаки от 2-х до 6 лет).



  1. Телевизоры: фирма производитель, длина диагонали, цвет корпуса, цена. Вывод данных дополнить информацией о том, подходит ли телевизор для установки в малогабаритных помещениях (диагональ 14” или менее).



  1. Сотовые телефоны: марка, модель, цена, год выпуска. Дополнить вывод информацией о новинках – телефонах, срок пребывания которых на рынке не превышает одного года.



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



  1. Книги: автор, наименование, количество страниц, цена. Дополнить вывод рекомендацией книг, которые можно прочитать за один вечер (количество страниц меньше 100).



  1. Города: Наименование, год основания, население, наличие метро. Дополнить вывод информацией о том, необходимо ли построить в городе метро (если население больше 1 млн. чел., и метро в городе отсутствует).



  1. Музыкальные произведения: исполнитель, наименование, дата выпуска, позиция в рейтинге. Дополнить вывод информацией о «горячих хитах» (произведения, выпущенные более трех месяцев назад, находящихся в двадцатке лучших).



  1. Пригородные поезда: время отправления, конечная станция, время в пути. Дополнить вывод вычисляемой информацией о времени прибытия на конечную станцию. Включить вычисляемое поле «время прибытия» в сортируемые поля.



  1. MP3 плееры: наименование, объем памяти, наличие радио, время разряда батарей. Дополнить вывод информацией о продолжительности звучания из расчета 60 MB музыки в час. Продолжительность звучания не должна превышать время разряда батарей.



  1. Автомобили: марка, год выпуска, объем двигателя, пробег. Дополнить вывод информацией о сумме налога на т.с. (до 100 л/с по 7 руб. за 1 л/с., от 100 до 250 л/с. по 14 руб. за л/с, более 250 л/с по 30 руб. за л/с).



  1. Сотрудники фирмы: ФИО, пол (м/ж), год рождения, месячная з/п. Дополнить данные информацией о сотрудниках, пенсионный возраст которых наступит в ближайшие 3 года (мужчины – 60 лет, женщины – 55 лет).



  1. Студенты: ФИО, номер зачетной книжки, год рождения, средний балл за последнюю сессию. Дополнить вывод данных информацией о размере стипендии: средний балл менее 4 – не платится, от 4 до 4.5 – обычная, от 4.5 до 5 – +50%, 5 – +100%.



  1. Аудитории: наименование учебного корпуса, номер аудитории, количество мест. Дополнить вывод данных информацией о том, подходит ли аудитория для проведения лекций (количество мест больше 50).
  2. ВУЗы: наименование, год открытия, количество факультетов, количество студентов. Дополнить вывод информацией о том, какие ВУЗы в этом году празднуют юбилей.



  1. Ноутбуки: производитель, диагональ монитора, цена. Дополнить вывод информацией о классе ноутбука (бюджетная модель при цене менее 30 тыс. руб, бизнес-класс от 30 до 60 т.р., премиум выше 60 тыс.).



  1. Кредиты: ФИО заемщика, сумма, процентная ставка в год, срок кредита. Дополнить вывод информацией о сумме процентов, которые понадобится выплатить заемщику за срок кредита.



  1. Продукты питания: наименование, вес, цена за кг, срок годности. Дополнить вывод информацией о стоимости товара (вес*цена за кг). Если срок годности товара истекает менее чем через сутки, то товар необходимо уценить вдвое.



  1. Результаты сессии: ФИО студента, оценки по математике, физике, программированию, истории. Дополнить вывод информацией о том, выплачивается ли студенту стипендия (средний балл >= 4).



  1. Судоходные реки: Название реки, протяженность, минимальная глубина фарватера. Дополнить вывод информацией о том, подходит ли река для судоходства большегрузных судов (минимальная глубина должна быть больше 4 м.)



  1. Аренда квартир: адрес, количество комнат, жилая площадь, наличие балкона. Дополнить вывод информацией о том, подходит ли квартира для проживания семьи из 3-х человек (муж, жена, ребенок). Обязательные условия: не менее 2-х комнат и площадь не менее 50 кв. м.



  1. Автомобили: марка, год выпуска, максимальная масса, количество пассажирских мест. Дополнить вывод информацией о том, можно ли управлять данным автомобилем, имея водительское удостоверение категории «B» (макс. масса должна быть меньше 3 т., количество пассажирских мест менее 8).



  1. Книги: автор, наименование, год издания, количество страниц. Дополнить вывод информацией о том, является ли книга новинкой (должна быть издана в этом году).



  1. Студенты: ФИО, год рождения, месяц рождения, пол. Дополнить вывод информацией о том, у кого из студентов день рожденья в текущем месяце.



  1. Сотрудники: ФИО, год рождения, стаж работы, пол. Дополнить информацию данными о том, полагается ли сотруднику пенсия по возрасту (для мужчин 60 лет, для женщин – 55).



  1. Книга контактов: ФИО, номер телефона, домашний адрес, год рождения. Дополнить вывод информацией о контактах, у которых в этом году юбилей (возраст кратный 10, старше 21 года).



  1. Туристические маршруты: наименование пункта отправления, наименование пункта назначения, продолжительность в пути, требуется ли спец.снаряжение. Дополнить вывод информацией о том, подходит ли маршрут для неподготовленных туристов (пункт отправления и назначения должны совпадать, продолжительность пути не должна превышать 10 км, маршрут не должен требовать спец.снаряжения).



  1. Платежи: Имя плательщика, дата платежа, назначение платежа, сумма платежа. Дополнить вывод информацией о том, является ли платеж крупным (более 10 тыс. рублей), либо особо мелким (менее 10 рублей).



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

  1. Что такое структура для чего они используются?
  2. Что такое поле структуры? Сколько полей может содержать структура? Каких типов могут быть поля структуры?
  3. Как средствами языка Си объявить структуру, состоящую из трех полей целого типа и двух вещественного?
  4. Как обратиться к полю структуры? В чем различие между обращением к полю структуры через указатель и через «обычную» переменную?
  5. Как объявить массив структур?
  6. Как обратиться к полю структуры, являющейся элементом массива?
  7. Как заполнить поля структуры с клавиатуры?
  8. Как сохранить данные, хранящиеся в структуре, в файл?
  9. Как загрузить данные из файла в структуру?
  10. Как организовать вывод массива структур на экран?



ГЛАВА 7. РАБОТА С ФУНКЦИЯМИ

Требования к выполнению заданий



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


На оценку 3 балла:

а) допускается использование глобальных переменных по усмотрению студента.


На оценку 4 балла:

а) допускается использование только двух глобальных переменных - массива структур и его размера.


На оценку 5 баллов:

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


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

  1. Что такое функция?
  2. Чем отличается объявление функции от ее реализации?
  3. Что такое возвращаемое значение функции?
  4. Что такое параметр функции? В чем отличие формальных параметров от фактических?
  5. Как передать параметр в функцию по значению? Как передать параметр в функцию по указателю? В чем отличие двух методов?
  6. Как передать массив в функцию?
  7. Как вернуть из функции значение?
  8. Как вернуть из функции массив?
  9. Что такое глобальная переменная? Что такое локальная переменная функции? Каковы время жизни и область видимости этих переменных?
  10. Что будет распечатано на экране в ходе выполнения следующего фрагмента? Поясните почему?




  1. Что будет напечатано на экране в ходе выполнения следующего фрагмента? Поясните почему?





ГЛАВА 8. МОДУЛЬНЫЕ ПРОГРАММЫ

Требования к выполнению заданий



За основу взять задания и требования к лабораторной работе №7. Изменить программу так, чтобы каждая функция располагалась в отдельном модуле (cpp-файле).

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

  1. Для чего программы разбивают на модули?
  2. Как подключить модуль (cpp-файл) к проекту?
  3. Как вызвать функцию, находящуюся в другом файле?
  4. Какие ошибки могут возникнуть при компиляции многомодульной программы?
  5. Какие ошибки могут возникнуть при линковке (компоновке) многомодульной программы?
  6. Принцип работы и назначение директивы #include? В чем отличие #include и #include "file.h"?