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

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

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

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

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

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

Вариант №13

Выполнил: Студент Тананыкина Надежда Андреевна Группа О401Б Преподаватель: Лазарева Татьяна Ильинична

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

Задача 1

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

Сформировать новый массив из положительных нечетных элементов

заданного массива Р из n элементов(n<=30).

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

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

Последовательность из n элементов, обозначим массив array, тип int.

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

Измененный массив

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

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

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

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, n, ind;

int array[30];

scanf_s("%d", &n);

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

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

ind = 0;

printf("\ninitial\n");

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

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

printf("\nresult\n");

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

if ((array[i] > 0) && (array[i] % 2 == 1))

{

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

ind = 1;

}

if (ind == 0)

printf("no values\n");

}

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, n, ind;

int array[30];

scanf_s("%d", &n);

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

scanf_s("%d", (array + i));

ind = 0;

printf("\ninitial\n");

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

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

printf("\nresult\n");

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

if ((*(array + i) > 0) && (*(array + i) % 2 == 1))

{

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

ind = 1;

}

if (ind == 0)

printf("no values\n");

}

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, n, ind;

int array[30];

int* p;

scanf_s("%d", &n);

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

scanf_s("%d", p);

ind = 0;

printf("\ninitial\n");

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

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

printf("\nresult\n");

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

if ((*p > 0) && (*p % 2 == 1))

{

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

ind = 1;

}

if (ind == 0)

printf("no values\n");

}

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

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

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

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

n = 3

1

2

3

initial

1 2 3

result

1 3

initial

1 2 3

result

1 3

n = 3

1

-6

9

initial

1 -6 9

result

1 9

initial

1 -6 9

result

1 9

n = 3

-3

-6

4

initial

-3 -6 4

result

no values

initial

-3 -6 4

result

no values

Вывод:

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

Задача 2

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

Дан массив X, содержащий не более 30 элементов. Найти минимальный

элемент массива и поменять его местами с первым элементом.

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

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

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

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

Измененный массив.

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

Индекс минимального элемента массива, обозначим min, тип int.

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

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

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

int main()

{

int i, n, min;

int* p;

scanf_s("%d", &n);

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

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

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

min = 0;

printf("\ninitial\n");

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

{

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

if (p[i] < p[min])

min = i;

}

if (min != 0)

{

p[0] += p[min];

p[min] = p[0] - p[min];

p[0] -= p[min];

}

printf("\nresult\n");

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

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

}

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

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

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

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

n = 3

3

2

1

initial

3 2 1

result

1 2 3

initial

3 2 1

result

1 2 3

n = 3

1

2

3

initial

1 2 3

result

1 2 3

initial

1 2 3

result

1 2 3

n = 3

6

5

8

initial

6 5 8

result

5 6 8

initial

6 5 8

result

5 6 8

Вывод:

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