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

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

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

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

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

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

Вариант №12

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

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

Задача 1

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

Дана последовательность a1,a2,…a2n (n≤15). Получить сумму членов последовательности а1+…+аn, т.е. первой половины последовательности, и сумму an+1+..+a2n, т.е. членов второй ее половины, и сравнить их.

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

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

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

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

Сумма первой половины последовательности, обозначим sum1, тип int.

Сумма второй половины последовательности, обозначим sum2, тип int.

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

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, sum1, sum2, n;

int array[30];

scanf_s("%d", &n);

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

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

sum1 = 0;

sum2 = 0;

printf("\ninitial\n");

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

{

if (i < n)

sum1 += array[i];

else

sum2 += array[i];

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

}

printf("\nfirst amount = %d\nsecond amount = %d\n", sum1, sum2);

if (sum1 > sum2)

printf("first half amount is greater");

else if (sum1 < sum2)

printf("second half amount is greater");

else

printf("amounts are equal");

}

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, sum1, sum2, n;

int array[30];

scanf_s("%d", &n);

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

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

sum1 = 0;

sum2 = 0;

printf("\ninitial\n");

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

{

if (i < n)

sum1 += *(array + i);

else

sum2 += *(array + i);

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

}

printf("\nfirst amount = %d\nsecond amount = %d\n", sum1, sum2);

if (sum1 > sum2)

printf("first half amount is greater");

else if (sum1 < sum2)

printf("second half amount is greater");

else

printf("amounts are equal");

}

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

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

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

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

n = 2

1

2

3

4

initial

1 2 3 4

first amount = 3

second amount = 7

second half amount is greater

initial

1 2 3 4

first amount = 3

second amount = 7

second half amount is greater

n = 3

6

5

4

3

2

1

initial

6 5 4 3 2 1

first amount = 15

second amount = 6

first half amount is greater

initial

6 5 4 3 2 1

first amount = 15

second amount = 6

first half amount is greater

n = 1

5

5

initial

5 5

first amount = 5

second amount = 5

amounts are equal

initial

5 5

first amount = 5

second amount = 5

amounts are equal

Вывод:

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

Задача 2

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

Дан массив С из k элементов (k<=20). Найти число элементов массива, не лежащих в интервале от –А до А (А задано).

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

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

Число задающее интервал, обозначим a, тип int.

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

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

Количество элементов, не лежащих в интервале, обозначим num, тип int.

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

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

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

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

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

int main()

{

int i, num, a, k;

int* p;

scanf_s("%d", &k);

scanf_s("%d", &a);

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

num = 0;

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

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

printf("\ninitial\n");

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

{

if (p[i] * p[i] >= a * a)

num++;

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

}

if (num != 0)

printf("\nnot included in interval %d numbers", num);

else

printf("\nall numbers included in interval");

}

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

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

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

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

k = 3

a = 3

1

2

3

initial

1 2 3

not included in interval 1 numbers

initial

1 2 3

not included in interval 1 numbers

k = 3

a = 1

0

0

0

initial

0 0 0

all numbers included in interval

initial

0 0 0

all numbers included in interval

k = 3

a = 6

44

5

66

initial

44 5 66

not included in interval 2 numbers

initial

44 5 66

not included in interval 2 numbers

Вывод:

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