1) Составить программу вывода на экран любого элемента массива по его индексу.
2) Вывести элементы массива на экран в обратном порядке.
3) Дан массив. Составить программу расчета квадратного корня из любого элемента массива.
4) Дан массив. Выяснить является ли s-й элемент массива положительным (четным) числом.
5) Дан массив из 21 вещественного числа. Увеличить с 5 по 10 элемент в 3,8, с 11 по 21 уменьшить на 2,1, а остальные оставить без изменения. Вывести полученный массив на экран.
6) Определить сумму первых шести элементов, и произведение последних четырех элементов массива.
7) Дан массив a. Определить знакопеременную сумму a [1] – a [2] + a [3] – a [4] +.... Условный оператор и операцию возведения в степень не использовать.
8) Выяснить, верно ли, что сумма элементов массива есть неотрицательное число.
9) Дан массив. Напечатать все элементы, не превышающие числа 100.
10) В массиве хранится информация о количестве побед, одержанных 20 футбольными командами. Определить номера команд, имеющих меньше трех побед.
11) Дан массив целых чисел. Выяснить, верно ли, что сумма элементов, которые меньше 50, есть четное число.
12) Определить количество элементов массива, принадлежащих промежутку от a до b (значения a и b вводятся с клавиатуры; b>a).
13) В массиве хранится информация о стоимости 1 кг 20 видов конфет. Определить, сколько стоят самые дешевые конфеты и их порядковый номер.
14) Дан массив вещественных чисел. Выяснить, верно ли, что максимальный элемент превышает минимальный не более чем на 25.
15) Дан массив из четного числа элементов. Поменять местами: а) его половины; б) первый и минимальный элементы. Если элементов с минимальным значением несколько, то в обмене должен участвовать последний из них.
16) Удалить из массива: а) все отрицательные элементы; б) все четные элементы, стоящие на нечетных местах.
17) Известно, что в массиве имеются элементы, равные 5. Определить номер последнего из них. (Условный оператор не использовать).
18) Размеры 12 параллелепипедов (длина, ширина, высота) хранятся в трех массивах. Вывести на экран объемы каждой фигуры. Задачу решить двумя способами: 1) без использования дополнительного массива; 2) с использованием дополнительного массива.
19) Дан двумерный массив. Вывести на экран элемент, расположенный в правом верхнем углу массива.
20) Дан двумерный массив. Вывести на экран все элементы второго столбца массива.
21) Дан двумерный массив. Найти сумму элементов, расположенных в верхнем левом и нижнем правом углах.
22) Заполнить двумерный массив размером следующим образом:
а) | б) | |||||||||||||||||||||||||
23) Заполнить двумерный массив размером следующим образом: |
| |||||||||||||||||||||||||
24) В двумерном массиве в строках хранится информация об оценках каждого из 20 учеников класса по тому или иному предмету (в первой строке – информация об оценках первого ученика, во второй – второго и т.д.). Общее число предметов равно 10. Определить среднюю оценку по классу в целом.
25) Дан двумерный массив. Определить количество максимальных элементов в массиве; сумму тех элементов массива, сумма индексов которых равно s.
26) Дан двумерный массив. Найти минимальную сумму элементов столбца, максимальную сумму элементов строки.
27) Дан двумерный массив. Определить в какой строке массива сумма элементов больше: в первой или в предпоследней.
28) В двумерном массиве имеются только два одинаковых элемента. Найти их.
29) Дан двумерный массив целых чисел. В пятой строке имеются элементы, равные 13. Определить номер столбца, в котором расположен самый левый из таких элементов.
30) Дан двумерный массив целых чисел. Принимая, что массив просматривается построчно сверху вниз, а в каждой строке – слева направо, найти координаты (номера) первого элемента, равного нулю.
31) Составить программу,которая меняет местами два любых элемента главной диагонали квадратного массива.
32) Дан квадратный массив размером , заполненный двузначными целыми числами. Вывести на экран: а) расположенную выше побочной диагонали; б) расположенную ниже побочной диагонали.
33) Дан двумерный массив. Вставить в него строку из чисел 3 после строки с номером s.
34) Дан двумерный массив размером , заполненный целыми числами. Все его элементы, кратные трем, записать в одномерный массив.
35) Даны два двумерных массива из 12 строк и 28 столбцов. В первом из них записано количество осадков (в мм), выпавших за каждый из первых 28 дней каждого месяца 2004 года, во втором – аналогичные сведения за 2005 год.
Контрольные вопросы
1. Что такое одномерный массив? Для чего используются одномерные массивы? Как они описываются?
2. Как называется номер элемента одномерного массива?
3. Как в программе использовать значение конкретного элемента одномерного массива?
4. Как можно заполнить одномерный массив?
5. Пусть объявлен массив int p[]={2, 4, 6, 10, 1}; Чему равно значение элемента р[3 ]?
6. Что является результатом программы:
int x[]={5,2,3,0,8};
for (i=1; i<=3; i++) { cout>>”\n”>>x[i]; }
7. В каком случае размерность массива можно явно не указывать?
8. Можно ли изменить размерность ранее описанного массива?
9. Пусть задан массив int x[]={6, 4, 9, 3, 2}; Как определить размерность массива?
10. Пусть объявлен массив int m[6]={5, 3, 2}; Чему равен элемент m[4]?
11. Что является результатом программы: for (i=0; i<=5; i++) {A[i]=i; cout <<A[i]<<” “;}
12. Каким должен быть тип индекса массива?
13. Для чего в программах используются двумерные массивы? Как они описываются?
14. Сколько индексов характеризуют конкретный элемент двумерного массива?
15. Пусть задан c[i][j ].Какой индекс обозначает строки, а какой столбцы?
16. Как в программе использовать значение конкретного элемента двумерного массива?
17. Как можно заполнить двумерный массив?
18. Опишите массив R из пяти элементов, каждый из которых является массивом из 10-ти вещественных чисел.
19. Какую структуру данных описывает двумерный массив?
20. Какой индекс двумерного массива изменяется быстрее при последовательном размещении элементов массива в оперативной памяти?
21. Пусть объявлен массив int p[3][3]={2, 4, 6, 10, 1, 12, 4, 0, 0}; Чему равно значение элемента р[2][2]?
22. Пусть объявлен массив int m[2][2]={{5, 3}, {0, 2}}; Чему равен элемент m[1][2]?
23. Пусть задан А[4][5]. Чему равны максимальные значения индексов для строк и для столбцов?
24. Что является результатом программы (на экране):
int x[3][2]={5,2,3,0,8,1};
for(i=1; i<=3; i++)
{ for(j=1; j<=3; j++) cout>>x[i]>>” “;
cout>>endl;}
Строки
2.1 Определение и объявление строки С++
С++ не поддерживает отдельный строковый тип данных.
Строка в С++ - это массив символов, оканчивающийся нулевым символом ('\0'). |
Таким образом, можно определить строки двумя способами: как массив символов или как указатель на первый символ строки, например:
char str1[10] = "string1"; // объявление строки с помощью массива символов |
Итак, теперь подробнее. Массив - это набор однородных значений, следовательно строка есть не что иное, как набор символов, и, соответственно, для хранения строк можно использовать символьные массивы. Например, строка "QWERTY" имеет тип char[7], а пустая строка " " имеет тип char[1]. Почему char[1]? Именно потому, что любая строка завершается так называемым нулевым символом, то есть символом, код которого в ASCII-таблице равен 0 (этот символ также является escape-символом и его символьный эквивалент представляется как '\0'). Благодаря этому свойству можно определить конец строки, если у Вас строка занимает меньшее количество символов, чем то количество, которое было указано в квадратных скобках при объявлении массива, т.е. определить фактическую длину строки, хранящейся в массиве.
Одна из замечательных особенностей при работе со строками – это возможность упрощенной начальной инициализации. Например,
Объявление char str[] = "ABCDE"; присваивает переменной-строке начальное значение "ABCDE". А точнее, создает массив из 6 символов: 'A','B','C','D','E' и символа '\0'.Начальная инициализация символьного массива отличается от инициализации какого-либо другого массива – можно просто присвоить необходимую строку имени массива с пустыми квадратными скобками. С++ сам подсчитает длину строки и выделит соответствующий объем памяти под массив для размещения в нем требуемой строки.
Сразу необходимо отметить, что С++ сам автоматически сделает последний элемент массива нулевым символом, то есть, хотя в данном случае Вы массиву str присваиваете строку "ABCDE", длина которой составляет 5 символов, C++ выделяет память под 6 символов, записывает туда строку и затем в последний (пятый при счете от 0) записывает нулевой символ.
Следует также отметить, что при начальной инициализации символьного массива (как и любого другого) можно указывать в квадратных скобках его размер с целью дальнейшего использования массива еще для каких-либо целей (например, для хранения другой какой-либо строки):
Объявление char str[10] = "ABCDE"; создает массив из 10 символов, и первые пять элементов этого массива принимают значения 'A','B','C','D' и 'E' соответственно, остальные символы будут ноль-символы. |
В данном случае в первые 5 элементов массива записывается строка "ABCDE", а всем остальным элементам присваиваются нули.
Для начальной инициализации символьного массива можно использовать правила инициализации произвольного массива, то есть, используя фигурные скобки, только в данном случае придется явно указывать нулевой символ, которым заканчивается строка. Рассмотрим предшествующий пример с использованием общих правил начальной инициализации массива.
char str[]={'A','B','C','D','E','\0'}; |
Как видите упрощенный вариант начальной инициализации строкового массива значительно проще и удобнее, но еще раз отметим, что его можно использовать только для символьных массивов.
· Типичная ошибка программирования. Не выделяется достаточно места в массиве символов для хранения нулевого символа, завершающего строку.
· Типичная ошибка программирования. Создание или использование "строки", которая не содержит завершающего нулевого символа.
· Типичная ошибка программирования. Путают символьные и строковые константы.
Символьная константа – это один символ, заключенный в апострофы, например: 'A' или '\n'. Строковая константа – это последовательность символов, заключенная в двойные кавычки. В числе символов строки могут находится любые символьные константы, например, "Visual C++\n" состоит из следующих символов: 'V', 'i', 's', 'u', 'a', 'l', ' ', 'C', '+', '+', '\n', '\0'. Таким образом, "A" – это строковая константа и состоит из двух символов: 'A' и '\0'. Соседние строковые константы транслятором "склеиваются", например: "АБВ" "ГДЕ" означает то же, что "АБВГДЕ".
Рассмотрим небольшой пример:
//Задана строка, скопировать ее в символьный массив. #include “iostream”using namespace std;void main(){ char str1 [ ] = "1234567890", /* объявляем символьный массив str1 и инициализируем его */ str2[11]; // объявляем символьный массив без инициализации /* в цикле пока не встретится конец строки, присваиваем текущему элементу массива str2 символ из массива str1 */ for(int i = 0; str1[i]!= '\0'; i++) str2[i] = str1[i]; // копируем ноль-символ в str2. str2 [i] = '\0'; cout << str2 << '\n'; // вывод строки на экран}Обратите внимание, выход из цикла происходит, когда str1[i] равно ноль-символу, т.е. ноль-символ не копируется в str2, следовательно, это нужно сделать за циклом.