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