Вы находитесь на странице: 1из 12

Министерство образования и науки Кыргызской Республики

Кыргызский государственный технический университет


им. И. Раззакова
Институт информационных технологий
Кафедра «Программное обеспечение компьютерных систем»

Направление: 710400 «Программная инженерия»


Дисциплина: «Введение в программную инженерию»

ОТЧЕТ
По лабораторной работе № 4

Тема: «Обработка одномерных массивов»

Выполнила: студент группы


ПИ(б)-4-22 Темирова Назгул
Проверил: доцент Искаков Р.Т.

Бишкек – 2022
Задача №1
Дан массив из N целых чисел. Определить: а) сумму и произведение всех
элементов массива; б) максимальный и минимальный элемент массива; в)
среднее арифметическое и среднее геометрическое значение положительных
элементов массива.
//a
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
const int N = 20;
int M[N] = {};
srand(time(NULL));
for (int i = 0; i < N; i++) {
M[i] = rand() % 10 - 5;
cout << "M[" << i << "]=" << M[i] << "\t";
}
int sum = 0,pro = 1;
for (int i = 0; i < N; i++)
{
sum += M[i];
pro *= M[i];
}
cout<<endl;
cout << "Сумма элементов массива=" << sum << endl;
cout << "Производение элементов массива=" << pro << endl;
return 0;
}

//b
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
const int N = 20;
int M[N] = {};
srand(time(NULL));
for (int i = 1; i < N; i++) {
M[i] = rand() % 10 - 5;
cout << "M[" << i << "]=" << M[i] << "\t";
}
int Max = M[0];
int Min = M[0];
for (int i = 1; i < N; i++)
{
if (M[i] > Max) {
Max = M[i];
}
if (M[i]<Min){
Min = M[i];
}
}
cout<<endl;
cout << "Max элементов массива=" << Max << endl;
cout << "Min элементов массива=" << Min << endl;
return 0;
}

//c
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
const int N = 20;
int sum, pro, M[N] = {};
double sreda, sredg;
srand(time(NULL));
for (int i = 1; i < N; i++) {
M[i] = rand() % 10 - 5;
cout << "M[" << i << "]=" << M[i] << "\t";
}
sum = 0; pro = 1;
for (int i = 0; i < N; i++)
{
sum += M[i];
pro *= M[i];
}
sreda = double(sum) / N;
sredg = pow(pro, 1 / N);
cout<<endl;
cout << "Среднее ариф-е элементов массива=" << sreda << endl;
cout << "Среднее геом-е элементов массива = " << sredg << endl;
return 0;
}
Задача №2
Дан массив из N целых чисел. а) Все элементы, кратные числу 5 и не кратные
числу 3, заменить нулем. б) Все нечетные элементы удвоить, а четные
уменьшить вдвое.
/a
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 10;
int M[N] = {};
srand(time(NULL));
for (int i = 0; i < N; i++)
{
M[i] = rand() % 10 + 5;
cout << "M[" << i << "]=" << M[i] << "\t";
}
cout << endl;
for (int i = 0; i < N; i++)
{
if ((M[i] % 5 == 0) && (M[i] % 3 != 0))
M[i] = 0;
}
cout "Числа кратные 5 и не кратные 3 были заменены на 0" << endl;
for (int i = 0; i < N; i++)
{
cout << "M[" << i << "]=" << M[i] << "\t";
}
cout << endl;
return 0;
}

/b
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 10;
int M[N] = {};
srand(time(NULL));
for (int i = 0; i < N; i++)
{
M[i] = rand() % 10 + 5;
cout << "M[" << i << "]=" << M[i] << "\t";
}
cout << endl << endl;
for (int i = 0; i < N; i++)
{
if (M[i] % 2 == 0)
M[i] = M[i] / 2;
else
M[i] *= 2;
}
cout << endl << "Нечетные числа были удвоены, а четные уменьшены в 2
раза" << endl;
for (int i = 0; i < N; i++)
{
cout << "M[" << i << "]=" << M[i] << "\t";
}
system("pause");
return 0;
}
Задача №3
Даны три последовательности чисел а0, а1, ..., a9, b0, b1 ..., b9, с0, с1, ..., с9.
Составьте новую последовательность d0, d1, …, d9, каждый элемент которой
определяется по правилу di = max (аi, bi, сi), где i= 0,1,2, ...,9.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 10;
int a[N] = {}, b[N] = {}, c[N] = {}, d[N] = {}, max, min;
srand(time(NULL));
for (int i = 0; i < N; i++)
{
trya:
a[i] = rand() % 100;
b[i] = rand() % 100;
c[i] = rand() % 100;
if (a[i] == b[i] || b[i] == c[i] || a[i] == c[i])
goto trya;
. else
{
cout << "a[" << i << "]=" << a[i] << "\t";
cout << "b[" << i << "]=" << b[i] << "\t";
cout << "c[" << i << "]=" << c[i] << "\t";
cout << endl;
}
}
cout << "Каждый элемент d равен максимальному элементу из a, b, c тем
же индексом" << endl;
for (int i = 0; i < N; i++)
{
max = a[i];
if (max < b[i])
max = b[i];
if (max < c[i])
max = c[i];
d[i] = max;
cout << "d[" << i << "]=" << d[i] << endl;
}

system("pause");
return 0;
Задача № 4
Определить, является ли данная последовательность целых чисел
убывающей или возрастающей (во избежание лишних проверок использовать
оператор break).
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 5;
int a[N] = {};

for (int i = 0; i < N; i++)


{
cout << "Введите " << i << "й элемент массива:";
cin >> a[i];
}
cout << endl;
for (int i = 0; i < N; i++)
cout << "a[" << i << "]=" << a[i] << endl;
cout << endl;
int c;
for (int i = 1; i < N; i++)
{
if (a[i - 1] >= a[i])
{
c = 0;
break;
}
else
c = 1;
}
for (int i = 1; i < N; i++)
{
if (c == 1)
break;
else
if (a[i - 1] <= a[i])
{
c = 0;
break;
}
else
c = 2;
}
cout << endl;
if (c == 1)
cout << "Последовательность возрастает" << endl;
else if (c == 2)
cout << "Последовательность убывает" << endl;
else if (c == 0)
cout << "Последовательность ни возрастает ни убывает" << endl;
system("pause");
return 0;
}
Задача № 5
Найти номер первого нулевого элемента массива а 0, а1, ..., а25 и сумму и
произведение элементов, расположенных до него, а среди элементов,
расположенных правее первого нулевого, найти максимальный и
минимальный элемент.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 25;
int a[N] = {}, sum = 0, prod = 1, max, min, j=0, c=1;
srand(time(NULL));
zanovo:
for (int i = 0; i < N; i++)
{
a[i] = rand() % 10 - 5;
cout << "a[" << i << "]=" << a[i] << endl;
c *= a[i];
}
if (c != 0)
{
cout << "Ошибка, нет нулевого элемента" << endl;
goto zanovo;
}
cout << endl;
for (int i = 0; i < N; i++)
{
if (a[i] == 0)
{
j = i;
goto a;
}

}
a:
for (int i = 0; i < j; i++)
{
sum += a[i];
prod *= a[i];
}
j++;
max = a[j];
min = a[j];
j++;
for (j; j < N; j++)
{
if (a[j] > max)
max = a[j];
if (a[j] < min)
min = a[j];
}
cout << endl;
cout << "Сумма элементов слева от нуля=" << sum << endl;
cout << "Произведение элементов слева от нуля=" << prod << endl;
cout << "Максимальный элемент справа от нуля=" << max << endl;
cout << "Минимальный элемент справа от нуля=" << min << endl;
system("pause");
return 0;
}

Задача № 6
Найти наименьший элемент из элементов последовательности x 1, x2, ..., x25,
расположенных до первого отрицательного числа. Все отрицательные числа,
расположенные правее первого отрицательного, помножить на этот
наименьший.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 25;
int M[N] = {}, min, j = 0;
srand(time(NULL))
for (int i = 0; i < N; i++)
{
M[i] = rand() % 10 - 2;
cout << "M[" << i << "]=" << M[i] << "\t";
}
cout << endl;
min = M[0];
for (int i = 1; i < j; i++)
{
if (M[i] < min)
min = M[i];
}
j++;
for (j; j < N; j++)
{
if (M[j] < 0)
M[j] = M[j] * min;
}
cout << "Результат:" << endl;
cout << "Минимальное число слева от первого отрицательного
элемента=" << min << endl;
for (int i = 0; i < N; i++)
{
cout << "M[" << i << "]=" << M[i] << "\t";
}
system("pause");
return 0;
}

Вам также может понравиться