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