Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

отчет 1 семестр практика 5 16 вариант

.docx
Скачиваний:
7
Добавлен:
06.07.2021
Размер:
252.54 Кб
Скачать

Балтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова

Кафедра И5 «Информационные системы и программная инженерия»

Практическая работа №5 по дисциплине «Информатика: Основы программирования» на тему «Массивы»

Вариант №16

Выполнил: Студент Эрмекбаев Рустам Хурваевич Группа О401Б Преподаватель: Лазарева Татьяна Ильинична

Санкт-Петербург 2020 г.

Задача 1

Условие задачи:

Найти минимальный среди положительных элементов заданного

массива X из n чисел (n<=15).

Исходные данные:

Количество элементов в массиве X, обозначим n, тип int.

Массив из n элементов натуральных чисел, обозначим массив X тип int.

Результирующие данные:

Минимальный элемент среди положительных чисел, обозначим min, тип int.

Дополнительные переменные:

В третьем способе - обращение к элементам массива в форме с указателем переменной p. Указатель, обозначим p, тип int*.

Структурная схема программы:

Текст программы (обращение к элементам массива в форме индексного выражения):

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i, n, min;

int X[15];

scanf_s("%d", &n);

for (i = 0; i < n; i++)

scanf_s("%d", &X[i]);

printf("initial\n");

min = X[0];

for (i = 0; i < n; i++)

{

if ((X[i] < min) && (X[i] > 0))

min = X[i];

printf("%d\t", X[i]);

}

printf("\nresult\n");

for (i = 0; i < n; i++)

printf("%d\t", X[i]);

printf("\n");

if (min > 0)

printf("minimum = %d", min);

else

printf("no positive numbers");

return 0;

}

Текст программы (обращение к элементам массива в форме с указателем константой):

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i, n, min;

int X[15];

scanf_s("%d", &n);

for (i = 0; i < n; i++)

scanf_s("%d", &(*(X + i)));

printf("initial\n");

min = *X;

for (i = 0; i < n; i++)

{

if ((*(X + i) < min) && (*(X + i) > 0))

min = *(X + i);

printf("%d\t", *(X + i));

}

printf("\nresult\n");

for (i = 0; i < n; i++)

printf("%d\t", *(X + i));

printf("\n");

if (min > 0)

printf("minimum = %d", min);

else

printf("no positive numbers");

return 0;

}

Текст программы (обращение к элементам массива в форме с указателем переменной p):

#include<stdio.h>

#include<stdlib.h>

int main()

{

int n, min;

int X[15];

int* p;

scanf_s("%d", &n);

for (p = &X[0]; p < &X[n]; p++)

scanf_s("%d", p);

printf("initial\n");

min = *p;

for (p = &X[0]; p < &X[n]; p++)

{

if ((*p < min) && (*p > 0))

min = *p;

printf("%d\t", *p);

}

printf("\nresult\n");

for (p = &X[0]; p < &X[n]; p++)

printf("%d\t", *p);

printf("\n");

if (min > 0)

printf("minimum = %d", min);

else

printf("no positive numbers");

return 0;

}

Таблица тестирования программы:

Входные данные

Ожидаемый результат

Результат программы

n = 6

5

455

445

-2

5

2

initial

5 455 445 -2 5 2

result

5 455 445 -2 5 2

minimum = 2

initial

5 455 445 -2 5 2

result

5 455 445 -2 5 2

minimum = 2

n = 3

66

5

-3

initial

66 5 -3

result

66 5 -3

minimum = 5

initial

66 5 -3

result

66 5 -3

minimum = 5

n = 3

-5

-66

0

initial

-5 -66 0

result

-5 -66 0

no positive numbers

initial

-5 -66 0

result

-5 -66 0

no positive numbers

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.

Задача 2

Условие задачи:

Дан целочисленный массив С из n элементов(n<=30). Получить новый массив из элементов четных и кратных 3.

Исходные данные:

Количество элементов в массиве, обозначим n, тип int.

Целочисленный массив С из n элементов, обозначим С, тип int.

Результирующие данные:

Новый массив из элементов четных и кратных, обозначим new, тип int.

Дополнительные переменные:

Указатель на массив, обозначим C, тип int*.

Указатель на массив, обозначим C, тип int*.

Индикатор есть ли в массиве С числа, подходящие условию, обозначим ind, тип int.

Структурная схема программы:

Текст программы:

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

int main()

{

int i, n, ind;

int* C;

int* new;

scanf_s("%d", &n);

C = (int*)malloc(n * sizeof(int));

new = (int*)malloc(n * sizeof(int));

ind = 0;

for (i = 0; i < n; i++)

scanf_s("%d", &C[i]);

printf("\ninitial\n");

for (i = 0; i < n; i++)

{

if (C[i] % 6 == 0)

{

new[ind] = C[i];

ind += 1;

}

printf("%d\t", C[i]);

}

if (ind != 0)

{

printf("\nnew array\n");

for (i = 0; i < ind; i++)

printf("%d\t", new[i]);

}

else

printf("\nno such values");

}

Таблица тестирования программы:

Входные данные

Ожидаемый результат

Результат программы

n = 6

1

2

3

4

5

6

initial

1 2 3 4 5 6

new array

6

initial

1 2 3 4 5 6

new array

6

n = 3

2

5

4

initial

2 5 4

no such values

initial

2 5 4

no such values

n = 5

12

33

25

24

3

initial

12 33 25 24 3

new array

12 24

initial

12 33 25 24 3

new array

12 24

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.