Сборник задач по программированию с решениями А. Быков


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
��А.А.Быков

Программирование на языке С++
��2 Версия
мая 2008
Решения
Вычисление наименьшего из трех чисел.
Подбор кода сейфа.
Простейшие операторы ввода из файла
Задачи
Решения
Ввод чисел из файла.
Ввод отдельных символов из файла.
Ввод символов из файла.
Случайные числа
Задачи
Решения
Генерирование случайных чисел
Исследование набора слу
чайных чисел
Генерирование набора различных случайных чисел
Одновременное бросание 4 игральных костей
Случайное блуждание
Задачи
Решения
Случайное блуждание по прямой
Случайное блуждание по плоскости
Случайные процессы
Задачи
Решения
Задача случай
ного обстрела без прогноза
Одномерные массивы постоянного размера
Задачи
Решения
Вычисление суммы элементов одномерного массива
Ввод из файла и анализ одномерного массива
Сортировка одномерного массива
Задачи
Решения
Сортировка с помощью функции сравнения.
��А.А.Быков

Программирование на языке С++
��3 Версия
мая 2008
Сортировка двух одномерных массивов разного типа
новременно
Сортировка одномерного текстового массива
Динамические одномерные массивы
Задачи
Гистограмма одномерного массива
Задачи
Решения
Простая гистограмма одномерного массива
Сложная гистограмма одномерного массива
Двумерные массивы с постоянной размерностью
Задачи
Решения
Сумма элементов в строке двумерного массива
Одновременный анализ нескольких двумерных массивов
Двумерные массивы с переменной размерностью
Задач
Решения
Динамические двумерные массивы
Двумерный массив треугольной формы
Символьные массивы
адачи
Решения
Статический массив указателей на строки
Динамический массив указателей на строки
Символьные ма
ссивы
Форматированный ввод и вывод
Задачи
Решения
Форматированный ввод и вывод.
Форматированный ввод
и вывод.
Анализ данных
Задачи
Решения
��А.А.Быков

Программирование на языке С++
��4 Версия
мая 2008
Контрольно
обучающая система
Текстовые задачи
Задачи
Решения
Задача массового обслуживания
Пример экзаменационн
ого билета
Задачи
1. Вычисление наименьшего из трех чисел.
2. Анализ нескольких двумерных массивов
3. Задача слу
чайного обстрела без прогноза
Общие положения
Экзамен по курсу
«Программиров
ание на языке С++» проводи
ся в терминальном классе с установленным программным обе
печением, Microsoft Visual Studio и
Borland C++ Builder по
выбору экзаменуемого. Экзаменационный билет содержит три
дания.
[1]
Простое задание, для выполнения которого
дост
точно
знакомства с основными конструкциями языка С++, в том
числе иметь понятие об основных типах объектов, знать
арифметические, логические и условные операторы
опер
торы цикла for, одномерные и двумерные массивы с пост
янной размерностью.
Время
выполнения: 30 м
нут.
[2]
Задание средней сложности, для выполнения кот
рого
достаточно знания всех конструкций языка С++, включая о
номерные и двумерные массивы с переменными границами
(операторы new и delete), логические операторы
, оператор
switch
, опе
раторы цикла
while
умение работать с те
стовыми переменными и константами, знать основные ста
дартные функции для работы со стр
ками,
уметь выводить
информацию в файл и считывать информацию из файла с
помощью опер
торов << и >>
ремя выполнения: 60
минут.
[3]
Сложное задание, для выполнения которого требуется
свободное владение всеми конструкциями языка в рамках
программы первого семестра обучения
, а также умение с
��А.А.Быков

Программирование на языке С++
��5 Версия
мая 2008
ставить простейшую модель объекта
. Время выполнения: 90
минут.
Общая продолжительнос
ть экзамена составляет не более 180
минут в терминальном классе.
Студе
нт, выполнивший первое
задание, получает оценку не ниже 3.
Студе
нт, выполнивший
второе задание, получает оценку не ниже 4.
Студе
нт, выполни
ший третье задание, получает оценку 5. Во врем
я выполнения
зад
студе
нт может использовать любые пособия, а также
свои записи лекций и практических занятий. Можно использ
вать также любые файлы (в том числе
++ файлы
), которые з
ранее должны быть сохранены на локальном диске в рабочей
директ
рии ст
удента. В случае необходимости
студе
нт может
обратиться за помощью к преподавателю. Преподаватель пом
гает
ден
ту исправить ошибки
в коде
. В этом случае оценка 5
не ставится
Если курсант обращается за помощью н
сколько
раз, не ставится оценка в
ше 3.
писок типовых задач объявляется заранее не позже чем за м
сяц до экзамена. Типовые задания разбираются на лекциях и о
рабатываются на
рактических занятиях.
Первое (простое) зад
ние на экзамене может незначительно отл
чаться от типового
задания из данного
списка. Второе (сре
ней сложности) задание
также выбирается из данного списка и видоизменяется так, чт
бы ход его решения ненамного отличался от типового. Напр
мер, если в типовом задании сказано, что оценка каждого ку
санта потока за каждую неделю обучени
я в течение семестра
хранится в двумерном массиве и требуется найти среднюю
оценку к
ждого курсанта за весть семестр, то на экзамене может
быть поставлена задача: найти среднюю оценку всего п
тока за
дую неделю обучения.
Третье задание (сложное) будет
похоже на одно из отработа
ных на лекциях или ПЗ заданий, но будет содержать
новые
менты, которые
студе
нт должен разработать самосто
тельно.
Задания из этого списка следует выполнять в среде Microsoft
Visual Studio или Borland C++ Builder. При создании
проекта
указывайте о
ции “Win32 application” и “Console”. Вывод в файл
��А.А.Быков

Программирование на языке С++
��6 Версия
мая 2008
осуществля
те с помощью опер
тора myofs<<, ввод из файла
пом
щью оператора my
fs>>, где myofs
объект типа ofstream,
связанный с файлом с помощью оператора
myofs.open(“имя
файла”)
, myifs
объект типа ifstream, связанный с файлом с п
мощью оператора myifs.open(“имя файла”)
осле завершения
работы с файлом не забудьте его закрыть, например,
myofs
close
од с кла
виатуры
(при необходимости)
осущес
вляйте с помощью оператора cin>>
…, а вывод на экран cout<<…
В тех задачах, в которых форма отчета не определена явно,
предполагается, что результаты направляются в файл
protocol.txt.
Следует иметь в виду, что разделение задач по темам явл
ется
условным, так как для решения некоторых зад
ач придется обр
щаться к
разным разделам курса программир
вания.
Задачи с решениями помечены символом +, например [+2].
Исходные тексты можно найти
по адресу
boombook
narod
1.
Простейшие ф
ункции
+1] Определите
функцию d
ouble f(double x, double y), к
торая вычисляет
и возвращает
длину гипотенузы прямоугол
ного треугольника, две другие стороны x и y
которого
извес
ны.
+1]
Напишите функцию
double
double
x1,
double
y1,
ble
x2,
double
y2), которая вычисляет расстояние
между двумя
точк
ми (xl, yl) и (x2, y2).
+1]
Напишите функцию int f(int m2, int m1, int m0), кот
рая вычисляет и возвращает натуральное число, первая (со
ни), вторая (десятки) и третья (единицы) цифры которого
равны
соответс
венно
m2, m1, m0.
+1]
Напиш
ите функцию int f(int m2, int m1, int m0)
, в кот
рой заданы значения всех трех параметров по умолчанию.
Эта
��А.А.Быков

Программирование на языке С++
��7 Версия
мая 2008
функция
вычисляет и возвращает натуральное число, первая
(сотни), вторая (десятки) и третья (единицы) цифры которого
равны
соответственно
m2, m1, m0
Требуется определить
функцию так, чтобы после выполнения оператора x=f() знач
ние x равн
лось 567.
+1]
Напишите
несколько
функци
с одним именем
int
и с разными наборами параметров
Продемонстрируйте
работу перегруженных фун
ций.
[+1]
Операторы
дают в
результате
т.е.
соответственно сумму и произвед
ние своих параметров)
Напишите функци
и f
(…,…)
[1]
Напишите функцию f(
double
double
double
double
), котора
я возвращает
катеты прямоугольного тр
угольника, гипотенуза которого равна с
, а
острый
угол
(гр
дусов)
[1]
Напишите функцию f(
double
double
double
double
), которая возвращает
катеты прямоугольного тр
угольника, гипотенуза которого равна с
острый
угол
(гр
дусов)
+1] Напишите функцию sw
int
int
), которая изм
няет значения параметров a и b так, что новое значение a ра
но старому значению b и наоборот.
+1]
Напишите функцию sw
int
int
), к
торая и
меняет знач
ения параметров a и b так, что новое зн
чение a
равно старому знач
нию b и наоборот.
[1] Напишите функцию sw
int
int
int
), которая
изменяет значения параметров по прав
лу a
[1] Напишите функцию sw
int
int
int
), кот
рая
зменяет значения параме
ров по правилу a
[1] Напишите функцию
int
int
int
int
int
), к
торая присваивает объекту a значение, равное
, а объекту
��А.А.Быков

Программирование на языке С++
��8 Версия
мая 2008
значение x/y. Если значение
было равно нулю, функция
должна возвратить 0, иначе 1.
[1] Напишите функцию
int
int
int
), которая возвращ
ет 0, если значения
и y
оба
равны нулю,
, если
равен
, если
равен 0, иначе
[1] Напишите функцию
int
int
int
), которая возвращ
ет
, если
больше y, иначе возв
ращает
[1] Напишите функцию double
double
double
), которая
возвращает
если
больше y, иначе возвращает
Предполагается, что значения параметров больше нуля.
[1] Напишите функцию double
double
double
double
), которая возвра
щает
, где
есть меньшее из чисел
, а m и n есть среднее и большее из этих чисел. Предпол
гается, что значения параметров больше нуля.
[1] Напишите функцию double
double
double
double
), которая возвращает наибольшее из значений
|
[1] Напишите функцию
int
int
int
int
), которая во
вращает наименьшее из значений a, b,
[1] Напишите функцию
int
int
int
int
), которая во
вращает наибольшее из значений a, b,
[1] Напишите функцию
int
int
int
int
), которая
вращает наименьшее из значений объектов a, b,
[1] Напишите функцию
int
int
int
), которая во
вращает
если
222
xyz
, иначе возвращает
[1] Напишите функцию
int
int
), к
оторая возвр
щает
если
делится нацело на
, или наоборот,
лится нацело на
, иначе возвращает
. Предполагается,
что значения параметров больше нуля.
[1] Положительные числа
могут быть сторонами
треугольника, если большее из них ме
ньше суммы двух др
гих. Напишите функцию
int
int
, int z), которая во
��А.А.Быков

Программирование на языке С++
��9 Версия
мая 2008
вращает
если числа
могут быть сторонами тр
угольника, иначе возвращает
. Предполагается, что
значения параметров больше нуля.
[1]
Определите функцию double f(double x, double y), которая
вычисляет
и возвращает
длину гипотенузы прямоугольного тр
угольника, когда две другие стороны x и y и
вестны.




"

"


endl

x

= 2+
y = 2+rand()%20;
x
y
x
,
y
)="

z

endl;







:
:




+1]
Напишите функцию
double
double
double
ble
double
2),
которая вычисляет расстояние между двумя
точк
ми (xl, y
l) и (x2, y2).
, double y





"

"


endl

��А.А.Быков

Программирование на языке С++
��10 Версия
мая 2008
R

=
f
(
3.0, 7.0

7.0, 10.0
-
x2
x
-
x2

", y
-
y2
y
-
y2

",
R
=
"


R


endl








:
:




+1]
Напишите
несколько
функци
с одним именем
int f(
и с
разными наборами параметров
Продемонстрир
уйте работу п
регруженных функций.
f
32(
x
){
endl;
f32(7)
" f32(7) endl;
f32(7.0)
" f32(7.0) endl;
f32(7,8)
" f32(7, 8) endl;
f32(7)
"
f32(8.0,7)
" f32(8.0, 7);
endl endl;







:
:




��А.А.Быков

Программирование на языке С++
��11 Версия
мая 2008
[+1]
Напишите функцию sw
int
int
), к
торая изменяет
значения парамет
ров a и b так, что новое значение a равно ст
рому знач
нию b и наоборот.
[+1]
Напишите функцию sw
int
int
), кот
рая изменяет
значения параметров a и b так, что новое значение a равно ст
рому знач
нию b и наоборот.





swap(double&, double&)"
endl;

x = 123.456, y=987.654;

x
y endl;


dswp(x, y) x="




��А.А.Быков

Программирование на языке С++
��12 Версия
мая 2008
2.
Рекурсивные функции
[2]
Напишите
нерекурсивную
функцию int
f(int n), кот
рая
находит число Фибоначчи
. Числа Фибоначчи определяю
ся соотношени
f
nnn
fff
=+
+2]
Напишите
рекурсивную
функцию int f(int n), кото
рая
находит число Фибоначчи
. Числа Фибоначчи определяю
ся соотнош
ниями
f
nnn
fff
=+
[2]
Напишите
рекурсивную
функцию int f
(int n), которая нах
дит
число Фибоначчи
. Числа Фибоначчи определяются соотн
шениями
nnn
fff
=+
.
.




��А.А.Быков

Программирование на языке С++
��13 Версия
мая 2008
5.
o=" counter endl;







:
:




3.
есятичны
целы
числ
+1]
Напишите функцию int f(int h, int m, int s), которая
принимает
три целых аргумента (часы h, минуты m и с
кунды
s) и возвращает количество секунд, прошедших с начала дня.
[1]
Напишите функцию int f(int
, int
), которая приним
ет
два
целых аргумента (
месяц
день
) и
возвращает
��А.А.Быков

Программирование на языке С++
��14 Версия
мая 2008
чество
дней
, прошедших с начала
года
Считаем, что в ка
дом месяце 30 дней.
[1]
Напишите функцию int f(int
, int
), которая приним
ет
два
целых аргумента (
месяц
день
) и
возвращает
чество
дней
, прошедших с начала
года
Считаем, что в ка
дом месяце 30 или 31дней, а год не вис
косный.
+1]
Напишите функцию f(int& m1, int& m0, int N), кот
рая
возвращает первую и последнюю цифры двузначного нат
рального числа N.
+1]
Напишите функцию f(int* m1, int* m0, int N), которая
возвращает первую и последнюю цифры двузначного нат
рального
ла N.
[1]
Напишите
функцию
int
int
int
int
, которая
находит наименьшее число из заданного набора трех целых
чисел. Используйте условный опер
тор if.
[1]
Напишите
функцию
int
int
int
int
с арг
ментами по умолчанию
, которая
находит
сумму
ного, двух
или
трех целых чисел
(находящихся в пределах от 1 до 999)
Используйте условный оп
ратор if.
[1]
Напишите
функцию
int
int
int
int
с арг
ментами по умолчанию
, которая находит
наименьшее из
ного, двух или
трех целы
х чисел
(находящихся в пределах от
1 до 999)
. Используйте у
ловный оператор if.
[1]
Напишите функцию bool even(int n), определяет че
ность числа n
и возвращает true для четного числа и false для
нечетн
го числа
[1]
Напишите функцию f(int m, int n), кото
рая определ
ет
для пары целых чисел m и n, кратно ли второе число пе
вому.
[1]
Напишите функцию
int
), которая
вычисляет и
возвращает сумму всех натуральных чисел от m до n включ
тельно
[1]
Напишите функцию
int
int
int M, int N), которая
сум
мирует последовательность целых чисел от M до N вкл
��А.А.Быков

Программирование на языке С++
��15 Версия
мая 2008
чительно.
Функция должна возвратить 1 при условии M
0 в противном случае, и при условии M
находить и во
вращать сумму по ссы
ке.
[1]
Напишите функцию
int
), которая
вычисляет и
возвращает п
роизведение всех натуральных чисел от m до n
включ
тельно
[1]
Напишите функцию
int
(int m), которая
вычисляет и
возвращает факториал положительного числа m, т.е. произв
дение всех натуральных чисел, меньших или ра
ных m
+2]
Напишите функцию f(int&
m2, int& m1, int& m0, int
N), которая возвращает первую, вторую и третью цифры
трехзначного натурал
ного числа N.
+2]
Напишите функцию f(int& m4, int& m3, int& m2, int&
m1, int& m0, int N), которая возвращает все цифры пяти
ного н
турального числа N.
+2]
Напишите функцию f(int* arr, long N), которая во
вращает все цифры пятизначного нат
рального числа N.
+2]
Напишите функцию f(int& h, int& m, int& s, int sec),
которая принимает количество секунд, прошедших с начала
дня, и возвращает три целых пере
менных (часы, минуты и с
кунды).
+2]
Напишите функцию
int f(int x)
, которая принимает ц
лое значение
(не больше пяти знаков)
и возвращает число с
обратным порядком цифр. Например, принимается число
7631, возвращае
ся число 1367.
+2]
Палиндром
число
или текст, который одинаково ч
тается слева
направо и справа налево. Например, каждое из
следующих пятизначных целых чисел является палиндр
мом:
Коллекцию
палиндромов
можно посмотреть здесь.
doc
]

pdf
]
http://
sheba
.spb.ru/links
audioknigi.htm
Степень благо
звучности палиндромов иногда оставляет желать лучшего, п
этому читатетеля с недо
таточно крепкими нервами прошу по этой ссылке не
переходить.
��А.А.Быков

Программирование на языке С++
��16 Версия
мая 2008
и 11611.
Текст
палиндром:
Ешь нем
того ты меньше
Напишите
функцию
bool f(int N),
которая
пределяет, явля
тся ли
пяти
значное целое числ
пали
дром
+2]
Напишите функцию
int f(int* arr, int M, int N)
, которая
составляет таблицу палиндромов в пределах от
до
и во
щает их число
[2]
Наибольший общий делитель (НОД) двух целых ч
сел
то наибольшее целое, на которое без остатка делится на
каждое из двух чисел. Напишите функцию int f(int m, int n),
которая возвращает НОД двух целых ч
сел m и n.
[2]
Наименьшее общее кратное (НОК) двух целых чисел
это наименьшее целое, которое без остат
ка делится на ка
дое
из двух чисел. Напишите функцию int f(int m, int n), которая
возвращает НОК двух целых ч
сел m и n.
[2]
Говорят, что целое число является совершенным чи
лом, если его сомножители, включая 1 (но не само число) в
сумме дают это число. Н
апример, 6
совершенное число, так
как 6=1+2+3. Напишите функцию bool f(int n), которая опр
деляет, является ли ее параметр n совершенным числом. И
пользуйте эту функцию в программе, которая определяет и
печатает все соверше
ные числа в диапазоне от 1 до
[2]
Простое число делится нацело только на 1 и на само с
бя. Напишите функцию bool f(int n), которая возвращает true,
ли n
простое число и false в противном случае. Составьте
таблицу и подсчитайте количество простых чисел от 2 до
+1]
Напишите функцию int f(int h, int m, int s), которая прин
мает три целых аргумента (часы h, минуты m и секунды s) и во
вращает количество секунд, пр
шедших с начала дня.
��А.А.Быков

Программирование на языке С++
��17 Версия
мая 2008



s=" s







:
:




+1]
Напишите функцию int
f(int m2, int m1, int m0)
, в которой
заданы значения всех трех параметров по умолчанию.
Эта фун
вычисляет и возвращает натуральное число, первая (сотни),
вторая (десятки) и третья (единицы) цифры которого равны
ответственно
m2, m1, m0.
f31(int x=5, int y=6, int z=7)


��А.А.Быков

Программирование на языке С++
��18 Версия
мая 2008

+1]
Напишите функцию int f(int m2, int m1, int m0), которая в
числяет и возвращает натурал
ное число, первая (сотни), вторая
(десятки) и третья (единицы) цифры кот
рого равны m2, m1, m0.
f02(
x2,
int
x1,
int
x0)




endl

x2 = rand()%10;
x1 = rand()%10;
x0
= rand()%10;
m = f02(x2, x1, x0);
x2
x1
", x0="

x
0

m


"."

endl

endl








:
:




+1]
Напишите функцию f(int& m1, int& m0, int N), которая во
вращает первую и последнюю цифры двузначного н
турального
числа N.
��А.А.Быков

Программирование на языке С++
��19 Версия
мая 2008
f
03(
x
1,
int
x
0,
int
x
)


x0)/10;


"Расщепляем двузначное число на цифры."

x = 10+rand()%90;
x1, x0;
m = f03(x1, x0, x);
x
x1
x0
m
"."
endl endl;







:
:




+1]
Напишите
функцию f(int* m1, int* m0, int N), которая во
вращает первую и последнюю цифры двузначного натурал
ного
числа N.
f04(
x)

*x0)/10;


"Расщепляем двузначное число на цифры."
��А.А.Быков

Программирование на языке С++
��20 Версия
мая 2008
x = 10+rand()%90;
x1, x0;
m = f04(&x1, &x0, x);
x
x1
x0
m
"."

endl

endl








:
:




+2]
Напишите функцию f(int& m2, int& m1, int& m0, int N), к
торая возвращает первую, вт
орую и третью цифры трехзначного
натурал
ного числа N.
+2]
Напишите функцию f(int& m4, int& m3, int& m2, int& m1,
int& m0, int N), которая возвращает все цифры пятизначного н
турального числа N.
+2]
Напишите функцию f(int* arr, long N), которая во
вращ
ает
все цифры пятизначного натурального числа N.
+2]
Напишите функцию f(int& h, int& m, int& s, int sec), которая
принимает количество секунд, прошедших с начала дня, и во
вращает три целых переменных (часы, минуты и с
кунды).
f05(
x)

x0)/10)%10;
10*x1
x0)/100;

& x0,
x)

��А.А.Быков

Программирование на языке С++
��21 Версия
мая 2008
x0)/10)%10;
10*x1
x0)/100)%10;
100*x2
10*x1
x0)/1000)%10;
1000*x3
100*x2
10*x1
x0)/10000)%10;

f07
int
x)

x0 = x%10;
x1 = ((x
x0)/10)%10;
x2 = ((x
10*x1
x0)/100)%10;
x3 = ((x
100*x2
10*x1
x0)/1000)%10;
x4 =
1000*x3
100*x2
10*x1
x0)/10000)%10;






f09(
x)

s)/60)%60;
60*m
s)/3600;



endl

x = 100+rand()%900;
x2=0, x1=0, x0=0;
m = f05(x2, x1, x0, x);
��А.А.Быков

Программирование на языке С++
��22 Версия
мая 2008
x
x2
", x1="
x1
x0
", f05(x2,x1,x0,x)="


endl

endl



endl;
x = 10000*(1+rand()%9) + rand()%10000;
x4=0, x3=0, x2
m = f06(x4, x3, x2, x1, x0, x);
x
x4
", x3="
x3
x2
", x1="
x1
x0
", f06(x4,x3,x2,x1,x0,x)="

m


"."

endl

endl



endl;
x = 10000*(1+rand()%9) + rand()%10000;
arr[5];
int
n=0; n5; n++) arr[n]=0;
m = f07(arr, x);
x;
int
n=0; n5; n++)
n
arr[n];
m

endl

endl



endl;
tim =

h=0, m=0,
s=0;
xx = f09(h, m, s, tim);
tim
h
", m="
m
s
", f09(h,m,s,tim)="
xx
endl;
tim1 = f08(h, m, s);
h
m
��А.А.Быков

Программирование на языке С++
��23 Версия
мая 2008
", s="
s

tim

endl

endl








:
:




x=54370, x4=5, x3=4, x2=3, x1=7, x0=0,
+2]
Напишите функцию int f(int x),
которая принимает ц
лое значение (не больше пяти знаков) и возвращает число с
обратным порядком цифр. Например, принимается число
7631, возвращае
ся число 1367.
f10(
x)

x
10000)
x0 = x%10;
x1 = ((x
x0)/10)%10;
x2 = ((x
10*x1
x0)/100)%10;
x3 = ((x
100*x2
10*x1
x0)/1000)%10;
x4 =
1000*x3
100*x2
10*x1
x0)/10000)%10;

f11(
nt
x)

// Проверяем, является ли заданное число x палиндр
y = f10(x);
��А.А.Быков

Программирование на языке С++
��24 Версия
мая 2008

f12(
N1,
int
N2)

// Найдем количество палиндромов в педелах от N1 до
m=0;
int
n=N1; nN2; n++)




endl;
x = 10000*(1+rand()%9) + rand()%10000;
y = f10(x);
x
", y="
y endl endl;

+2]
Палиндром
число или текст, который одинаково чит
ется
слева направо и справа налево. Например, каждое из следующих
пятизначных целых чисел является палиндр
мом: 12321, 55555,
45554 и 11611. Напишите функцию bool f(int
N), которая опр
деляет, является ли пятизначное целое число N палиндромом.
+2]
Напишите функцию int f(int* arr, int M, int N), которая с
ставляет таблицу палиндромов в пределах от M до N и возвр
щает их число.
.
.





��А.А.Быков

Программирование на языке С++
��25 Версия
мая 2008

endl

x = 10000*(1+rand()%9) + rand()%10000;
y = f10(x);
x

f11(x)
x1 = 5445;
y1 = 5445;
yofs
x1
y1
", f11(x1)="
f11(x1) endl endl;
x2 = 12321;
y2 = 12321;
x2
y2
", f11(x2)="
f11(x2) endl endl;

.
.






endl

int
N = 100000;
arr[N];
M = f12(arr, 80000, 85000);
N


int
m=0, s=0; mM; m++)











:
:




= 12045,
= 54021,
11(
)= 0
��А.А.Быков

Программирование на языке С++
��26 Версия
мая 2008

1=5445,
y
1=5445,
f
11(
1)=0
x
2=12321,
y
2=12321,
f
11(
2)=1

0]=80008 [ 1]=80108 [ 2]=80208 [ 3]=80308 [ 4]=80408
7]=80708 [ 8]=80808 [ 9]=80908
23]=82328
[24]=82428

28]=82828 [29]=8
32]=83238 [33]=83338 [34]=83438
[
46]=84648 [47]=84748
4.
словные операторы
и ци
лы
[1]
Напишите программу, которая находит наименьшее
число из заданного набора трех целых чисел. Используйте у
ловный оп
ратор if.
+1]
Напишите
функцию
, которая находит наименьшее
число из заданного набора тр
ех целых чисел. Используйте у
ловный оп
ратор if.
[1]
Напишите программу, которая с помощью функции
rand()
ставит оценки
в пределах от
до 5. В файл протокола
направляйте слово “
Неуд
” при появлении
Удовл
» при п
явлении
, и т.д. Используйте оп
ратор
switch.
[1]
Напишите функцию int f(int M, int N), которая вычисл
ет и возвращает сумму всех нечетных целых чисел в пределах
от M до N включительно. Используйте опер
тор for.
[1]
Напишите функцию int f(int N
, int n
), которая вычи
ляет
и возвращает наимень
шее из чисел, больших или равных N,
которое делится нацело на
. Используйте оператор while.
[2]
Напишите функцию
int f(int
arr
, int n),
которая сумм
рует последовательность целых чисел
из
массив int arr*=new
int[N]
Полагайте, что первое прочитанное цел
ое число указ
��А.А.Быков

Программирование на языке С++
��27 Версия
мая 2008
вает
N,
количество целых чисел, которые далее будут введ
апример,
входная последовательность может иметь вид

где 5 показывает, что будет вв
дено последовательно 5 чисел, которые надо суммир
вать.
[1]
апишите функцию int
fmina
(int* arr, int N), которая
ходит наименьшее из N целых чисел, которые находятся в
массиве arr.
[2]
Множество троек целых положительных значений ст
рон прямоугольного треугольника называется тройками П
фагора. Эти три стороны дол
жны удовлетворять соотнош
нию, по которому сумма квадратов двух сторон (катетов)
равна квадрату третьей стороны (гипотенузы). Найдите все
тройки Пифагора, в которых все стороны не больше 500. И
пользуйте трижды вл
женные циклы for.
+2]
Извес
тно, что сейф открывается при пр
вильном вводе
кода из
цифр 0…9. Задайте код и затем откройте сейф, и
пользуя метод перебора с помощью
нескольких
операторов
цикла for.
+1]
Напишите
функцию
, ко
торая находит на
меньшее число из
заданного набора трех целых чисел. Используйте условный оп
ратор if.



��А.А.Быков

Программирование на языке С++
��28 Версия
мая 2008







:
:




+2]
Известно, что сейф открывается при правильном вводе к
да из
цифр 0…9. Задайте код
и затем о
кройте сейф, используя
метод перебора с помощью
нескольких
опер
торов цикла for.


x2=3;
x3=8;








��А.А.Быков

Программирование на языке С++
��29 Версия
мая 2008




" count "
endl;






"
count "
endl;








:
:




5.
Простейшие операторы
вод
файла
+1] Прочитайте из файла последовательность целых ч
сел, разделенных пробелами. Результат сохраните в массиве и
направьте в файл прот
кола.
+1]
Прочитайте из файла последовательность симв
лов из
набора {а…я}, не разделенных пробелам
и. Результат сохр
ните в массиве char buf[128] и направьте в файл прот
кола.
��А.А.Быков

Программирование на языке С++
��30 Версия
мая 2008
+1]
Прочитайте из файла последовательность символов,
разделенных пробелами. Результат сохраните в массиве и н
правьте в файл прот
кола.
Отображение информации
[1]
Напишите фун
кцию f(int x), которая отображает у лев
го края экрана строку из x звезд
чек.
[1]
Напишите функцию sq(int rows, int cols), которая от
бражает у левого края экрана прямоугольник из звездочек,
размеры которого указаны целыми пар
метрами rows и cols.
[1]
пишите функцию, которая отображает у левого края
экрана сплошной прямоугольник из заданных символов, ст
рона которого указана целыми параме
рами rows и cols.
[2]
Напишите функцию int f(int M, int N), которая выв
дит
в файл шаблон шахматной доски (M рядов
по N колонок си
волов *) и возвращает значение M*N. Числа M и N прочита
те из фа
ла data.txt.
+2]
Напишите программу, которая читает из файла
сколько
целых
чисел (каждое между 1 и 72). Для каждого
просчитанного числа ваша программа должна напечатать
року, содержащую соответствующее число звездочек. Н
пример, если ваша программа прочла число 7, она должна н
печатать *******.
+2]
Напишите программу, которая читает из файла
сколько целых
чисел (каждое между 1 и 72). Для каждого
просчитанного числа ва
ша программа должна напечатать
столбец
, содержащ
соответствующее число
символов *
Например, если ваша программа пр
чла числ
6 4 4 3 5 4 3 2 4
и т.д
, она должна напеч
тать
o
o o o oo o
ooo oo oo ooo o o
ooooooo ooooo
oooooooooooooooooooo
oooooooooooooooooooo
��А.А.Быков

Программирование на языке С++
��31 Версия
мая 2008
+1] Прочитайте из файла последовательность целых чисел, ра
деленных пробелами. Результат сохраните в ма
сиве и направьте
в файл прот
кола.


endl

int
M=128;
N;
x[M];
1)


int
n=0; nN; n++)

endl

int
n=0; nN; n++)

close



d
d
a
a
t
t
a
a
0
0
1
1
.
.
t
t
x
x
t
t






:
:










:
:




��А.А.Быков

Программирование на языке С++
��32 Версия
мая 2008
+1]
Прочитайте из файла последовательность символов из н
бора {а…я}, не разделенных пробелами. Результат с
храните в
массив
е char buf[128] и направьте в файл прот
кола.


"

endl

buf[128];

endl




d
d
a
a
t
t
a
a
0
0
3
3
.
.
t
t
x
x
t
t






:
:










:
:




+1]
Прочитайте из файла после
довательность символов, разд
ленных пробелами. Результат сохраните в массиве и направьте в
файл прот
кола.


"

endl

open
"
data
);
buf[128];
count=0;
int
n=0; n16; n++)

�� buf[n];

close
��А.А.Быков

Программирование на языке С++
��33 Версия
мая 2008

"

endl




d
d
a
a
t
t
a
a
0
0
5
5
.
.
t
t
x
x
t
t






:
:










:
:





6.
Случайные чи
+1]
Генерирование набора случайных чисел.
Получите
заданное количество N (например,
случайных целых ч
сел в диапазоне от 0 до M
например,
Найдите их
сумму.
+2]
Генерирование на
бора случайных чисел.
Получите
заданное количество N (например, 100)
случайных целых ч
сел в диапазоне от 0 до M
например,
ратите
внимание на то, что среди этих чисел попадаются пары ра
ных чисел
а также тройки, четверки и т.д.
Найдите кол
ство пар равных чисел.
+2] Генерирование набора различных случайных чисел.
Получите заданное количество N (например, 20)
различных
случайных целых чисел в диапазоне от 0 до
Найдите их
сумму.
[2]
Получите заданное количество N (например, 100)
чайных целых чисел в диапазоне от 0 до M
например,
Найдите наибольшее количество равных чисел (н
пример, набор 1
6 содержит
пять чисел равных 6
).
[2]
Бросание монеты
Напишите программу, моделиру
щую бросание
монеты с помощью генератора случайных ч
сел rand(). Для каждого броска монеты программа должна п
��А.А.Быков

Программирование на языке С++
��34 Версия
мая 2008
чатать в файл Орел или Решка. Смоделируйте с помощью
этой программы бросание 100 раз и подсчитайте, сколько раз
появилась каждая сторона м
неты.
[2]
Бросание
пары
монет
Напишите программу, модел
рующую
многократное (
=100 раз
бросание
пары
монет с
помощью генератора случайных чисел rand().
одсчитайте,
сколько раз появилась
ра ОО, пара ОР, пара РР
[2]
Бросание
трех
монет
Напишите программу, модел
рующую
многократное (
=100 раз
бросание
трех
монет с
помощью генератора случайных чисел rand().
одсчитайте,
сколько раз появил
сь
тройки ООО, ООР, ОРР и РРР
[2]
Бросание
игральной кости.
Напишите программу, м
делирующую бросание игральной кости с помощью г
енерат
ра случайных чисел rand(). Для каждого броска кости пр
грамма должна печатать в файл текст I, II, III, IV, V, или VI.
Смоделируйте с помощью этой программы бросание N раз и
подсчитайте, сколько раз появилась каждая сторона кости.
[2]
Бросание
неско
льких игральных костей.
Методом
многократного
=10000)
моделирования с помощью генер
тора случайных чисел
rand
найдите вероятность того, что
при бросании одновременно четырех костей сумма выпавших
ков будет равна 21.
+3]
Одновременное бросание 4 иг
ральных костей.
тодом многократного
=100000 испытаний)
моделирования
с помощью генератора случайных чисел на
дите вероятность
того, что при бросании одновременно четырех костей сумма
выпавших очков будет равна
, …, 24 о
ка. Результаты
редставьте в виде гистограммы
[2]
Напишите программу, моделирующую
многократный
бор кости домино
с помощью генератора случайных чисел
rand().
Всего имеется 28 костей, на которых написаны пары
чисел 00, 10, …, 65, 66
Для ка
дого броска кости программа
должна печатать в файл
соответствующий
текст. Смодел
руйте с помощью этой программы бросание N
=10000
раз и
��А.А.Быков

Программирование на языке С++
��35 Версия
мая 2008
подсчитайте, сколько раз появилась
заданная кость (напр
мер, 43)
[2]
Напишите программу, моделирующую
многократный
выбор двух костей домино из пол
ного набора
с помощью г
нератора случайных чисел rand().
Всего имеется 28 костей, на
которых написаны пары чисел 00, 10, …, 65, 66
Смоделиру
те с помощью этой программы бросание
пары костей
=10000
раз и подсчитайте, сколько раз появилась
пара, д
пускающа
я создание цепочки, например, 34 и 46
[2]
В барабане револьвера имеется
6 позиций, из кот
рых заняты
2. Смоделируйте многократную «игру в руле
ку», в ходе которой случайным образом выбирается позиция
барабана и затем производится нажатие на курок. М
етодом
случайного (по
науке, стохастического) моделирования на
дите вероятность того, что выстрел не произойдет после
=10
испыт
ний.
[1]
Известно, что сейф открывается при правильном вводе
буквенного кода. Задайте код и затем откройте сейф, испол
зуя ген
ератор случайных чисел. Сколько испытаний пр
шлось сд
лать, если длина кода была 7 букв?
+1]
Получите заданное количество N (например, 20)
чайных
целых чисел в диапазоне от 0 до M
например,
рат
те вн
имание на то, что среди этих чисел попадаются равные п
ры. Найдите их су
му.
main


endl

int
N = 20, M=20;
S=0, x[N];
int
n=0; nN; n++)
int
n=0
��А.А.Быков

Программирование на языке С++
��36 Версия
мая 2008


N
",








:
:


9 13 18 3 17 0 5 5 14 10 19 5 17










+2] Получите заданное количество N (например, 100)
случайных целых чисел в диапазоне от 0 до M
=
200
.

endl;


endl

int
N = 48, M=192;
count=0;
x[N];
y[3][N];
int
n=0; nN; n
int
n=0; nN; n++)


int
n=0; nN
1; n++)
int
k=n+1; kN; k++)



��А.А.Быков

Программирование на языке С++
��37 Версия
мая 2008




count

endl;
int
n=0; ncount; n++)


endl



endl








:
:



1) n1= 3 n2=38 n= 94
2) n1=10 n2=39 n= 87
3) n1=12 n2=27 n=131
4) n1=16 n2=31 n= 4
5) n1=19 n2=29 n= 50
6) n1=26 n2=33 n=165
7) n1=46 n2=47 n= 27
+2] Получите заданное количество N (н
апример, 20)
личных
случайных целых чисел в диапазоне от 0 до
Найдите их
сумму.


"


endl

��А.А.Быков

Программирование на языке С++
��38 Версия
мая 2008
int
N = 20, M=20;
count=0;
S=0, y, x[N];
b;
int
n=1; nN; n++)

true



int
m=0; mn; m++)









int
n=0; nN; n++)


N
",







:
:


9 11 10 17 19 0 6 4 3
+3]
Одновременное бросание 4 игральных костей.
Методом
многократного
=100000 испытаний)
моделирования с пом
��А.А.Быков

Программирование на языке С++
��39 Версия
мая 2008
щью генератора случайных чисел найдите вер
ятность того, что
при бросании одновременно четырех костей сум
ма выпавших
очков будет равна
, …, 24 очка. Результаты представьте в в
де гистограммы.













:
:


��А.А.Быков

Программирование на языке С++
��40 Версия
мая 2008
7.
Случайн
блуждание
+2]
Паук находится на прямой в точке с координатой
x=50. Каждую секунду он делает шаг влево или вправо с ра
ной вероятностью. Смоделируйте движение паука с помощью
генератора случайных чисел. Координату x(t) сохраните в о
номе
рном массиве. Напечатайте траекторию паука в файл
протокола в виде таблицы, которая содержит в строке с ном
ром t символ x в точке, где паук находился в этот момент
времени. В остальных позициях этой строки поставьте си
вол
вол о.
+2]
Паук находится н
а плоскости в точке с координ
тами
x=50 и y=50. Каждую секунду он делает шаг влево, вправо,
вниз или вверх с равной вероятностью. Смоделируйте движ
ние паука с помощью генератора случайных чисел. Коорд
наты x(t) и y(t) сохраните в одномерных массивах. Напе
чата
те траекторию паука в файл протокола в виде таблицы, кот
рая содержит в клеточке с координатами x и y символ
, если
паук там побывал, и символ
, если он там не п
бывал.
+2]
Паук находится на прямой в точке с
координатой x=50. К
ждую секунду он делает шаг влево или вправо с равной вероя
��А.А.Быков

Программирование на языке С++
��41 Версия
мая 2008
ностью. Смоделируйте движение паука с п
мощью генератора
случайных чисел. Координату x(t) сохраните в одномерном ма
сиве. Напечатайте траекторию паука в файл протокола в виде
блицы, которая содержит в строке с номером t символ x в то
ке, где паук находился в этот момент времени. В остальных п
зициях этой строки поставьте си
вол символ о.

endl;
int
N=61, M=15, J
buf[N+1];
r, x[M];
int
m=1; mM; m++)

int
j=0; jJ; j++)
1;
1]+r;

int
m=0; mM; m++)

int
n=0; nN; n++)

;

\
0'









:
:


��А.А.Быков

Программирование на языке С++
��42 Версия
мая 2008
+2]
Паук находится на плоскости в точке с коорд
натами x=50
и y=50. Каждую секунду он делает шаг влево, вправо, вниз или
вверх с равной вероятностью. Смодел
руйте движение паука с
помощью генератора случайных чисел. Координаты x(t) и y(t)
сохраните в одно
мерных массивах. Напечатайте траекторию
паука в файл протокола в виде таблицы, которая содержит в кл
точке с координатами x и y символ
, если паук там побывал, и
символ
, если он там не поб
вал.

endl;
int
N=61, K=1550, J=1;
buf[N+1];
xy[N][N];
x=N/2;
y=N/2;
int
m=0; mN; m++)
int
n=0; nN; n++)
int
k=1; kK; k++)

int
j=0; jJ; j++)
1;
int
j=0; jJ; j++)
1;

1)x=N
1;

1)y=N
1;
��А.А.Быков

Программирование на языке С++
��43 Версия
мая 2008

int
m=0; mN; m++)

int
n=0; nN; n++)

0: buf[n]=
break

1: buf[n]=
break

2: buf[n]=
break

3: buf[n]=
break



\
0'









:
:


��А.А.Быков

Программирование на языке С++
��44 Версия
мая 2008
8.
Случайные
процессы
[3]
Комплекс состоит из
одинаковых
объектов, ка
дый
из которых в начале находится в исправном состоянии. При
каждом включении сгорает некоторое количество объектов из
числа исправных. Число сгорающих объектов
случайное
число
в пределах от 1 до K. Сколько циклов включения пер
живет комплекс, если для обеспечения жизнедеятельности
достаточно иметь
исправных объектов, если
=100,
=10,
+3]
Комплекс состоит из
одинаковых
объектов, ка
дый
из которых в начале находится в
исправном состоянии. Пр
тивник производит одна за другой атаки, в ходе каждой из к
торых он запускает K боеголовок, причем цели
объекты н
шего комплекса
выбираются случайным образом. Проти
ник не знает, какие объекты уже поражены и может обстр
лять по
раженный объект еще раз. Сколько атак переживет
комплекс, если для обеспечения жизнедеятельности дост
точно иметь
исправных объектов, если
зультаты представьте в наглядной фо
ме.
��А.А.Быков

Программирование на языке С++
��45 Версия
мая 2008
+3]
Задача случайного обстрела без прогноза.
Комплекс
остоит из
одинаковых
объектов, каждый из которых в н
чале находится в исправном состоянии. Противник произв
дит одна за другой атаки, в ходе каждой из которых он запу
кает K боеголовок, причем цели
объекты нашего ко
плекса
выбираются случайным образо
м. После каждой атаки и
правные объекты перемещаются в другие позиции
, которые
противнику неизвестны
. Сколько атак переживет комплекс,
если для обеспечения жизнедеятельности достаточно иметь
исправных объектов, если
Результаты пре
ставьте
в н
глядной форме.
+3]
Комплекс состоит из
одинаковых
объектов, ка
дый из
которых в начале находится в исправном состо
нии. Противник
производит одна за другой атаки, в ходе каждой из которых он
запуск
ает K боеголовок, причем цели
объекты нашего ко
плекса
выбираются случайным обр
зом. Противник не знает,
какие объекты уже поражены и может обстрелять пораженный
объект еще раз. Сколько атак переживет комплекс, если для
обеспечения жизнеде
тельности до
статочно иметь
исправных
объектов,
причем
Результаты представьте в н
глядной форме.


endl;



" .

end
;


int
N

= 64,
=12,
J
=1;

buf[N+1];
count, k;
x[N], z[M];
int
n=0; nN; n++) x[n]=1;
true


��А.А.Быков

Программирование на языке С++
��46 Версия
мая 2008
int
m=1; mM; m++)

b=



int
j=0; jm; j++)








int
n=0; nN; n++)


bu

\
0'


int
m=0; mM; m++)

buf[z[m]] =

int
m=0; mM; m++)


(
int
n=0; nN; n++) cou

break












:
:


1 *1111
��А.А.Быков

Программирование на языке С++
��47 Версия
мая 2008
111 ..
* . . ....
9.
дномерные массивы
постоянного ра
мера
[2]
Создайте одномерный массив целого типа заданного
размера M. Задайте значения элементов с помощью генерат
ра случайных чисел. Распечатайте массив в фа
ле протокола.
+2]
Напишит
е функцию int sumi(int* arr, int N), которая
находит сумму элементов массива int arr заданного ра
мера N.
Создайте одномерный массив типа int
данного
размера
инициализируйте
его
набор
случайных
чисел
в диапаз
не 2…5
. Примените функцию sumi(…) для
анализа
массива.
ассив и результаты его анализа направьте в файл проток
ла.
+2]
Напишите функцию int sumi(int* arr, int N), которая
находит сумму элементов массива int arr заданного ра
мера N.
Используя текстовый редактор, сформируйте файл data.txt,
торый содержит число N и затем набор из N целых чисел,
разделяемых символом пробела. Создайте одномерный ма
сив типа int постоянного размера и введите в него набор N
чисел из файла data.txt. Примените функцию sumi(…) для
анализа введенного из файла массива
. Введенный массив и
результаты его анализа направьте в файл прот
кола.
��А.А.Быков

Программирование на языке С++
��48 Версия
мая 2008
[2]
Напишите функцию f(int& minval, int& maxval, int* arr,
int N), которая находит и возвращает наименьшее и наибол
шее значение из набора целых чисел arr заданного размера N.
Использ
уя текстовый редактор, сформируйте файл data.txt,
который содержит число N и набор целых чисел, разделяемых
символом пробела. Создайте одномерный массив типа int п
стоянного размера и введите в него набор N чисел из файла
data.txt. Примените функцию f(…) д
ля анализа введе
ного из
файла массива. Введенный массив и результаты его анализа
направьте в файл пр
токола.
[2]
Напишите функцию f(double* minval, double* maxval,
double* arr, int N), которая находит и возвращает на
меньшее
и наибольшее значение из набо
ра double чисел arr заданного
размера N. Используя текстовый реда
тор, сформируйте файл
data.txt, который содержит число N и набор double чисел, ра
деляемых символом пробела. Создайте одномерный массив
типа double постоянного размера и введите в него набор
N ч
сел из файла data.txt. Примените функцию f(…) для анализа
введенного из файла массива. Введенный массив и результ
ты его анализа направьте в файл проток
ла.
+2]
Напишите функцию int sum
(int* a
rr, int N), которая находит
сумму элементов массива int arr заданного размера N. Создайте
одномерный массив типа int
заданного
размера
инициализ
руйте
его
набор
случайных
чисел
в диапазоне 2…5
. Прим
ните функцию sumi(…) для анализа
массива.
ассив
и результ
ты его анализа направьте в файл протокола.


endl

int
N=16;
x[N];
��А.А.Быков

Программирование на языке С++
��49 Версия
мая 2008
int
n=0; nN; n++)
N
en
int
n=0; nN; n++)
s = sumi(x, N);
s endl endl;

+2]
Напишите функцию int sum
(int* arr, int N), которая нах
дит сум
му элементов массива int arr заданного размера N. И
пользуя текстовый редактор, сформируйте файл data.txt, кот
рый содержит число N и затем набор из N целых чисел, разд
ляемых си
волом пробела. Создайте одномерный массив типа
int постоя
ного размера и введ
ите в него набор N чисел из файла
data.txt. Примените фун
цию sumi(…) для анализа введенного из
файла массива. Введенный массив и результаты его анализа н
правьте в файл прот
кола.

"Ввод и вычисление суммы элементов ма

N;
x[128];
int
n=0; nN; n++)
N
endl;
int
n=0; nN; n++)
s = sumi(x, N);
s endl endl;







:
:


��А.А.Быков

Программирование на языке С++
��50 Версия
мая 2008


d
d
a
a
t
t
a
a
0
0
2
2
.
.
t
t
x
x
t
t






:
:




13 17 16 12 16 18 19 14 9 7 8 17 18 19 9 12 5 7
19 14 7 3 5 7 18 19 19 22
10.
Сортировка
одномерн
ого
масс
+2]
Напишите функцию sorti(int* arr, int N), которая со
тирует по возрастанию массив int arr заданного размера N.
Создайте одномерный массив типа int
, содержащий
набор
случа
йных
чисел. Примените функцию sorti(…) для сорт
ровки.
Исходный
массив и результат
сортировки
направьте в
файл проток
ла.
+3] Напишите функцию sorti
(int* arr, int N
PIFII
), кот
рая сортирует по возрастанию массив int arr заданного разм
ра N
с помощью
функции
сравнения
int
compare
int
int
Тип
PIFII (
Pointer to Integer Function with arg
ments Int and Int
определите с помощью оператора typedef
Создайте одноме
ный массив типа int
, содержащий
набор
случайных
чисел.
Примените функцию sorti
(…) для
сортировки.
Исходный
массив и результат
сортировки
направьте в файл прот
кола.
+3] Напишите функцию sort
(int* arr,
char
txt
[],
int N
FII
), которая
одновременно
сортирует по возрастанию
сив int arr заданного размера N
с помощью функции
сра
int
compare
int
int
и массив текстового типа. Это
может быть полезно, например, если нам нужно рассортир
��А.А.Быков

Программирование на языке С++
��51 Версия
мая 2008
вать список учебного потока, с
держащий номера (указанные
беспорядочно) и фамилии
Тип
PIFII
Pointer
Integer
Fun
tion
with
arguments
Int
and
Int
определите
помощью
опер
тора
typedef
езультат
сортировки
направьте в файл прот
кола.
+3] Напишите функцию sort
char
txt
[],
int N
PIFPCPC
), которая сортирует массив
char
arr
с помощью функции
сравнения
int
compare
char
char
Тип
PIF
PCPC
Poi
Integer
Function
with
arguments
Char*
and
Char*
опред
лите
помощью
оператора
typedef
езультат
сортировки
направьте в файл проток
ла.
[2]
Напишите функцию sortd(double* arr, int N), которая
сортирует по возрастанию массив doub
le arr заданного разм
ра N. Используя текстовый редактор, сформируйте файл
data.txt, который содержит число N и набор из N целых ч
сел,
разделяемых символом пробела. Создайте одномерный ма
сив типа double постоянного размера и введите в него н
бор N
чисел
из файла data.txt. Примените функцию sortd(…) для
сортировки введенного из файла массива. Введенный массив
и результаты его анализа направьте в файл проток
ла.
[2]
Напишите функцию int f(int* arr, int N), которая вычи
ляет и возвращает количество пар равн
ых друг другу элеме
тов массива int arr заданного размера N. Используя те
стовый
редактор, сформируйте файл data.txt, который соде
жит число
N и затем набор из N целых чисел, разделяемых символом
пробела. Создайте одномерный массив типа int постоянного
раз
мера и введите в него набор N чисел из файла data.txt.
Примените функцию f(…) для анализа введенного из файла
массива. Введенный массив и результаты его анализа н
правьте в файл проток
ла.
[2]
Напишите функцию int f(int m, int* arr, int N), которая
числ
яет и возвращает количество элементов массива int arr
заданного размера N
, равных
. Используя текстовый реда
тор, сформируйте файл data.txt, который содержит число N и
��А.А.Быков

Программирование на языке С++
��52 Версия
мая 2008
затем набор из N целых чисел, разделяемых символом проб
ла. Создайте одномерный массив
типа int постоянного разм
ра и введите в него набор N чисел из файла data.txt. Примен
те функцию f(…) для анализа введенного из файла массива.
Введенный массив и результаты его анализа н
правьте в файл
прот
кола.
+3] Напишите функцию sorti
(int* arr, int N
PIFII
), кот
рая
сортирует по возрастанию массив int arr заданного ра
мера N
помощью функции
сравнения
int
pare
int
int
Тип
PIFII
Pointer to Integer Function with arguments Int and Int
ределите
с помощью оператора typedef
Создайте одномерный массив т
па int
, содержащий
набор
чайных
чисел. Примените функцию
sorti
(…) для сортировки.
Исходный
массив и результат
сорт
ровки
направьте в файл пр
токола.
int fout(int* arr, int N, char* comment, int wd1, int


endl

N=32;

int
int
n=0; nN; n++) nn[n
nn
N
,
другому сортированный ма
, 2,

fsiia
int
n
1,
int
n
��А.А.Быков

Программирование на языке С++
��53 Версия
мая 2008

fsiib
int
n
1,
int
n
2){

n1a = n1%10;
n1b = ((n1
n1a)%100)/10;
n1c = (n1
n1a
10*n1b)/100;
n2a
= n2%10;
n2b = ((n2
n2a)%100)/10;
n2c = (n2
n2a
10*n2b)/100;
n2a+n2b+n2c)
n2b+n2c)
n2c

srt(
N, PIFII f){
tmp, count=0;
int
n=0; nN
1; n++)
int
m=n+1; mN; m++){
continue



int
* comment,
int
addl=

int
n=0; nN; n++){

myofs endl; addl=

��А.А.Быков

Программирование на языке С++
��54 Версия
мая 2008







:
:


+3] Напишите функцию sort
(int* arr,
char
txt
[],
int N
FII
),
которая
одновременно
сорт
рует по возрастанию массив int arr
заданного размера N
с помощью функции
сравнения
int
pare
int
int
и массив текстового типа. Это может быть п
лезн
о, например, если нам нужно рассортировать список уче
ного потока, содержащий н
мера (указанные беспорядочно) и
фам
лии
Тип
PIFII
Pointer
Integer
Function
with
arguments
Int
and
Int
опр
делите
помощью
оператора
typedef
езультат
сортировки
направ
ьте в файл прот
кола.
bool
PIFII
int
int
int fout(char* arr[], int N, char* comment, int wd1,
��А.А.Быков

Программирование на языке С++
��55 Версия
мая 2008
Витальевич"
int fout(int* ia, char* arr[], int N, char* comment,

"]="
arr[n];





ременная сортировка нескольких масс
endl;
int
N=16;
int
wd=3, n1, n2, n3;
int
buf[128];
int
n=0; nN; n++){
" "
" "
��А.А.Быков

Программирование на языке С++
��56 Версия
мая 2008
k = 1 + strlen(buf);
char

int
n=0; nN; n++) nn[n]=n;
int
n=0; n1000; n++){

int
n=0; nN; n++)







:
:


[ 3]=
��А.А.Быков

Программирование на языке С++
��57 Версия
мая 2008
[+3]
Напишите
функцию
sortxt
char
txt
, int
PIFPCPC
),
торая
сортирует
массив
char
arr
с помощью
функции
сравн
int
compare
char
char
2).
Тип
PIF
PCPC
Pointer
Int
ger
Function
with
arguments
Char*
and
Char*
определите
пом
щью
оператора
typedef
езультат
тировки
правьте в файл
проток
ла.
srt
char
arr
int
N
,
PIFPCPC
f
);

fscca(
char

fsccb(
char



"0757 Сортируем текстовый ма
endl

int
N
=64;

txt
N
];
buf
int
n
=0;
n

N
;
n
++){
k

= 1 +
n] =
char
int
j=0; jk; j++)
\
0'


, 12, 72);
"
, 3, 72);
другому сортированный ма
, 3,
int
n=0; nN; n++)

srt(
N, PIFCC f)

��А.А.Быков

Программирование на языке С++
��58 Версия
мая 2008
buf[128], count=0;
int
n=0; nN
1; n++)
(
int
m=n+1; mN; m++){
=
0
)
continue

char
char


fscca(

fsccb(
int
int







:
:


HKBHC IKEDB DFL NOCO FAOF INAAFMG OD BMFKNP P ODDIOJ OG
DPCPH
HCNF
PNA
GINA
BGIDNNG
GO
AG
CBCH
HENEJO
AHM
B
P
B
E

EJ
KC
AK

EP
OD

PE
OG
GO

AG
IJ
LA

DC

JPA
PNA
FPF

HBG

GINA
FAOF
DPCPH
GCBOLF
BMFKNP
EDBDKE
CDEFHB
ODDIOJ
CBBHIK
NEMLGOA

��А.А.Быков

Программирование на языке С++
��59 Версия
мая 2008
FINGBKF
BGIDNNG
CBCH
EDBDKE
FAOF
GINA
GO

GKDP
GCBOLF
HBG
HKBHC

HENEJO
HCNF
HPPI

HKLKG
IKEDB
ILAFK
INAAFMG
IJ
JPKDOM
JPA
JBOINFE

JEAD
KNAH
KMCN
KC
LA
MMFBFALG
NOCO
NEJCKGKE
NEMLGOA
11.
Динамические одномерные масс
вы
[2]
Используя текстовый редактор, сформируйте файл
data.txt, который содержит набор чисел типа double, разд
ляемых символом пробела. Договоримся о том, что, первое
число в этом файле натуральное и оно задает количество п
следующих чисел типа double. Проч
итайте это значение. Со
дайте одномерный массив переменной размерности типа
double нужного ра
мера с помощью оператора new. Введите в
этот массив набор чисел из файла data.txt. Напишите фун
цию, которая находит и возвращает наименьшее и наибол
шее значение
из набора чисел типа double заданного ра
мера.
Примените эту функцию для анализа введенного из файла
массива. Введенный массив и результаты его анализа н
правьте в файл прот
кола.
[3]
Используя текстовый редактор, сформируйте файл
data.txt, который содер
жит набор чисел типа int, разд
ляемых
символом пробела. Договоримся о том, что, первое число в
этом файле натуральное и оно задает количество последу
щих чисел типа int. Прочитайте это значение. Создайте одн
мерный массив переменной размерности типа int ну
жного
размера с помощью оператора new. Введите в него набор ч
сел из файла data.txt. Напишите функцию, которая формир
ет
гистограмму массива чисел типа int заданного размера. Пр
мените эту функцию для анализа введенного из файла масс
��А.А.Быков

Программирование на языке С++
��60 Версия
мая 2008
ва. Введенный массив и
результаты его анализа направьте в
файл прот
кола.
12.
Гистограмма одномерного массива
[2] На курсе N=20 студентов, пронумерованных номер
ми
от
до N. В начальный момент времени каждый из них имел
знания, которые можно выразить целым числом в пр
дела
х от
1 до
Сгенерируйте набор случайных чисел в указанном
диапазоне.
Сформируйте в файле протокола диаграмму, кот
рая отражает знания студентов в наглядной форме, напр
мер,
примерно так:
oooooo
ooooooooo
ooooooooooooooo
ooo
oooooooooooooooooooo
oooooooooo
ooooooooooooooo
oooooooooooo
(в этом примере 8 студентов и оценки от 2 до 20
, такая диагра
ма называется гистограммой
).
[2] На курсе N=25 студентов, пронумеро
ванных номер
ми
от
до N. В начальный момент времени каждый из них имел
знания, которые можно выразить целым числом в пр
делах от
1 до
Сгенерируйте набор случайных чисел в указанном
диапазоне.
Сформируйте в файле протокола диаграмму, кот
рая отражает
знания студентов в наглядной форме, напр
мер,
примерно так:


o o o oo o

ooo oo oo ooo o o

ooooooo ooooooo oooo

oooooooooooooooooooo

0

oooooooooooooooooooo

��А.А.Быков

Программирование на языке С++
��61 Версия
мая 2008
[2]
Напишите функцию int f(double dmin, doubl
e dmax, int*
arr, int N), которая вычисляет и возвращает количество эл
ментов массива double arr заданного размера N, значения к
торых находятся строго в пределах от dmin до dmax. Испол
зуя текстовый редактор, сформируйте файл data.txt, который
содержит чи
сло N и затем набор из N double чисел, разделя
мых символом пробела. Создайте одномерный массив типа
double постоянного размера и введите в него набор N чисел из
файла data.txt. Примените функцию f(…) для анализа введе
ного из файла массива. Введенный масс
ив и результаты его
анализа направьте в файл протокола.
[2]
Напишите функцию int f(int dmin, int dmax, int* arr, int
N), которая вычисляет и возвращает количество элементов
массива int arr заданного размера N, значения которых нах
дятся в пределах от dmin
до dmax включительно. Если нек
торый элемент массива arr был меньше dmin, сделайте его
равным dmin. Если некоторый элемент массива arr был бол
ше dmax, сделайте его равным dmax. Используя текстовый
редактор, сформируйте файл data.txt, который содержит чис
ло
N и затем набор из N целых чисел, разделяемых символом
пробела. Создайте одномерный массив типа int постоянного
размера и введите в него набор N чисел из файла data.txt.
Примените функцию f(…) для анализа введенного из файла
массива. Введенный массив и
результаты его анализа н
правьте в файл прот
кола.
+2]
Напишите программу, которая читает из файла
сколько
целых
чисел (каждое между 1 и 72). Для каждого просчитанного
числа ваша программа должна напечат
ать строку, содержащую
соответствующее число звездочек. Например, если ваша пр
грамма прочла число 7, она должна напечатать *******.
��А.А.Быков

Программирование на языке С++
��62 Версия
мая 2008

endl;
open
"
data
);
N;
i
nt
int
n=0; nN; n++)

endl

int
endl;
int
n=0; nN; n++)


"x["
int
m=0; mx[n]; m++)





d
d
a
a
t
t
a
a
0
0
4
4
.
.
t
t
x
x
t
t






:
:




37 23 12 8






:
:


��А.А.Быков

Программирование на языке С++
��63 Версия
мая 2008
+2]
Напишите программу, которая читает из файла
несколько
целых
чисел (каждое между 1 и 72). Для каждого просчита
ного
числа ваша программа должна напечатать
столбец
, содержащ
соответствующее число
символов *
. Н
апример, если ваша пр
грамма прочла числ
6 4 4 3 5 4 3 2 4 и т.д
она должна нап
чатать





.
.




endl

N;
const
int
M=24, K=128;
int
int
n=0; nN; n++)

1;

N

endl;
int
n=0; nN; n++)
y[M][K];
int
n=0; nN; n++)

int
m=0; mM; m++)
��А.А.Быков

Программирование на языке С++
��64 Версия
мая 2008
int
m=0; mx[n]; m++)
[
m
][
]= 1;


endl;

char
buf[K+1];
int
m=0; mM; m++)

int
n=0; nN; n++)


buf[n]=


\
0'





d
d
a
a
t
t
a
a
0
0
2
2
.
.
t
t
x
x
t
t






:
:





5 7 18 21 21 18 19 14 7 3 5 7 18 19 19 22






:
:


��А.А.Быков

Программирование на языке С++
��65 Версия
мая 2008
13.
Двумерные массивы
с постоянной ра
мерностью
2] Создайте двумерный массив целого типа заданного
размера, M
=12
строк и N
=24
столбцов. Задайте значения эл
тов с помощью генератора случайных чисел
в пределах от
2 до 5
. Распечатайте массив по строкам в файле прот
кола.
[2]
Создайте двумерный массив целого типа заданного
размера, M
=12
строк и N
=24
столбцов. Задайте значения эл
ментов с помощью генератора случайных чисел. Найдите
сумму всех элементов
массива
и среднее значение
величины
элемента массива
Распечатайте массив по строкам в файле
проток
ла.
[+2]
Создайте двумерный массив целого типа заданного
размера, M
=12
строк и N
=24
столбцов. Задайте значения эл
ментов с помощью генератора случайных чисел в пределах от
до
. Найдите сумму всех элементов в каждой строке. Ма
сив и результаты его анализа
распечатайте
в файл
токола.
[2]
Создайте двумерный массив целого типа зад
анного
размера, M строк и N столбцов. Задайте значения элементов с
помощью генератора случайных чисел в пределах от 0 до 99.
Найдите сумму всех элементов в каждом столбце. Массив и
результаты его анализа направьте в файл прот
кола.
2] Создайте двумерный
массив целого типа заданного
размера, M
=12
строк и N
=24
столбцов. Каждый элемент этого
массива может быть равен 0 или 1. Задайте значения элеме
��А.А.Быков

Программирование на языке С++
��66 Версия
мая 2008
тов с помощью генератора случайных чисел.
Найдите
) отр
зок строки этого массива, содержащий только 1, имеющий
наибольшую длину.
) отрезок столбца этого массива, соде
жащий только 1, имеющий наибольшую длину.
) Наибол
ший прямоугольный участок данного массива, содержащий
только 1.
Распечатайте массив по строкам в файле прот
кола.
[2]
На первом курсе M
=20
студент
ов. Каждый из них за год
получает N
=30
оценок в пределах от 2 до 5. Сформируйте ц
лый массив нужного размера. Задайте оценки с помощью г
нератора случайных чисел. Найдите среднюю оценку всего
курса за каждый день обучения. Массив и результаты его ан
лиза н
аправьте в файл проток
ла.
[2]
На первом курсе M студентов. Каждый из них за год
лучает N оценок в пределах от 2 до 5. Сформируйте целый
массив нужного размера. Задайте оценки с помощью генер
тора случайных чисел. Найдите среднюю оценку каждого
студента
за весь учебный год. Массив и результаты его анал
за направьте в файл проток
ла.
[2] На первом курсе M=40 студентов. Каждый из них за год
получает N=20 оценок в
пределах от 1 до 100
. Лучшим счит
ется студент, имеющий наибольшую сумму трех лучших оц
нок з
а весь курс. Сформируйте целый массив нужного разм
ра. Задайте оценки с помощью генератора случайных чисел.
дите лучшего и худшего студентов.
[2] На первом курсе M=25 студентов. Каждый из них за год
получает N=30 оценок в пределах от 1 до 100. Лучшим с
чит
ется студент, имеющий наибольшую сумму трех следующих
подряд оценок. Сформируйте целый массив нужного разм
ра.
Задайте оценки с помощью генератора случайных чисел.
Найдите лучшего и худшего студентов.
[2] На первом курсе M=30 студентов. Каждый из них
раз в
неделю получает оценку по программированию в пределах от
2 до 5, в году N=45 недель. Лучшим считается студент, кот
рый получил наибольшее количество оценок «4» и «5».
��А.А.Быков

Программирование на языке С++
��67 Версия
мая 2008
Сформируйте массив нужного размера. Задайте оценки с п
мощью генератора случайных ч
исел. Найдите лучшего ст
дента.
[2] На первом курсе M=30 студентов. Каждый из них раз в
неделю получает оценку по программированию в пределах от
2 до 5, в году N=
недель.
Получивший две двойки подряд
отчисляется. Сколько студентов закончили курс?
Сформи
те
двумерный
массив
целого типа
нужного размера. Задайте
оценки с помощью генератора случайных чисел.
Напечатайте
сив и результаты его анализа в файл в наглядной форме
[2] На первом курсе M=50 студентов. Каждый из них в п
недельник получает оценку
по программированию, а во вто
ник
оценку по физике в пределах от 2 до 5 каждая, всего в
году N=35 недель. Лучшим считается студент, который пол
чил наибольшее количество пар отличных оценок. Сформ
руйте два целых массива нужного размера. Задайте оценки
помощью генератора случайных чисел. Найдите лучшего и
худш
го студентов.
+2]
Одновременный анализ нескольких двумерных ма
сивов.
На первом курсе M=40 студентов. Каждый из них в
понедельник получает оценку по программированию, во
вторник
оценк
у по математике, в среду
по физике в пр
делах от 2 до 5 каждая, всего в году N=35 недель. Лучшим
считается студент, который наибольшее количество
недель
продержался без
троек
(т.е. получал не ниже «4»)
. Сформ
руйте три целых массива нужного размера. Зада
йте оценки с
помощью генератора случайных чисел. Найдите лучшего ст
дента.
[+2]
Создайте двумерный массив целого типа заданного размера,
M строк и N столбцов. Задайте значения элеме
тов с помощью
генерат
ора случайных чисел в пределах от
до
. Найдите су
��А.А.Быков

Программирование на языке С++
��68 Версия
мая 2008
му всех элементов в каждой строке. Массив и результаты его
анализа направьте в файл прот
кола.


endl

int
M=12, N=24;
xy[M][N], sum[M];
s,
r[M];
int
m=0; mM; m++)
int
n=0; nN; n++)
int
m=0; mM; m++)

=0;
int
n=0; nN; n++)
+=xy[m][n];
;

s
)/


i
nt
n=0; nN; n++)

int
n=0; nN; n++)
int
m=0; mM; m++)

int
n=0; nN;
" "








:
:





��А.А.Быков

Программирование на языке С++
��69 Версия
мая 2008
3.4 &#x/MCI; 1 ;&#x/MCI; 1 ;[ 1] 4 5 5 2 3 3 5 2 4 5 3 5 5 3 4 2 5 2 67 3.7 &#x/MCI; 2 ;&#x/MCI; 2 ;[ 2] 4 2 2 4 2 5 5 5 4 4 4 5 3 2 3 2 2 2 60 3.3 &#x/MCI; 3 ;&#x/MCI; 3 ;[ 3] 2 4 3 3 2 5 2 3 2 5 5 5 4 2 3 3 4 5 62 3.4 &#x/MCI; 4 ;&#x/MCI; 4 ;[ 4] 5 3 4 2 2 4 5 4 2 2 5 4 5 2 5 2 5 4 65 3.6 &#x/MCI; 5 ;&#x/MCI; 5 ;[ 5] 5 4 5 2 5 3 4 2 2 3 5 3 2 3 4 4 4 5 65 3.6 &#x/MCI; 6 ;&#x/MCI; 6 ;[ 6] 5 4 4 3 3 5 5 2 4 4 4 5 3 4 4 5 2 2 68 3.8 &#x/MCI; 7 ;&#x/MCI; 7 ;[ 7] 2 4 5 5 3 4 3 5 3 2 3 2 4 2 2 2 4 5 60 3.3 &#x/MCI; 8 ;&#x/MCI; 8 ;[ 8] 3 2 4 4 2 4 5 2 5 5 3 5 4 3 4 5 5 5 70 3.9 &#x/MCI; 9 ;&#x/MCI; 9 ;[ 9] 2 2 3 2 4 2 2 3 5 2 3 4 2 2 4 4 5 2 53 2.9 &#x/MCI; 10;&#x 000;&#x/MCI; 10;&#x 000;[10] 3 4 3 4 3 5 4 3 3 5 3 4 2 4 3 3 3 3 62 3.4 &#x/MCI; 11;&#x 000;&#x/MCI; 11;&#x 000;[11] 4 4 2 4 3 4 5 3 5 2 4 4 5 5 3 3 4 4 68 3.8 &#x/MCI; 12;&#x 000;&#x/MCI; 12;&#x 000;ООддннооввррееммеенннныыйй ааннааллиизз ннеессккооллььккиихх ддввууммееррнныыхх ммаассссииввоовв &#x/MCI; 13;&#x 000;&#x/MCI; 13;&#x 000;[+2]
Одновременный анализ нескольких двумерных ма
сивов.
На первом курсе M=40 студентов. Каж
дый из них в понедельник
получает оценку по программированию, во вто
ник
оценку по
математике, в среду
по физике в пределах от 2 до 5 каждая,
всего в году N=35 недель. Лучшим считае
ся студент, который
наибольшее количество недель продержался без трое
к (т.е. п
лучал не ниже «4»). Сформируйте три целых массива нужного
размера. Задайте оценки с помощью генератора случайных ч
сел. Найдите лучшего ст
дента.

int
M=20, N=13, K=3;
b;
x[M][N][K], y[M];
int
m=0; mM; m++)
int
n=0; nN; n++)
int
k=0; kK; k++)
int
m=0; mM; m++)

��А.А.Быков

Программирование на языке С++
��70 Версия
мая 2008
int
n=0; nN; n++)


int
k=0; kK; k++)



best=0;
int
m=0; mM; m++)

int
m=0; mM; m++)

int
n=0; nN; n++)

-
"
;

int
k=0; kK; k++)


endl;
int
m=0; mM; m++)

--

int
j=0; jy[m]; j++)


y[best]
";
"


endl

int
m
=0;
m

M
;
m
++)







:
:


��А.А.Быков

Программирование на языке С++
��71 Версия
мая 2008
��А.А.Быков

Программирование на языке С++
��72 Версия
мая 2008
14.
Двумерные массивы с переменной ра
мерностью
[+3]
Задайте значения M и N, например, 7 и 9. Создайте
одномерный массив указателей
int* размера M. Инициал
зируйте каждый указатель с помощью оператора new
так,
чтобы обесп
ечить возможность хранения массива из M строк
и N столбцов.
Задайте значения элементов полученного дв
мерного массива с помощью генератора случайных чисел.
Распечатайте массив в файле проток
ла.
[3]
Создайте двумерный массив переменной размерности, в
кото
ром имеется 20 стром и 10 столбцов. Задайте значения
элементов равными всем целым числам от 0 до 199. Предп
лагается, что номер строки равен числу десятков, а номер
столбца равен числу единиц в сохраняемом числе.
[3]
Создайте с помощью операторов new двум
ерный ма
сив, в первой строке которого 1
элемент, во второй строке 2
элемента, и так далее, вплоть до 10 строки, в которой 10 эл
ментов. Задайте их значения. Напечатайте массив в виде та
лицы треугольной формы.
+3]
Создайте с помощью операторов new двум
ерный ма
сив, в нулевой строке которого 1
элемент,
в первой строке 2
элемента,
во второй строке
элемент
, и так далее, вплоть
до 10 строки, в которой
элементов.
В нулевую строку зан
сите число 1, в первую числа 1, и 1, во вторую 1, 2, 1
, в тр
тью 1,
3, 3, 1, в четвертую 1, 4, 6, 4, 1, в пятую 1, 5, 10, 10, 5, 1,
и т.д.
Напечатайте массив в виде таблицы треугольной фо
мы.
[3]
Задано число число M
и набор
целых
чисел
,…,
M
, все положительны
Задан
набор из M числовых посл
довательностей, длина каждой из которых равна
. Созда
те указатель на int*, инициализируйте его с помощью опер
��А.А.Быков

Программирование на языке С++
��73 Версия
мая 2008
тора new.
Инициализируйте M указателей на int. С
охранит
указанные последовательности в по
лученном массиве. Для
задания всех указанных чисел используйте генератор случа
ных чисел.
[3]
Источник информации генерирует и посылает нам сл
(не больше M=100 штук),
состоящие из символов ста
дартного набора,
длина которых может быть любой в пред
лах
от 1 до K=20 символов. Вы должны принять и сохранить
эти слова в двумерном массиве. Длину каждого поступающ
го слова задайте с помощью генератора случайных чисел. П
следовательность символов, образующую очередное слово,
также задайте генератором случайных
сел.
[+3]
Задайте значения M и N, например, 7 и 9. Создайте одн
мерный массив указателей типа int* размера M. Инициализиру
те каждый указатель с помощью оператора new int[N]. З
дайте
значения
элементов полученного двумерного массива с пом
щью генератора случайных чисел. Распечатайте массив по стр
кам в файле пр
токола.

endl;
int
M
=16;
const
int
N
=64;

" Первый этап: с
оздадим одномерный ма
сив
endl;
aa
=
new
int
];
" Второй этап: инициализируем ка
дый из них
endl;
int
m=0; mM; m++) aa[m]=
int
int
m=0; mM; m++)
int
n=0; nN; n++)
M/2)*(m
M/2)+0.2*(n
N/2)+100.0);
��А.А.Быков

Программирование на языке С++
��74 Версия
мая 2008
" Массив aa можно вывести с помощью вложе
endl;
int
m=0; mM; m++){
int
n=0; nN; n++)

" Сначала разрушаем каждый из указыва
мых

endl

int
m=0; mM; m++){


" После этого разрушаем массив указат







:
:


Второй этап: инициализируем каждый из них указателей с
Массив aa можно вывести в файл с помощью вложенных операторов
��А.А.Быков

Программирование на языке С++
��75 Версия
мая 2008
[+3] Создайте с помощью операторов new двумерный ма
сив, в
нулевой строке которого 1 элемент, в первой строке 2 элемента,
во второй строке 3 элементов, и так далее, вплоть до 10 строки, в
которой 11 элементов. В нулевую строку занесите число 1, в
первую
числа 1, и 1, во вторую 1, 2, 1, в третью 1, 3, 3, 1, в че
вертую 1, 4, 6, 4, 1, в пятую 1, 5, 10, 10, 5, 1, и т.д. Напечатайте
массив в виде таблицы треугольной фо
мы.

x = new int*[M];

1][n]+x[m
1][n
1];











:
:




��А.А.Быков

Программирование на языке С++
��76 Версия
мая 2008
15.
Символьные массивы
+1]
Создайте массив типа
char
с помощью оператора new
Инициализируйте этот массив с помощью генератора случа
ных чисел
Найдите длину строки, находящейся в этом масс
[1]
Создайте массив типа
char
заданного размера,
напр
мер, char
128]. Инициализируйте этот массив с помощ
ью
текстовой константы, например,
омпьютер”
Найдите дл
ну строки, находящейся в этом массиве (к
личество байт).
[2]
Создайте массив типа
char
заданного размера,
напр
мер, char
128]. Инициализируйте этот массив с помощью
текстовой константы, например
, «К
омпьютер
Создайте вт
рой массив той же размерности, например, char
128]. И
пользуя оператор цикла, пер
несите во второй массив текст из
первого массива в обратном порядке, т.е. «р
тюьпмоК».
[2]
Возьмите произвольное слово, например, «
ток
». Со
дай
те символьный массив, содержащий буквы этого слова.
Переставьте буквы в случайном порядке с помощью генер
тора случайных чисел rand().
Позаботьтесь о том, чтобы
ген
ратор случайных чисел выдавал последовательность разных
чисел для новой позиции символа.
лученное новое слово
занесите в файл протокола. Проделайте это 10 раз и проч
тайте файл протокола. Найдите осмысленные сл
ва.
[+3]
Возьмите любое слово
, например, «корова»
. Испол
зуя генератор случайных чисел, переставьте его буквы в сл
чайном порядке. Де
лайте это до тех пор, пока полученное
слово не совпадет с начальным словом, проч
танным справа
��А.А.Быков

Программирование на языке С++
��77 Версия
мая 2008
налево. Сколько пришлось ждать, если в исходном слове б
ло
букв?
Есть ли разница между словами, состоящими из
разных букв, типа «огурец» и словами, в которых д
ве буквы
совп
дают?
+3] Статический массив указателей на строки
Пре
положим, что
из некоторого источника (например, от генер
тора случайных чисел) поступают одно за другим
слов ра
ной длины.
Создайте массив
указателей
char
txt
M] с пом
щью операторов
new
обеспечьте сохранение входного пот
ка слов.
+3] &#x/MCI; 17;&#x 000;&#x/MCI; 17;&#x 000;2&#x/MCI; 18;&#x 000;&#x/MCI; 18;&#x 000;Динамический массив указателей на строки
Пре
положим, что
из некоторого источника (например, от генер
тора случайных чисел) поступают одно за другим
слов ра
ной длины.
Создайте массив
указателей
char
txt
с помощью
операторов new
обеспечьте сохранение входного потока
слов.
+3] Предположим, что
из некоторого источника (например, от
генератора случайных чисел) поступают одно за другим слова
разн
ой длины.
Создайте массив
указателей
типа
char
* []
с пом
щью операторов new
обеспечьте сохранение входного потока
слов.
Распечатайте массив в файле прот
кола.


endl

int
M=16;

len[M];
int
m=0; mM; m++)

От предыдущей задачи отличается типом
создаваемого массива указателей,
динамический вместо статического.
��А.А.Быков

Программирование на языке С++
��78 Версия
мая 2008
N=rand()%32+16;
char
(
int
n=0; nN; n++)
\
0'


int
m=0; mM; m++)
int
m=0; mM; m++)







:
:


+3] Предположим, что
из некоторого источника (например, от
генератора случайных чисел) поступают
одно за другим
слов
разной длины.
Создайте массив
указателей
типа
char
txt
с п
мощью операторов new
обеспечьте сохранение входного пот
ка слов.

��А.А.Быков

Программирование на языке С++
��79 Версия
мая 2008
"Конструируем динамический массив для хран

endl

M=6;
char
int
int
m=0; mM; m++)

N=rand()%32+16;
char
(
int
n=0; nN; n++)
-
64+rand()%63);
\
0'


int
m=0; mM; m++)
txt[m] endl;
int
m=0; mM; m++)







:
:


[+3
Возьмите любое слово
, например, «корова»
. Используя г
нератор случайных чисел, пер
ставьте его буквы в случайном
порядке. Делайте это до тех пор, пока полученное слово не со
падет с начальным словом, прочитанным справа налево. Скол
ко
пришлось ждать, есл
и в исходном слове было
букв?
Есть ли
разница между словами, состоящими из разных букв, типа «ог
рец» и словами, в которых две буквы совп
дают?
��А.А.Быков

Программирование на языке С++
��80 Версия
мая 2008
Решим задачу для случая, когда работа завершается при повт
рении слова в обычном п
рядке.


int
M = 64;
s[M], t[M];
z[M];
"
);
k, count=0, N=strlen(s);
true


int
m=1; mN; m++)

b=



int
j=0; jm; j++)








int
n=0; nN; n++)
\
0'

int
k=0; kN; k++) myofs z[k];
t;


��А.А.Быков

Программирование на языке С++
��81 Версия
мая 2008








:
:


16.
Форматированный ввод и в
вод
+2] Создайте файл data.txt, соде
ржащий значения некот
рых в
личин, снабженных метками, например,
длина 137 высота 76 глубина 45 температура 36
Предполагается, что метки известны составителю к
, однако
порядок следования меток во входном файле произволен
. Пр
читайте значения из фай
с помощью меток, к
торые требуется
распознать. В
ыдайте
значения
в файл протокола, снабдив соо
ветствующими комментариями. Смоделируйте возможности
ошибок, 1) появление значения с неи
вестной системе меткой,
например, склонение 452. 2) отсу
ствие значени
я величины с
известной меткой, например, система ожидает ввода чего
то т
па
влажность 75
, но из
за искажения входного файла там н
писано нечто другое, например,
вра
ность 75
[3]
В рамках условий предыдущей задачи создайте код,
который распознает мет
ку даже в том случае, если один из
символов введен ош
бочно.
Доб
авлена в версии 2.
��А.А.Быков

Программирование на языке С++
��82 Версия
мая 2008
3]
Некоторый исполнительный механизм включается в
том случае, если введен верный код, который состоит из п
следовательности символов латинского алфавита з
данной
длины, например, БВГДЖЗ.
Кажды
й символ передается по
радиосвязи с помощью кодового слова, например,
Баня Ви
ка
Галка Домино Железо Замок. Каждая буква алфавита кодир
ется одним словом. Во время приема и записи кодовых слов
может быть допущена ошибка. Создайте код, обеспечива
щий провер
ку кода и включение исполнительного мех
низма
в том случае, если при приеме не более чем одного кодового
слова допущена оши
ка не белее чем в одной букве.
Прочитайте из файла последовательность символов {a…z},
не разделенных пробелами. Результат сохраните
в массиве
char buf[128] и направьте в файл протокола. Подсчитайте к
личество появлений каждой бу
вы.
Прочитайте из файла фразу, состоящую из нескольких
слов, разделенных пробелами. Результат направьте в файл
проток
ла.
+3]
Вам дан файл book.txt размера
порядка 250 kb, соде
жащий текст учебника программирования на языке C++. Сл
ва в файле разделены пробелами. Создайте текстовый массив
соответствующей структуры, прочитайте заданный текст из
файла и сохраните в массиве каждое прочитанное слово. В
дайте про
читанный текст в файл протокола, пр
чем в каждой
строке файла протокола печатайте не более 72 символов,
включая пробел.
В рамках условия предыдущей задачи сформатируйте в
водимый в файл протокола текст так, чтобы длина каждой
строки была равна ровно 72 си
мвола. При необходимости д
бавляйте между выводимыми словами более одного пр
бела.
В рамках условия предыдущей задачи подсчитайте колич
ство каждого из заданных слов
образцов в прочитанном фа
Добавлена в версии 2.
��А.А.Быков

Программирование на языке С++
��83 Версия
мая 2008
ле. Например, найдите количество слов “array”, “operator”,
“fun
ction” и т.д.
В рамках условия предыдущей задачи составьте сл
варь
данного Вам текста. Создайте текстовый массив
словарь
нужной структуры, в котором сохраняйте каждое новое сл
во
и массив целого типа для накопления числа повторений. При
чтении из файла кн
иги каждого нового слова проверяйте,
имеется ли оно в словаре. Если имеется, добавьте единицу в
соответствующий счетчик. Если не имеется, добавьте это сл
во в словарь. Подсчитайте, сколько раз появилось в тексте
каждое занесенное в сл
варь слово.
В рамках
условия предыдущей задачи подсчитайте колич
ство
появлений каждой
букв
латинского (русского) алфав
та в заданном Вам тексте.
Найдите среднюю длину слова
+2]
Создайте файл
data
txt
, содержащий значения некот
рых
еличин, снабженных метками, н
пример,
длина 137 высота 76 глубина 45 температ
ра 36 конец
Предполагается, что метки известны составителю кода. Слово
конец означает завершение ввода.
Прочитайте
значения из файла
и выдайте их в файл протокола, снабди
в соответствующими
комментариями
Смоделируйте возможности ошибок, 1) появл
ние значения с неизвестной системе меткой, например, склон
ние 452. 2) отсутствие значения величины с известной меткой,
пример, система ожидает ввода чего
то типа влажность 75,
но из
за искажения входного файла там написано нечто другое,
например, вра
ность 75.

endl;
"Упражнение +++13.1237. Ввод данных с ме
endl;
��А.А.Быков

Программирование на языке С++
��84 Версия
мая 2008
buf
128];
t, x[128], y[128], count=0;
true


"
)==0)
break

break

�� t;
int
m=0; m6; m++)






close

"
"


count

"


endl

int
n=0; ncount; n++)
"

x[n] endl;



d
d
a
a
t
t
a
a
0
0
6
6
.
.
t
t
x
x
t
t






:
:










:
:


Контрольная выдача введенного текста, распознано 4
��А.А.Быков

Программирование на языке С++
��85 Версия
мая 2008
+3]
Вам дан файл book.txt размера порядка 250 kb, соде
жащий
текст учебника программиров
ния на языке C++. Слова в файле
разделены пробелами. Создайте текстовый массив соответс
вующей структуры, прочитайте заданный текст из файла и с
храните в м
ассиве каждое прочитанное слово. Выдайте проч
танный текст в файл протокола, пр
чем в каждой строке файла
протокола печатайте не более 72 символов, включая пр
бел.

"Чтение, анализ и форматирование док
int
L=5;
sample[L][100];
sc[L];

int
n=0; nL; n++) sc[n]=0;
int
n=0; nL; n++)
int
n=0; nL; n++)
n
sample[n]
int
N=100000;
int
n=0; nN; n++)
buf[10000];
wordcounter=0, k;
true
"
)==0)
break

int
n=0; nL; n++){

break

char
��А.А.Быков

Программирование на языке С++
��86 Версия
мая 2008
break


" Прочитали файл data09
.txt и составили сл
endl;
endl;
int
n
=0;
n

L
;
n
++){
" sample["
n
"] "


" Форматированный текст (заи
мствован у Сра
endl;
charcounter=0;
int
n=0; nwordcounter; n++){



int
n=0; nN; n++)



d
d
a
a
t
t
a
a
0
0
8
8
.
.
t
t
x
x
t
t






:
:






d
d
a
a
t
t
a
a
0
0
9
9
.
.
t
t
x
x
t
t






:
:










:
:


��А.А.Быков

Программирование на языке С++
��87 Версия
мая 2008
17.
Анализ данных
[1]
Напишите функцию int f(int m) которая
принимает
оценку
по 100
бальной шкале
и возвращает
оценку по 5
бальной шкале, например, 5
, если
100,
, е
ли
, если
, если
, если
меньше 60.
[2]
Сгенерируйте N случайных чисел в диапазоне 1…100,
найд
те их
среднее
значение
. Получите оценки по 5
бальной
шкале и найдите их сре
нее.
��А.А.Быков

Программирование на языке С++
��88 Версия
мая 2008
[3]
Напишите программу, которая помож
ет слушат
лям
начальной школы изучить умножение. Используйте rand() для
выработки двух положительных целых чисел в диапазоне
1…5. Программа должна печатать вопрос типа Сколько б
дет
2*3? Затем учащийся печатает ответ. Ваша программа пров
ряет этот ответ. Е
сли он правильный, напечатайте «Очень х
рошо!» и затем задайте следующий вопрос на умножение. Е
ли ответ неправильный, напечатайте «Нет. Повторите, пож
луйста, снова.» и затем задавайте тот же самый вопрос п
вторно до получения правильного ответа. Ответы и
спытуем
го сгенерируйте с помощью генератора случайных чисел
rand(). Все результаты н
правьте в файл.
[3]
Напишите программу, которая поможет слушат
лям
начальной школы изучить сложение, умножение, вычитание.
Используйте rand() для выработки двух положите
льных ц
лых чисел в диапазоне 1…5. Используйте rand() для вбора о
ной из трех упомянутых операций. Программа должна печ
тать вопрос типа Сколько будет 2*3? Затем учащийся печат
ет ответ. Ваша программа проверяет этот ответ. Если он пр
вильный, напечатайте
«Очень хорошо!» и затем задайте сл
дующий вопрос на умножение. Если ответ неправильный, н
печатайте «Нет. Повторите, пожалуйста, снова.» и затем зад
вайте тот же самый вопрос повторно до получения правил
ного ответа. Ответы испытуемого сгенерируйте с помощ
ью
генератора случайных чисел rand(). Все результаты н
правьте
в файл.
[3]
Модифицируйте предыдущую программу так, чтобы
для каждого правильного или неправильного ответов печат
лись разнообразные комментарии типа: Отклики на правил
ные ответы «Очень хорош
о!», «Отлично!», «Чудесная раб
та!», «Браво», «Cool», «Продолжайте работать так же хор
шо!». Отклики на непр
вильные ответы: «Нет. Попытайтесь,
пожалуйста, снова.», «Неверно. Попытайтесь еще раэ.», «Не
опускайте руки!», «Нет. Продолжайте ваши попытки.». И
пользуя генератор случайных чисел, выбирайте подходящую
��А.А.Быков

Программирование на языке С++
��89 Версия
мая 2008
реплику для каждого ответа. Используйте структуру switch
для представления о
клика.
+3]
Контрольно
обучающая система.
Напишите
рактивный
учебник биологии.
Он должен обеспечивать выд
чу в случайн
ом порядке пяти вопросов типа Что такое к
рица
(крокодил, береза, муравей, щука)? и принимать ответ типа
курица это 1) рыба, 2) насекомое, 3) птица, 4) земново
ное, 5)
растение. После опроса поставьте испытуемому оце
ку.
[3]
Напишите программу, которая иг
рает в игру «Уг
дай
число» следующим образом. Ваша программа выбирает сл
чайное число, которое должно быть отгадано, в ди
пазоне от
1 до 100. Затем программа печатает: «Мое число между 1 и
100. Пожалуйста, напечатайте вашу первую догадку.» Затем
игрок печа
тает свою первую догадку. Программа отвечает
одним из следующих вариантов: 1) «Отлично! Вы отгадали
число!. 2) «Слишком мало. Попытайтесь снова.» 3) «Сли
ком
много. Попытайтесь снова.»
рограмма должна работать до
получения верного ответа. Ответы испытуем
ого генер
руйте
с помощью фун
ции rand().
[3]
Напишите интерпретатор
. Предположим, что в файле
data.txt находится последовательность слов и чисел типа
плюс 4 минус 2 умножить
3 разделить 4 возвести 2 и т.д. И
терпретатор должен прочитать и распознать
словесные к
манды и выполнить необходимые операции.
Результаты в
прот
кол.
[3]
Напишите
автопилот. Предположим, что в файле
data.txt находится последовательность слов и чисел типа
рость 3 вперед
направо 45 вперед 7 направо 90 скорость 5
пушка нале
во 30 скорость 7 ракета 3 и т.д
. Интерпретатор
должен прочитать и распознать словесные команды и выпо
нить необходимые операции.
Результ
ты в протокол.
��А.А.Быков

Программирование на языке С++
��90 Версия
мая 2008
+3]
Напишите
интерактивный
учебник биологии.
Он до
жен
обеспечи
вать выдачу в случайном порядке пяти в
просов типа
Что такое курица (крокодил, бер
за, муравей, щука)?
и пр
нимать ответ типа
курица это 1) рыба, 2) насекомое, 3) птица, 4) земноводное, 5)
раст
ние.
После опроса поставьте испытуемому оце
ку.

"Обучающая программа. Изучаем би

"mammal (млекопитающее)"
"bird (пт
"cow (корова)"
"chicken (курица)"
num=5;
int
m=0; mnum; m++)

n=0, mb=0, k=1;
endl endl;
(
int
n=0; n4; n++)
a[n] endl;

1==mb)


Попробуем еще раз?)"



b[mb]

a[mb]

endl;
��А.А.Быков

Программирование на языке С++
��91 Версия
мая 2008









:
:


18.
Текстовые зад
[2]
Анализ последовательности данных из файла.
Торг
вый дом продает пять различных продуктов, розничная цена
которых: продукт 1
$2.98, продукт 2
$4.50, продукт 3
$9.98, продукт 4
$4.49 и продукт 5
$6.87. Напишите
програ
му, которая читает из файла последовательность пар
чисел, озн
чающих номер п
родукта и количество, проданное
за день. Ваша программа должна использовать оператор
switch, который помогает определить розничную цену кажд
го продукта. Программа должна рассчитать и вывести на э
ран общую розничную стоимость всех проданных за неделю
уктов.
��А.А.Быков

Программирование на языке С++
��92 Версия
мая 2008
+2] Анализ управляющей последовательности
из
ла.
Вероятность поразить цель ракетой типа 1 равна 67%, р
кетой
типа 2 равна 53% и ракетой типа 3 равна 38%. Напишите пр
грамму, которая читает из файла последовательность пяти ч
сел, каждое из котор
ых может быть равно 1, 2 или 3 и озн
чающих тип выпущенной ракеты в очереди из пяти ракет.
Ваша программа должна использовать оператор switch, кот
рый помогает определить тип очередной ракеты. Программа
должна рассчитать и вывести в файл протокола вероятно
сть
поражения цели данной очер
дью.
+2] &#x/MCI; 8 ;&#x/MCI; 8 ;5&#x/MCI; 9 ;&#x/MCI; 9 ;Задача массового обслуживания
Станция технич
ского обслуживания имеет M=
рабочих позиций, на ка
дой
из которых может быть размещен один обслуживаемый об
ект, обслуживание которого занимает ровно 1 час. На вход
поступает поток неисправных объектов. Количество объе
тов, поступающих за 1 час, является случайной величиной в
пределах от
1=4 до
2=1
включительно.
В начале первого
часа все позиции были свободны. Моделируйте работу ста
ции на протяжении N=10
0 часов
Найдите среднее знач
ние времени ожидания и среднюю длину очереди.
Результаты
пре
ставьте в наглядной форме.
+2]
Вероятность поразить цель ракетой типа 1 равна 67%, рак
той типа 2 равна 53% и раке
той типа 3 равна 38%. Напишите
программу, которая читает из файла п
следовательность пяти
чисел, каждое из которых может быть равно 1, 2 или 3 и озн
чающих тип выпущенной рак
ты в очереди из пяти ракет. Ваша
программа должна использовать оператор switch, к
оторый пом
гает определить тип очередной ракеты. Программа должна ра
считать и вывести в файл протокола вероятность поражения ц
ли данной очер
дью.
Добавлена в версии 2.
��А.А.Быков

Программирование на языке С++
��93 Версия
мая 2008


" 7.9752. Моделирован
ие последовател
endl;
buf[128];
type
,
"
,


,
"
};
t, p, x[128], y[128], z[128], count=0, full=0;

Q=100;
true


"
)==0)
break

break

int
m=0; m6; m++)






"

full
" ,
"


count


endl

Q
endl;
int
n=0; nfull; n++)

(
int
j=0; jx[n]; j++)
��А.А.Быков

Программирование на языке С++
��94 Версия
мая 2008
double
"

type
z
[
n
]]


x
[
n
]


Q


"Вероятность поражения цели данной с
рией


100.0
Q
endl endl;



d
d
a
a
t
t
a
a
0
0
7
7
.
.
t
t
x
x
t
t






:
:




буратино 17 2 кирпич 28 3 тополь 55 1 мышка 13 7 бегемот 3 8






:
:


Вероятность поражения цели данной серией равна 90.9314
+2] Станция технического обслуживания имеет M=10 рабочих
позиций, на каждой из которых может бы
ть размещен один о
служиваемый объект, обслуживание которого занимает ровно 1
час. На вход поступает поток неисправных объектов. Количес
во объектов, поступающих за 1 час, является случайной велич
ной в пределах от
1=4 до
2=1
включительно.
В начале пе
ого часа все позиции были свободны. Моделируйте работу
станции на протяжении N=100000 часов.
Найдите среднее зн
чение времени ожидания и среднюю длину очереди.
Результаты
пре
ставьте в наглядной форме.
��А.А.Быков

Программирование на языке С++
��95 Версия
мая 2008

x

=
new
int
N
];

1] + N1+rand()%(N2
N1+1);

M);

1))




=M;
x
[
n
]0)
[
n
]=0;

"

ble(s)/double(count) endl endl;







:
:


��А.А.Быков

Программирование на языке С++
��96 Версия
мая 2008
Среднее время ожидания=10.047
19.
Пример экзаменационного билета
+1]
Напишите
функцию
, которая находит на
меньшее число из
заданного наб
ора трех целых чисел. Используйте условный оп
ратор if.










:
:




��А.А.Быков

Программирование на языке С++
��97 Версия
мая 2008
[+2]
Одновременный анализ нескольких двумерных ма
сивов.
На первом курсе M=40 студентов. Каждый из них в понедельник
полу
чает оценку по программированию, во вто
ник
оценку по
математике, в среду
по физике в пределах от 2 до 5 каждая,
всего в году N=35 недель. Лучшим считае
ся студент, который
наибольшее количество недель продержался без троек (т.е. п
лучал не ниже «4»).
Сформируйте три целых массива нужного
размера. Задайте оценки с помощью генератора случайных ч
сел. Найдите лучшего ст
дента.

int
M=20, N=13, K=3;
b;
x[M][N][K], y[M];
int
m=0; mM; m++)
int
n=0; nN; n++)
int
k=0; kK; k++)
int
m=0; mM; m++)

int
n=0


int
k=0; kK; k++)



best=0;
int
m=0; mM; m++)
��А.А.Быков

Программирование на языке С++
��98 Версия
мая 2008
int
m=0; mM; m++)

int
n=0; nN; n++)

-
"
;

int
k=0; kK; k++)


endl;
int
m=0; mM; m++)

--

int
j=0; jy[m]; j++)


y[best]
";
"


endl

int
m
=0;
m

M
;
m
++)







:
:


��А.А.Быков

Программирование на языке С++
��99 Версия
мая 2008
+3]
Комплекс состоит из
одинаковых
объектов, ка
дый из
которых в начале находится в исправном состо
нии. Противник
производит одна за другой атаки, в ходе каждой из которых он
запускает K боеголовок, причем цели
объекты нашего
плекса
выбираются случайным обр
зом. Противник не знает,
какие объекты уже поражены и может обстрелять пораженный
объект еще раз. Сколько атак переживет комплекс, если для
обеспечения жизнеде
тельности достаточно иметь
исправных
��А.А.Быков

Программирование на языке С++
��100 Версия
мая 2008
объектов, причем
Результаты представьте в н
глядной форме.


endl;


" .

endl

int
N

= 64,
=12,
J
=1;

buf[
count, k;
x[N], z[M];
int
n=0; nN; n++) x[n]=1;
true


int
m=1; mM; m++)

b=



int
j=0; jm; j++)









int
n=0; nN; n++)


buf[n] =

\
0'


int
m=0; mM; m++)

��А.А.Быков

Программирование на языке С++
��101 Версия
мая 2008
buf[z[m]] =

int
m=0; mM; m++)


(
int
n=0; nN; n++) count+=x[n];

break









:
:



. . ....

Приложенные файлы

  • pdf 3534692
    Размер файла: 625 kB Загрузок: 14

Добавить комментарий