
- •ГЛАВА 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. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание

51
7.ОДНОМЕРНЫЕ МАССИВЫ
7.1.Понятие об одномерном массиве
Впрограммах на С++ можно использовать массивы.
Напомним, что массив – это упорядоченный набор величин, обозначаемых одним именем. Данные, являющиеся элементами массива, располагаются в памяти компьютера в определенном порядке, который задается индексами(порядковыми номерами элементов массива).
В С++ массив, как и любая переменная, должен быть объявлен. Делается это с помощью служебного слова, указывающего тип, затем указывается имя массива и в квадратных скобках его длина. Заметим, что индексы массива ведут счет с нуля, поэтому запись вида:
double b[14]
означает, что резервируется память для14 чисел типа double с именем b и порядковыми номерами от0 до 13. Отдельный элемент масссива записывается с указанием имени и индекса в квадратных скобках.
Пример 7.1. Ввести одномерный массив из 10 целых чисел. Вывести четные по порядковому номеру элементы этого массива .
//ввод и вывод одномерного массива
#include <iostream> #include <windows.h>

52
using namespace std; int main()
{int i,a[11]; char str[256]; AnsiToOem("введи элемент номер ",str); for (i=1;i<=10;i++)
{cout<<str<<i<<" ";cin>>a[i];}; AnsiToOem(" \n число a [",str); for (i=2;i<=10;i+=2)
{cout<<str<<i<<"]= "<< a[i];} cout<<"\n";
return 0;}
При запуске программы получим такой результат (рис. 8.14).
Рис. 8.14. Результат работы примера 7.1
Замечание. При работе с массивами необходимо внимательно следить за тем, чтобы не выходить за их объявленные границы. Компилятор C++ (в отличие, например, от Паскаля) не предупреждает об этой ошибке! Попытка ввести больше элементов, чем описано, приведет к неверным результатам, а попытка вывести– выведет случайный результат, находящийся в памяти.
Попробуйте в предыдущем примере описать массивa[10] (напомним, что при этом максимальный элемент a[9], т.к. счет элементам идет с нуля), и вы не получите последнего, десятого, числа (точнее получите какое-то случайное число при выводе).

53
Еще раз обратим внимание, что работа с целыми переменными (и массивами) в C++ требует осторожности. Как отмечалось в примере 6.2, деление целого на целое дает в результате целое! Если требуется получать «правильный», вещественный, результат следует использовать преобразование – дописать перед нужной операцией (float) или (double). Если же требуется получать остаток от деления целого на целое, то применяют операцию %. Проиллюстрируем использование операции деления и вычисления остатка на простом примере.
Пример 7.2. Ввести четное и нечетное число и вычислить -ре зультаты деления их на 2 и остатки от такого деления.
#include<iostream> #include <windows.h> using namespace std; int main()
{int n,k; char str[256]; AnsiToOem("введи четное и нечетное",str);
cout <<str; cin>>n>>k;
AnsiToOem(" отстаток от деления четного на 2=",str); cout <<str<< n%2;
AnsiToOem("\n результат деления четного на 2= ",str); cout<<str<< n/2;
AnsiToOem("\n отстаток от деления нечетного на 2=",str); cout<<str<< k%2;
AnsiToOem("\n результат деления нечетного на 2=",str); cout <<str<< (float)k/2<<"\n";
return 0;}
В результате получим (рис. 8.15)
Рис. 8.15. Результат работы примера 7.2