Главная страница

Лабораторная № 3 Програмирование. Лаб3(2021). Лабораторная работа 3 по теме " Массивы и строки". Цель работы приобретение навыков получение навыков описания одномерных и двумерных массивов


Скачать 222.5 Kb.
НазваниеЛабораторная работа 3 по теме " Массивы и строки". Цель работы приобретение навыков получение навыков описания одномерных и двумерных массивов
АнкорЛабораторная № 3 Програмирование
Дата29.09.2022
Размер222.5 Kb.
Формат файлаdoc
Имя файлаЛаб3(2021).doc
ТипЛабораторная работа
#704511
страница2 из 8
1   2   3   4   5   6   7   8

Примеры работы с одномерными массивами


В циклах ввода-вывода элементов массива использован оператор цикла с параметром 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 //для srand(), rand()

#include //для time
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;

}


1   2   3   4   5   6   7   8


написать администратору сайта