1 семестр / 4 Практика
.docxБАЛАКОВСКИЙ ИНЖЕНЕРНО-ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ – ФИЛИАЛ
ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО АВТОНОМНОГО ОБРАЗОВАТЕЛЬНОГО
УЧРЕЖДЕНИЯ ВЫСШЕГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»
ФАКУЛЬТЕТ АТОМНОЙ ЭНЕРГЕТИКИ И ТЕХНОЛОГИЙ
КАФЕДРА «ИНФОРМАТИКА И УПРАВЛЕНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ»
ПРАКТИЧЕСКАЯ РАБОТА №4
по дисциплине «Языки программирования»
Вариант №8
Выполнил:
студент гр.
Проверил ст. преп. каф. ИУС
Михеев И.В. _____________
«____»______________2020г.
Балаково 2020
Цель работы: развитие практических навыков при решении задач на методы обработки одномерных и многомерных массивов на языке программирования СИ.
Задание 1. Массив состоящий из 10 элементов заполнить случайными числами. Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами.
#include “conio.h”
#include “iostream”
#define size 10 //размер массива
int main()
{
setlocale(LC_ALL, "rus");
int A[size];
int i, sum = 0;
for (i = 0; i < size; i++) //счетчик
{
A[i] = rand()%100;
printf("[%i]=%i\n ", i, A[i]);
}
int one = 0; //первый отр.эл
for (int i = 0; i < 10; i++)
{
if (A[i] < 0)
{
one = i;
break; //выход из цикла
}
}
int two = 0; //целочисленное имя
for (int i = 9; i >= 0; i--)
{
if (A[i] < 0)
{
two = i + 1;
break;
}
}
for (int i = one; i < two; i++)
{
sum += A[i];
}
printf("Сумма=");
printf("%i", sum);
_getch();
}
Рисунок 1 – Пример работы программы «Задача 1»
Задание 2. Полученный массив отсортировать любым способом по возрастанию или убыванию.
#include "iostream"
#include “conio.h”
#define size 10
int main()
{
setlocale(LC_ALL, "rus");
int A[size];
int j, i, c,sum=0;
printf("Исходный массив\n");
for (i = 0; i < size; i++)
{
A[i] = rand() % 100;
printf("[%i]=%i ", i, A[i]);
}
for (i = 0; i < size - 1; i++)
{
for (j = i; j < size; j++)
{
if (A[i] > A[j])
{
c = A[i];
A[i] = A[j];
A[j] = c;
}
}
}
printf("\nОтсортированный по возрастанию массив\n");
for (i = 0; i < size; i++)
{
printf("[%i]=%i ", i, A[i]);
}
int one = 0;
for (int i = 0; i < 10; i++)
{
if (A[i] < 0)
{
one = i;
break;
}
}
int two = 0;
for (int i = 9; i >= 0; i--)
{
if (A[i] < 0)
{
two = i + 1;
break;
}
}
for (int i = one; i < two; i++)
{
sum += A[i];
}
printf("\nСумма=");
printf("%i", sum);
_getch();
}
Рисунок 2 – Пример работы программы «Задача 2»
Задание 3. Реализоваться алгоритм из первого задания с использованием указателей.
#include “conio.h”
#include “iostream”
#define size 10
int main()
{
setlocale(LC_ALL, "rus");
int A[size];
int i, sum = 0;
for (i = 0; i < size; i++)
{
A[i] = rand() % 100;
printf("[%i]=%i\n ", i, A[i]);
}
int one = 0;
for (int i = 0; i < 10; i++)
{
if (A[i] < 0)
{
one = i;
break;
}
}
int two = 0;
for (int i = 9; i >= 0; i--)
{
if (A[i] < 0)
{
two = i + 1;
break;
}
}
for (int i = one; i < two; i++)
{
sum += A[i];
}
printf("Сумма=");
printf("%d", sum); //использую указатели
int*sumP = ∑ //указатели для упрощения кода(P(pointer))
int* oneP = &one;
for (int i = 0; i < 10; i++)
{
if (*(A) < 0)
{
*oneP = i;
break;
}
}
int*twoP = &two;
for (int i = 9; i >= 0; i--)
{
if (*(A) < 0)
{
*twoP = i + 1;
break;
}
}
for (int i = *oneP; i < *twoP; i++)
{
*sumP += *(A);
}
printf("\nСумма после использования указателей=");
printf("%i", *sumP);
getch();
}
Рисунок 3 – Пример работы программы «Задача 3»
Вывод: получил навыки решения задач на методы обработки одномерных и многомерных массивов на языке программирования СИ.