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

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

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

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

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

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

Вариант №11

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

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

Задача 1

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

Дан массив A из n элементов (n<=45). Заменить все четные элементы

массива А на их квадраты, а нечетные удвоить.

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

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

Массив из n элементов натуральных чисел, обозначим массив A, тип int.

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

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

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

В третьем способе - обращение к элементам массива в форме с указателем переменной p. Указатель, обозначим p, тип int*.

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

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, n;

int A[45];

scanf_s("%d", &n);

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

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

printf("initial\n");

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

{

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

if (A[i] % 2 == 0)

A[i] *= A[i];

else

A[i] *= 2;

}

printf("\nresult\n");

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

{

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

}

return 0;

}

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, n;

int A[45];

scanf_s("%d", &n);

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

scanf_s("%d", &(*(A + i)));

printf("initial\n");

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

{

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

if (*(A + i) % 2 == 0)

*(A + i) *= *(A + i);

else

*(A + i) *= 2;

}

printf("\nresult\n");

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

{

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

}

return 0;

}

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, n;

int A[45];

int* p;

scanf_s("%d", &n);

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

scanf_s("%d", p);

printf("initial\n");

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

{

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

if (*p % 2 == 0)

*p *= *p;

else

*p *= 2;

}

printf("\nresult\n");

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

{

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

}

return 0;

}

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

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

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

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

n = 6

1

2

3

4

5

6

initial

1 2 3 4 5 6

result

2 4 6 16 10 36

initial

1 2 3 4 5 6

result

2 4 6 16 10 36

n = 3

5

7

7

1initial

5 7 7

result

10 14 14

initial

5 7 7

result

10 14 14

n = 1

11

initial

11

result

22

initial

11

result

22

Вывод:

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

Задача 2

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

Дан массив Q из n элементов (n<=45). Найти максимальный элемент

среди элементов с номерами n1 и n2, которые вводятся с клавиатуры.

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

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

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

Максимальный элемент в массиве, обозначим max, тип int.

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

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

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

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

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

int main()

{

int i, n, n1, n2, max;

int* p;

scanf_s("%d", &n);

scanf_s("%d", &n1);

scanf_s("%d", &n2);

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

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

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

printf("initial\n");

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

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

max = p[n1];

for (i = n1-1; i < n2; i++)

{

if (p[i] > max)

max = p[i];

}

printf("max = %d\n", max);

}

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

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

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

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

4

1

4

1

2

3

4

initial

1 2 3 4 max = 4

initial

1 2 3 4 max = 4

4

2

3

1

2

3

4

initial

1 2 3 4 max = 3

initial

1 2 3 4 max = 3

6

1

2

3

1

2

66

5

5

initial

3 1 2 66 5 5 max = 3

initial

3 1 2 66 5 5 max = 3

Вывод:

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