Лабораторная № 3 Програмирование. Лаб3(2021). Лабораторная работа 3 по теме " Массивы и строки". Цель работы приобретение навыков получение навыков описания одномерных и двумерных массивов
Скачать 222.5 Kb.
|
Примеры работы с одномерными массивамиВ циклах ввода-вывода элементов массива использован оператор цикла с параметром for, так как число повторений заранее известно. Параметр цикла – индекс элемента массива меняется с постоянным шагом, равным 1 или -1. Демонстрация приемов ввода и вывода одномерного массива.#include using namespace std; int main() { setlocale(LC_ALL, "Russian"); int X[100]; int N,i; // N – длина массива //1. Ввод массива do { cout <<"Введите количество элементов от 1 до 100: "; cin>>N; } while (N<1 || N>100); cout <<"В массиве "<< N <<" элементов\n"; for (i=0; i { cout<<"X["< cin>>X[i]; } // 2. Вывод массива cout<<"Массив X[N]"< for (i=0;i cout< return 0; } Часто для отладки используется случайная генерация элементов массива. Например, в следующем примере элементы массива принимают случайное число из диапазона от -5 до 5: #include #include int main() { srand(time(NULL)); //инициализируем генератор случайных чисел с привязкой к системному времени for (i=0; i X[i]=rand()%10-5; //получаем числа не большие 10, от которых отнимаем 5 для получения отрицательных значений … } Заметьте, что при сдаче лабораторной работы необходимо обеспечить ручной ввод (для проверки конкретных тестовых наборов). Обычно пользователю дают возможность выбора способа ввода через меню (например, 0 –ручной ввод, 1 – случайные числа). Последовательный поиск компоненты вектора.Заданы вектор A(n) и X целого типа. Если в векторе А есть элемент, равный Х, то переменной p присвоить значение true. В противном случае присвоить переменной p значение false. Вывести индекс найденного элемента. В задачах поиска последовательный перебор элементов массива сочетается с проверкой некоторого условия, поэтому в программах использован оператор цикла итерационного типа while. Программа решения этой задачи методом простейшего линейного поиска приведена ниже. Поиск закончится при выполнении одного из двух условий: p=true (искомый элемент найден) или i>=n (все элементы отличаются от х). #include using namespace std; int main() { setlocale(LC_ALL, "Russian"); const int n=10; int A[n]; int i,x; bool p=false; for (i=0; i { cout<<"A["< cin>>A[i]; } cout<<"Введите значение искомого элемента: "; cin>>x; i=0; while (i { i++; if (A[i]==x) p=true; } if (p) cout<<"Индекс найденного элемента = "< else cout<<"Искомый элемент не найден"; return 0; } Формирования новых массивов из элементов исходных массивовЧасто встречаются задачи, решение которых требует формирования новых массивов из элементов исходных массивов. Пусть дан массив А[N] вещественных чисел, где N не больше 20. Положительные элементы массива нужно занести в массив В, а отрицательные возвести в квадрат и занести в массив С. Составим списки входных и выходных данных для данной задачи. Дано: N – число элементов [1..20], массив А[N] типа real; Найти: B и С – массив, kB и kC – количество элементов в массивах В и C, 0 (KC и KB) N. Ниже дается словесное описание алгоритма решения. 1. Ввод массива А из N элементов. 2. Положить количество элементов в новых массивах КВ =0; KC= 0 3. Цикл по i = 0, N-1,1 3.1 Если A[i] < 0, то kС: = kС+1 и C[kС-1] = A[i]*A[i], иначе kВ:=kB+1, B[kB-1]:=A[i] 4. Вывод на экран элементов массива В 5. Вывод на экран элементов массива С. Текст программы #include using namespace std; int main() { setlocale(LC_ALL, "Russian"); float A[20],B[20],C[20]; int n,i, kC=0,kB=0; cout <<"Введите n: "; cin >>n; for (i=0; i { cout<<"A["< cin>>A[i]; } for (i=0; i { if (A[i]<0) { kC++; C[kC-1]=A[i]*A[i]; } else { kB++; B[kB-1]=A[i]; } } //Вывод массивов if (kC==0) cout<<"В массиве нет отрицательных элементов"< { cout<<"Массив C"< for (i=0; i cout < } cout< if (kB==0) cout<<"В массиве нет положительных элементов"< { cout<<"Массив B"< for (i=0; i cout < } return 0; } |