- •ГЛАВА 7. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •1. ПОНЯТИЕ ОБ АЛГОРИТМЕ
- •2. ОСНОВНЫЕ СТРУКТУРЫ
- •2.1. Структура «следование»
- •2.2. Структура «развилка»
- •2.3. Структура «цикл»
- •3. ОСНОВНЫЕ ТИПЫ АЛГОРИТМОВ
- •3.1. Линейный алгоритм
- •3.2. Разветвленный алгоритм
- •3.3. Циклический алгоритм
- •Практические задания
- •1. Алгоритмы линейной структуры
- •2. Алгоритмы разветвляющейся структуры
- •3. Алгоритмы циклической структуры (цикл «ПОКА»)
- •4. Алгоритмы циклической структуры (цикл «ДО»)
- •ГЛАВА 8. ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ VISUAL С++ 2005
- •ВВЕДЕНИЕ
- •1. РАЗРАБОТКА ПРОГРАММЫ
- •2. ПЕРЕМЕННЫЕ
- •3. ЛИНЕЙНАЯ ПРОГРАММА
- •3.1. Оформление линейной программы
- •3.2. Программирование в стандартизованной среде CLR
- •Практические задания
- •Русская система мер
- •4. ПРОГРАММА С ВЕТВЛЕНИЕМ
- •Практические задания
- •5. ЦИКЛ С ПАРАМЕТРОМ
- •6. ЦИКЛ «ПОКА»
- •Практические задания
- •7. ОДНОМЕРНЫЕ МАССИВЫ
- •7.1. Понятие об одномерном массиве
- •7.2. Сортировка в одномерном массиве
- •Практические задания
- •8. ДВУМЕРНЫЕ МАССИВЫ
- •8.1. Понятие о двумерном массиве
- •8.2. Датчик случайных чисел
- •Практические задания
- •9. ФУНКЦИИ
- •9.1. Понятие о пользовательских функциях
- •Рис. 8.20. Пятиугольник со сторонами a, b, c, d, f и диагоналями h,g.
- •9.2. Рекурсия
- •9.3. Вызов функции из функции
- •9.4. Функция типа void и глобальные переменные
- •9.5. Передача в функцию имени функции
- •Практические задания
- •10. СОБСТВЕННАЯ БИБЛИОТЕКА ПРОГРАММИСТА
- •10.1. Перегрузка функций
- •Рис. 8.25. Результат работы программы примера
- •11. ПЕРЕЧИСЛИМЫЙ ТИП
- •11.1. Понятие о перечислимом типе
- •11.2. Множественный выбор
- •12. УКАЗАТЕЛИ
- •12.1. Понятие об указателях
- •12.2. Указатели и функции
- •12.3. Указатели и динамические массивы
- •12.4. Указатели и перегрузка операций
- •13. ОБРАБОТКА СИМВОЛЬНЫХ СТРОК
- •13.1. Символьные переменные
- •13.2. Символьные строки (как массивы символов)
- •13.3. Обработка массивов строк
- •Практические задания
- •14. СТРУКТУРЫ
- •Практические задания
- •15. КЛАССЫ
- •15.1. Понятие класса
- •15.2. Открытые и закрытые члены класса
- •15.3. Конструкторы и деструкторы
- •Практические задания
- •Раздел А
- •Раздел Б
- •16. ФАЙЛЫ
- •16.1. Работа с текстовыми файлами
- •16.2. Работа со структурами в файлах
- •16.3. Работа с классами в файлах
- •Практические задания
- •Раздел А
- •Раздел Б
- •ПРИЛОЖЕНИЯ
- •Приложение 1. Список библиотечных функций
- •Математические функции
- •Строковые функции (для работы с символьными массивами)
- •Приложение 2. План лабораторных работ
- •ГЛАВА 9. ПРИЛОЖЕНИЯ WINDOWS FORMS
- •ВВЕДЕНИЕ
- •1. РАЗРАБОТКА ПРИЛОЖЕНИЯ
- •3. ДИНАМИЧЕСКИЕ ССЫЛКИ НА ОБЪЕКТЫ
- •3.1 Понятие о динамических ссылках.
- •3.2. Программа «Калькулятор»
- •4. ИСПОЛЬЗОВАНИЕ ТАЙМЕРА. КОМПОНЕНТ CHECKBOX
- •4.1 Таймер
- •4.2. Компонент CheckBox
- •5. СПИСКИ ВЫБОРА И ПОЛОСЫ ПРОКРУТКИ. ГРАФИЧЕСКИЕ КОМПОНЕНТЫ В C++Builder
- •5.1. Список выбора ListBox
- •5.2. Полосы прокрутки
- •5.3. Графика
- •6. РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ.
- •6.1. Чтение и запись текстового файла
- •ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
- •Раздел 1. Кнопки, метки и окна редактирования
- •Раздел 2. Радиокнопки
- •Раздел 3. Полосы прокрутки
- •Раздел 4. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание
42
ния (например, 1 – последовательное, 2 – параллельное соединение).
4.19. Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки более 1000 руб. Извне вводится сумма покупки.
4.20. Написать программу вычисления стоимости разговора по телефону с учетом 20% скидки, предоставляемой по субботам и воскресеньям. Извне вводится длительность разговора (в целых минутах) и день недели цифрой (1 – понедельник, … 7 – воскресенье).
4.21. Написать программу, которая вычисляет оптимальный вес для пользователя, сравнивает его с реальным и выдает рекомендацию о необходимости поправится или похудеть. Оптимальный вес вычисляется по формуле: рост (см) – 100. Извне вводятся рост (в см) и вес (в кг).
4.22. Написать программу, которая запрашивает у пользователя номер месяца и затем выводит соответствующее название времени года. Если вводится недопустимое число (<1 или >12), должно появиться сообщение «ошибка ввода».
4.23. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: «рабочий день», «суббота» или «воскресенье».
4.24. Написать программу, которая запрашивает у пользователя номер дня недели и выводит название дня недели.
4.25. Написать программу, которая переводит время из часов и минут в минуты. Извне вводятся часы (целое положительное) и минуты (целое положительное и <=59). Программа должна проверять правильность введенных данных.
5. ЦИКЛ С ПАРАМЕТРОМ
На языке C++ циклы с параметром организуются с помощью структуры повторения
For (парам=нач.знач; парам<кон.знач; парам++) тело цикла
Отметим, что параметр может изменяться и не на единицу, а на другое (целое) число. Тогда вместо парам++ следует писать, например, парам+=2 (если параметр приращается на 2).
Пример 5.1. Рассчитать для заданного N величину N!
43
#include <iostream> |
|
#include <windows.h> |
|
using namespace std; |
|
int main() |
char str[256], str1[256]; |
{ unsigned long i,n, p; |
|
AnsiToOem(" введи значение N\n",str); |
|
cout<<str; cin>>n; p=1; |
|
for (i=1; i<n+1; i++) |
p=p*i; |
AnsiToOem("факториал числа ",str); AnsiToOem(" равен ", str1);
cout<<str<<n<<str1<<p<<"\n"; return 0;}
Заметим, что на этой задаче мы сталкиваемся с проблемой -ог раниченного представления целых чисел: мы сможем вычислить максимум 12! = 479 001 600 . Следующий 13! = 6 227 020 800, т.е.
это число уже не помещается в интервал представления для переменных типа unsigned long int. Поэтому, чтобы вычислять факториал для достаточно больших чисел, следует описание p сменить на double, правда, при этом мы будем получать округленное значение факториала (тип double дает не более 15 достоверных значащих цифр).
Заметим, что при программировании в средеCLR существует дополнительный целочисленный тип long long (см. табл. 4).
В этом случае (при использовании long long) удастся точно вычислить до 20! =2 432 902 008 176 640 000.
44
|
|
|
Т а б л и ц а 4 |
|
Дополнительные целые типы в Visual C++ |
||||
тип |
Тип (по- |
Размер |
Интервал допустимых значений |
|
русски) |
памяти |
|
||
|
|
|
||
long long |
целый |
8 байт |
от–9 223 372 036 854 775 808 до 9 |
|
|
|
|
223 372 036 854 775 807 |
|
unsigned long long |
целый |
8 байт |
От 0 до 18 446 744 073 709 551 615 |
|
Разумеется, внутри цикла можно организовывать и вложенные циклы, причем число вложений, в принципе, не ограничено.
Пример 5.2. Получить таблицу умножения в виде таблицы Пифагора:
1 2 3 4 5 6 7 8 9
24 6 8 10 12 14 16 18
36 9 12 15 18 21 24 27
48 12 16 20 24 28 32 36
510 15 20 25 30 35 40 45
612 18 24 30 36 42 48 54
714 21 28 35 42 49 56 63
816 24 32 40 48 56 64 72
918 27 36 45 54 63 72 81
//таблица умножения
#include <iostream> using namespace std; int main()
{int i,j,k ;
for (i=1;i<=9;i++) {cout<<"\n";
for (j=1; j<=9;j++) {k=i*j;
if (k<10)cout<<" " ; else cout<<" "; cout<<k; }; } cout<<"\n";
return 0;}
Практические задания В трех последующих задачах условие одинаковое: для задан-
ного натурального числа n рассчитать сумму:
5.1. cos x + cos x2 + cos x3 + ... + cos xn
5.2. sin 1 + sin (1+0,1) + sin (1+0,12 )+ ...+ sin(1+0,1n) 5.3. 1! + 2! + 3! + ... + n!
45
В трех следующих заданиях условие одинаковое: для задан-
ного натурального числа n рассчитать сумму и сравнить со значени-
ем y: |
|
|
|
5.4. 1 |
+ 2 + 3 |
+ ... + n |
y = n(n+1)/2 |
5.5. 1 |
+ 3 + 5 |
+ ... + (2n –1) |
y = n2 |
5.6. 2 |
+ 4 + 6 |
+ ... + 2n |
y = n(n+1) |
5.7. Для заданного натурального числа n рассчитать величину n!!
1× |
3×5×...×n, |
если |
n -нечетное |
n!!={2 |
×4×6×...×n, |
если |
n -четное |
5.8. Дано 10 вещественных чисел: a1, a2, ..., a10. Требуется определить, сколько из них принимает значение, большее заданного числа b.
5.9. Дано 10 вещественных чисел: a1, a2, ..., a10. Требуется найти порядковые номера тех из них, которые отрицательны.
5.10. Вычислить К – количество точек с целочисленными координатами, попадающих в круг радиусаR с центром в начале координат.
5.11. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.
5.12. Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел.
5.13. Написать программу, которая выводит таблицу квадратов чисел от 11 до 19.
5.14. Написать программу, которая вычисляет сумму первыхN целых положительных чисел.
5.15. Написать программу, которая вычисляет сумму первыхN целых положительных четных чисел.
5.16. Написать программу, которая вычисляет сумму первыхN целых положительных нечетных чисел.
5.17. Написать программу, которая выводит таблицу степеней двойки от нулевой до десятой степени.
5.18. Написать программу, которая выводит таблицу значений функции y = –2,4x2 + 5x – 3 в диапазоне от –2 до 2 с шагом 0,5.
5.19. Написать программу, которая приглашает ввести последовательно 5 дробных чисел и вычисляет их среднее арифметическое.
5.20. Написать программу, которая приглашает ввести последовательно N дробных чисел и вычисляет их среднее арифметическое. Значение N вводится извне.