Составление линейных программ на С++ 10


НазваниеСоставление линейных программ на С++ 10
страница7/26
ТипПрактическая работа
1   2   3   4   5   6   7   8   9   10   ...   26
Тема: Обработка массивов на языке С++

Цель: Научитьcя обрабатывать массив.

Теоретические сведения

Массив структурированный тип данных , состоящий из фиксированного числа элементов одного типа. На рис .1 представлен массив вещественных чисел X.

Одномерный массив описывают так:

тип имя _ переменной [n];

где n количество элементов в массиве ,причем нумерация начинается с нуля :от 0до n 1.

Например:

int х[10];

float g[25];

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

квадратных скобках.

Например,





-1

3

2

0

-8

5




1




-2




0

1

2

3

4

5




6




7




x[0]










x[4]
















Двумерный массив (матрицу) можно объявить так:
















тип имя _ переменной [n][m];






















где n количество строк (от 0до n-1), m количество столбцов

от( 0до

m-1).

Например, double m[3][4];






















Обращаются к элементу матрицы, указывая последовательно в квадратных скобках соответствующие индексы:

Например, a[1][2] элемент матрицы a, находящийся в первой строке и втором столбце .

Массиву, как и простой переменной, можно присвоить начальные значения в момент его

описания.

Например,

float a[5]={1.2,(float)3/4, 5./6,6.1,7.8};

Ввод элементов массива

Блок-схема ввода алгоритма элементов массива представлена на рис. 1. Реализация алгоритма на С++ представлена ниже.

//Первая версия программы ввода элементов массива.

#include

#include

int main()

{

float x[10];

int i,n;

printf("\n N=");

scanf("%d",&n);printf("\n Введите массив X \n");

for(i=0;i
scanf("%f",&x[i]);

}


Рисунок 1.: Блок-схема ввода массива

//Вторая версия программы ввода элементов массива.

#include

#include

int main()

{

float x[10],b;

int i,n;

printf("\n N=");

scanf("%d",&n);

printf("\n Введите массив X \n");

for(i=0;i
{

scanf("%f",&b);

x[i]=b;

} }

//Третья версия программы ввода элементов массива.
float x[10];

int i,n;

cout<<"\n N=";

cin>>n;

cout<<"\n Vvedite massiv X \n";

for(i=0;i
cin>>x[i];

Вывод элементов массива

Блок-схема вывода алгоритма элементов массива представлена на рис. 5.3.



Рисунок 2: Блок-схема вывода элементов массива

Реализация алгоритма на С++ представлена ниже. При организации вывода элементов

массива можно использовать специальные символы \t \n.

printf("\n Массив X\n");

for(i=0;i
printf("%g\t",x[i]);

printf("\n");

cout<<"\n Massiv X \n";

for(i=0;i
cout<Основные алгоритмы обработки массивов

Алгоритм вычисления суммы элементов массива

Дан массив X, состоящий из n элементов. Найти сумму элементов этого массива. Процесс накапливания суммы элементов массива и практически ничем не отличается от суммирования значений некоторой числовой последовательности. Переменной S присваивается значение равное нулю, затем последовательно суммируются элементы массива X. Блок-схема алгоритма расчета суммы приведена на рис. 3.


Рисунок 3: Блок-схема нахождения

суммы элементов массива

Реализация на C++.

for(s=i=0;i
s+=X[i];

//Это можно записать и так

//for(s=i=0;i
Алгоритм вычисления произведения элементов массива

Дан массив X, состоящий из n элементов . Найти произведение элементов этого массива . Решение этой задачи сводится к тому, что значение переменной Р, в которую предварительно была записана единица, последовательно умножается на значение i го элемента массива . Блок-схема алгоритма приведена на рис. 4.



Рисунок 4: Алгоритм нахождения

произведения элементов массива

Реализация на C++.

for(P=1,i=0;i
P*=X[i];

Поиск максимального элемента и его номера

Алгоритм решения задачи следующий. Пусть в переменной с именем max хранится значение максимального элемента массива, а в переменной с именем nmax его номер . Предположим , что нулевой элемент массива является максимальным и запишем его в переменную nax, а в nmax его номер (то есть ноль ). Затем все элементы , начиная с первого , сравниваем в цикле максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную max, а в переменную nmax текущее значение индекса i. Процесс определения максимального элемента в массиве изображен при помощи блок-схемы на рис. 5

Рисунок 5: Поиск максимального элемента массива и его номера
Реализация алгоритма в С++.

for(max=X[0],nmax=0,i=1;i
if (x[i]>max)

{

max=x[i]; nmax=i;}

Алгоритм поиска минимума будет отличаться знаком в блоке сравнения. Значительно более интересной является задача поиска минимального (максимального) элемента массива , среди элементов массива , удовлетворяющих некоторому условию . Рассмотрим на примере поиска минимального значения, среди положительных элементов массива.

for(i=k=0;i
Если элемент положительный, if (x[i]>0)

{

то увеличиваем количество положительных элементов на 1. k++;

Если это первый положительный элемент, то объявляем его

минимальным, иначе

if (k==1) {min=x[i];nmin=i;}

сравниваем его с минимальным else if (x[i]
{

min=x[i]; nmin=i; } }

Алгоритм удаления элемента из массива

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

x[3]=x[4];x[4]=x[5];x[5]=x[6];

Блок схема этого процесса представлена на рис. 6.


Рисунок 6: Удаление

четвертого по счету элемента

Блок-схема удаления элемента с номером M из массива X, в котором N элементов изображена на рис. 7.



Рисунок 7: Блок-схема удаления

элемента из массивов

Реализация в С++.

for(i=M;i
x[i]=x[i+1];

N--

После удаления следует учитывать , что изменилась нумерация (все номера уменьшились на

элементов, начиная с номера M, поэтому если удалять несколько элементов подряд не надо переходить к следующему.
ЗАДАЧА .1. Удалить элементы с 4-го по 8-й в массиве из N элементов. Блок-схема представлена на рис. 8.



Рисунок 8: Блок-схема решения задачи .1
Реализация блок-схемы в С++.
for(j=1;j<=5;j++,N--)

for(i=3;i<=N-2;i++) X[i]=X[i+1];

Программа решения задачи 5.1 приведена ниже.

int main()

{

floxt x[20];

int i,j,n;

cout<<"n=";

cin>>n;

cout<<"Massiv x\n";

for(i=0;i
cin>>x[i];

for(j=1;j<=5;j++)

{

for(i=3;i<=n-2;i++)

x[i]=x[i+1];

n--;

}

cout<<"Massiv x\n";

for(i=0;i
cout<<"x("<
cout<
return 0;

}

Упорядочение элементов массива

Алгоритм сортировки выбором по возрастанию1 приведен в виде блок-схемы на рис. 9. Идея алгоритма заключается в следующем. В массиве состоящем из n элементов ищем самый большой элемент и меняем его местами с последним элементом. Повторяем алгоритм поиска максимального элемента, но последний (n-1)-й элемент не рассматривается, так как он уже

Для сортировки по убыванию надо поменять в блок-схеме знак «>» на знак «<».занял свою позицию . Найденный максимальный элемент меняем местами с (n-2)-м

элементом. Описанную выше операцию поиска проводим n-1 раз , до полного упорядочивания элементов в массиве.



Рисунок 9: Алгоритм сортировки выбором

Реализация алгоритма упорядочивания на С++

int main()

{

float b,max,a[20];

int i,j,n,k,nom;

cout<<"n=";

cin>>n;

cout<<"Massiv a\n";

for(i=0;i
cin>>a[i];

k=n;

for(j=0;j<=k-2;j++)

{

max=a[0];nom=0;

for(i=1;i
if (a[i]>max)

{

max=a[i];

nom=i;

}

b=a[k-1];

a[k-1]=a[nom];

a[nom]=b;

k--;

}

cout<<"Massiv a\n";

for(i=0;i
cout<<"a("<
cout<
return 0; }

Сортировка методом пузырька. Сортировка пузырьковым методом является наиболее известной. Ее популярность объясняется запоминающимся названием , которое происходит из-за подобия процессу движения пузырьков в резервуаре с водой, когда каждый пузырек находит свой собственный уровень, и простотой алгоритма. Сортировка методом «пузырька» использует метод обменной сортировки и основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов. Рассмотрим алгоритм пузырьковой сортировки более подробно.

Сравним нулевой элемент массива с первым, если нулевой окажется больше первого, то поменяем их местами. Те же действия выполним для первого и второго, второго и третьего, i го и (i+1) го ,предпоследнего и последнего элементов .В результате этих действий самый большой элемент станет на последнее (n-1)-е место. Теперь повторим данный алгоритм сначала, но последний (n-1)-й элемент, рассматривать не будем, так как он уже занял свое место. После проведения данной операции самый большой элемент оставшегося массива станет на (n 2)-е место . Так повторяем до тех пор , пока не упорядочим весь массив . Блок - схема сортировки элементов массива по возрастанию2 представлена на рис. 10.



Рисунок 10: Упорядочивание массива по возрастанию методом пузырька

Для сортировки по убыванию надо поменять в блок-схеме знак «>» на знак «<».int main()

{

float b,max,a[20];

int i,j,n,k,nom;

cout<<"n=";

cin>>n;

cout<<"Massiv a\n";

for(i=0;i
cin>>a[i];

for(j=1;j<=n-1;j++)

for(i=0;i<=n-1-j;i++)

if (a[i]>a[i+1])

{

b=a[i];

a[i]=a[i+1];

a[i+1]=b;

}

cout<<"Massiv a\n";

for(i=0;i
cout<<"a("<
cout<
return 0;

}

Запись положительных элементов массива A в массив B

Блок-схема решения этой задачи представлена на рис. 11



Рисунок 11: Алгоритм перезаписи из одного массива в другой

Реализация алгоритма на С++.

int main()

{float a[20],b[20]; int i,n,k; cout<<"n="; cin>>n; cout<<"Massiv a\n"; for(i=0;i







cin>>a[i];







for(k=i=0;i

b[k++]=a[i];




if (a[i]>0)




cout<<"Massiv b\n";

cout<<"b("<




for(i=0;i




cout<







return 0;}







Вставка

Пусть массив Х (N) упорядочен по возрастанию, необходимо в него вставить элемент b, не нарушив упорядоченности массива. Блок-схема решения задачи представлена на рис.12.

int main()

float x[20],b; int i,j,n; cout<<"n="; cin>>n; cout<<"Massiv x\n"; for(i=0;icin>>x[i]; cout<<"b="; cin>>b; if (b>=x[n-1])

x[n]=b;

else

{for(i=0;ib) {j=i;break;}

for(i=n;i>j;i--)

x[i]=x[i-1];

x[j]=b; }

n++;

cout<<"Massiv x\n";

for(i=0;i
cout<<"x("<
x[i]<<"\t";

cout<
return 0;}
Рисунок 12: Вставка элемента в упорядоченный массив

Задания для самостоятельного выполнения

Написать программу, которая последовательно считывает целые числа с клавиатуры, выводит их на экран и считает их сумму.
Литература

Дж. Рихтер. Windowsдля профессионалов. – 3-е изд.: М: Русская редакция. 1993; 4-е изд: СПб: Русская редакция, 2001. – 752 с. [шифр библиотеки 681.3 Р-558]

Д. Круглински, С. Уинглоу, Дж. Шеферд. Программирование на MicrosoftVisualC++ 6.0 для профессионалов. – СПб: Питер, М: Русская редакция, 2001. – 864 с. [шифр библиотеки 681.3 К-844]

Архангельский А.Я. Программирование в C++Builder5. – М: БИНОМ, 2000. – 1152 с.

Вильямс А. Системное программирование в Windows2000 для профессионалов. – СПб.: Питер, 2001 – 624 с. [шифр библиотеки 681.3 В-467]

Оценка

Критерии

5

Студент написал правильно программу

4

Правильно написана программа, но есть не большие отклонения

3

Код программы написан, верно, но есть отклонения в работе программы

2

не справился с заданием (программа не написана)


Практическая работа №12

1   2   3   4   5   6   7   8   9   10   ...   26

Похожие:

Составление линейных программ на С++ 10 iconПорядок учетно-кадастровых процедур в отношении сооружений (линейных объектов недвижимости)
В соответствии с Федеральным законом от 24. 07. 2007 №221-фз «О государственном кадастре недвижимости» (далее Закон) в отношении...

Составление линейных программ на С++ 10 icon«Составление индивидуальных корреционно развивающих программ развития...

Составление линейных программ на С++ 10 iconО подготовке к государственной аккредитации образовательных программ в 2018 г
Количество образовательных программ бакалавриата, специалитета и магистратуры (без учета программ, реализация которых завершается...

Составление линейных программ на С++ 10 iconОао мгтс
...

Составление линейных программ на С++ 10 iconЛекция: Организация похода выходного дня
Составление плана подготовки и проведения путешествия. Разработка маршрута, подбор картографического материала, составление схемы...

Составление линейных программ на С++ 10 iconАдминистративный регламент №36
«Выдача разрешений на ввод линейных объектов, расположенных на территории двух и более поселений Добрянского муниципального района,...

Составление линейных программ на С++ 10 iconУльяновский институт повышения квалификации и переподготовки работников...
Портфолио учащегося: составление и использование: методические рекомендации./ Автор-составитель: Т. Б. Табарданова – Ульяновск: уипк...

Составление линейных программ на С++ 10 iconАннотация к рабочей программе профессионального модуля «Составление...
Рабочая программа профессионального модуля «Составление и использование бухгалтерской отчётности» является частью основной профессиональной...

Составление линейных программ на С++ 10 iconРабочая программа производственной практики пп. 03 Пм. 04 «Составление...
Программа практики является составной частью профессионального модуля 04 Составление и использование бухгалтерской отчетности основной...

Составление линейных программ на С++ 10 iconИ составление «рабочего» плана курсовой работы 7
Предварительная проработка литературы по теме и составление «рабочего» плана курсовой работы 7

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск