отчет 1 семестр практика 5 12 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И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 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.