- •2. Структура и основные элементы программы
- •3.Общее понятие типов данных
- •4. Переменные и константы
- •5.Основные типы данных
- •6. Спецификаторы типов данных
- •7. Определение переменных и констант в программе
- •8. Инициализация переменных различных типов
- •9.Целочисленные типы данных
- •10. Вещественные типы данных
- •11. Особенности представления вещественных типов данных
- •12.Логический тип данных
- •13. Символьный тип данных
- •14. Управляющие последовательности
- •15. Операции и выражения
- •16. Операция присваивания, составные операции присваивания
- •17. Понятие l-значения
- •18. Преобразование типов данных
- •19. Арифметические операции
- •20. Операции инкремента и декремента, их разновидности
- •21. Операции отношения
- •22. Логические операции
- •23. Побитовые операции сдвига
- •24. Побитовые логические операции
- •25. Примеры применения побитовых операций
- •26. Условная операция и ее использование
- •27. Определение объема памяти, необходимого для размещения объектов
- •28. Понятие приоритета операций и его влияние на результаты вычислений
- •31.Флаги форматирования потоков ввода-вывода
- •32. Форматирование ввода-вывода с помощью манипуляторов
- •33.Форматирование ввода-вывода с помощью функций потоков ввода-вывода
- •34. Управление шириной поля вывода и выравниванием данных при выводе
- •35. Управление форматом вывода вещественных значений
- •36. Основные понятия структурного программирования
- •37. Базовый набор управляющих структур
- •39.Условная инструкция (if)
- •40. Инструкция множественного выбора (switch)
- •42. Цикл с постусловием (do while)
- •43. Итерационный цикл (for)
- •46. Инструкция перехода goto
- •47. Понятие рекуррентных вычислений, примеры
- •48. Понятие инварианта цикла
- •49. Понятие и определение массива
- •52. Ввод элементов массивов с клавиатуры
- •53. Декларативная и программная инициализация массивов
- •54. Копирование массивов
- •55. Нахождение минимальных и максимальных значений в массивах
- •56. Сдвиг элементов массивов
- •57. Перестановка элементов в массивах
- •58. Поиск данных в массивах
- •59. Сортировка данных в массивах
- •60. Вычисление сумм и произведений элементов массивов
- •61. Представление текстовых строк в виде массива символов
- •62. Ввод-вывод символьных строк
- •63. Определение фактической длины строки
- •64. Копирование символьных строк
- •65. Основные функции обработки строк библиотеки cstring
- •66. Массивы текстовых строк (двумерные массивы символов)
- •67. Указатели Понятие указателя
- •Работа с указателями
- •68. Арифметика указателей
- •69. Индексирование указателей
- •70. Ссылки
- •71. Определение функции
- •72. Инструкция return
- •73. Завершение работы функции
- •74. Механизмы передачи данных через параметры функций
- •75. Передача данных по значению
- •76. Передача данных через указатели
- •77. Передача данных по ссылке
- •78. Параметры по умолчанию
- •79. Функции с переменным числом параметров
- •80. Inline функции
- •81. Перегрузка функций
- •82. Рекурсия
- •83. Прототипы функций
52. Ввод элементов массивов с клавиатуры
Ввод массивов также осуществляется с помощью циклических алгоритмов.
Простейший алгоритм ввода значений элементов одномерного массива может выглядеть так:
const int n = 10;
short A[n];
…
cout << "Введите " << n << " целых чисел: \n"
for (int i = 0; i < n; ++i)
cin >> A [i];
cin.sync(); // Очистка потока ввода от возможных лишних введенных чисел
В этом фрагменте ввод значений элементов массива можно осуществлять и в виде строки целых чисел, разделенных пробелами или символами табуляции, и по одному значению с помощью клавиши Enter. Обратите внимание на последнюю строку этого фрагмента. Эта инструкция очищает поток ввода от оставшихся в нем данных. Если в потоке ввода после окончания цикла останутся какие-либо данные (например, мы ввели не 10 требуемых значений, а ошибочно 11 чисел), то следующие за циклом инструкции ввода возьмут их из потока, что может привести к неправильной работе программы.
Следующий фрагмент обеспечивает ввод значений элементов массива с указанием номеров вводящихся элементов:
const int n = 10;
short A[n];
…
cout << "Введите " << n << " целых чисел: \n"
for (int i = 0; i < n; ++i)
{
cout << i + 1 << ": ";
cin >> arr[i];
cin.sync(); // Очистка потока ввода от возможных лишних введенных чисел
}
При заполнении двумерных массивов ввод значений элементов лучше осуществлять в табличной форме:
const int n = 10, m = 5;
short A [n] [m];
…
cout << "Введите " << n << " строк из "<< m << " целых чисел: \n"
for (int i = 0; i < n; ++i)
{
cout << "Строка " << i + 1 << ": ";
// Вводим поэлементно значения i-й строки массива
for (int j = 0; j < m; ++j)
cin >> A [i] [j];
// Очищаем поток ввода от возможных лишних введенных чисел
cin.sync();
}
53. Декларативная и программная инициализация массивов
Arr[3]={3,5,6}; -декларативная
если заполняем циклом, то программная
54. Копирование массивов
Происходит почленно;
55. Нахождение минимальных и максимальных значений в массивах
Алгоритм решения задачи
– Инициализация массива, переменных, хранящих минимальное и максимальное значение.
– Заполнение массива случайными числами при помощи цикла и функции, возвращающей случайные числа.
– Вывод массива.
– Сравнение каждого элемента массива: Если элемент больше переменной с максимальным значением, то значение записывается в переменную; Если элемент меньше переменной с минимальным значением, то значение записывается в переменную.
– Вывод переменных с максимальным и минимальным элементом.
Пример
#include <cstdlib>
#include <iostream>
using namespace std;
const int N = 10;
int main()
{
int mass[N], max, min;
cout << "Элементы: |";
for(int r = 0; r<N; r++)
{
mass[r] = rand()%99;
cout << mass[r] << "|";
}
cout << endl;
max = mass[0];
min = mass[0];
for(int r = 1; r<N; r++)
{
if(max < mass[r]) max = mass[r];
if(min > mass[r]) min = mass[r];
}
cout << "Min: " << min << endl;
cout << "Max: " << max << endl;
return 0;
}