Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Poyasnitelnaya_Zapiska Факунин.doc
Скачиваний:
8
Добавлен:
26.03.2016
Размер:
175.1 Кб
Скачать

Описание практической части

Постановка задачи: Даны целые числа n, а1,…,аn. Наименьший член этой последовательности заменить целой частью среднего арифметического всех положительных членов, остальные члены оставить без изменения. Если в последовательности несколько членов со значением min(а1,…,аn), то заменить последний по порядку.

Определим следующие переменные для решения задачи в таблице (таблица 1).

Таблица 1. Спецификация

Идентификатор переменной или функции

Назначение в программе

Тип

1

a[n]

Массив целых чисел

Целый

2

min[j]

Массив минимальных элементов

Целый

3

i

Порядковый номер элемента

Целый

4

sra

Среднее арифметическое элементов массива a

Вещественное

5

n

Число элементов массива a

Целый

6

j

Число одинаковых минимальных элементов массива a

Целый

7

m

Массив минимальных элементов

Целый

Для визуального представления алгоритма решения задачи и определения последовательности шагов составим блок-схему, что позволит понять структуру алгоритма, где определим все исходные параметры и действия для поиска результата.

Для написании программного кода используется язык программирования Visual C++, где реализация кода осуществляется путем создания консольного приложения:

#include<iostream.h>

#include<math.h>

#include<windows.h>

#include<iomanip.h>

char* Rus(const char* text);

char bufRus[256];

char* Rus(const char* text)

{

CharToOem(text,bufRus);

return bufRus;

}

void gotoxy(short x,short y)

{

HANDLE StdOut=GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {x,y};

SetConsoleCursorPosition(StdOut,coord);

}

void main()

{

int i,j,n,a[100],min[100],k,m;

double sra,p;

p=1;sra=0;

cout<<Rus("Число элментов последовательности, n = ");cin>>n;

cout<<Rus("Введите элементы последовательсности a")<<endl;

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

{gotoxy (i+i*2,2);cin>>a[i];}

j=0;

min[0]=a[0];

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

{

if (a[i]<min[j])

{

j=0;

min[j]=a[i];

}

else if (a[i]==min[j])

{j++;min[j]=a[i];k=i;}

}

m=0;

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

{

if (a[i]>0)

{

p=p+a[i];

m++;

}

}

sra=p/m;

a[k]=int(sra);

cout<<Rus("Массив минимальных элементов последовательности a")<<endl;

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

{cout<<min[i]<<" ";}

cout<<endl;

cout<<Rus("Среднее арифметическое положительных элементов последовательности a = ")<<sra<<endl;

cout<<Rus("Порядковый номер изменяемого элемента: ")<<k+1<<endl;

cout<<Rus("Преобразованная последовательность a")<<endl;

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

{cout<<a[i]<<" ";}

cout<<endl;

}

Продемонстрируем результат выполнения программы. Количество элементов массива a было задано равным 10. Были последовательно через нажатие клавиши Enter введены 10 как положительных и отрицательных элементов. В результате выполнения программного кода на экран был выведен массив одинаковых минимальных элементов, среднее арифметическое положительных элементов последовательности a, порядковый номер заменяемого элемента и преобразованный массив a, в соответствии с рисунком 1.

Рисунок 1 - Результаты выполнения программы

При анализе результата можно увидеть следующее: в данном массиве два одинаковых минимальных элемента, равных - 6. В соответствии с условием задачи второй элемент, равный -6 был заменен на целую часть от среднего арифметического положительных элементов массива a.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]