Скачать 5.48 Mb.
|
Тема: Обработка массивов на языке С++ Цель: Научитьcя обрабатывать массив. Теоретические сведения Массив структурированный тип данных , состоящий из фиксированного числа элементов одного типа. На рис .1 представлен массив вещественных чисел X. Одномерный массив описывают так: тип имя _ переменной [n]; где n количество элементов в массиве ,причем нумерация начинается с нуля :от 0до n 1. Например: int х[10]; float g[25]; Обратиться к элементу одномерного массива можно, указав имя массива и номер элемента в квадратных скобках. Например,
Обращаются к элементу матрицы, указывая последовательно в квадратных скобках соответствующие индексы: Например, 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()
Вставка Пусть массив Х (N) упорядочен по возрастанию, необходимо в него вставить элемент b, не нарушив упорядоченности массива. Блок-схема решения задачи представлена на рис.12. int main() float x[20],b; int i,j,n; cout<<"n="; cin>>n; cout<<"Massiv x\n"; for(i=0;i x[n]=b; else {for(i=0;i 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]
Практическая работа №12 |
В соответствии с Федеральным законом от 24. 07. 2007 №221-фз «О государственном кадастре недвижимости» (далее Закон) в отношении... | |||
Количество образовательных программ бакалавриата, специалитета и магистратуры (без учета программ, реализация которых завершается... | ... | ||
Составление плана подготовки и проведения путешествия. Разработка маршрута, подбор картографического материала, составление схемы... | «Выдача разрешений на ввод линейных объектов, расположенных на территории двух и более поселений Добрянского муниципального района,... | ||
Портфолио учащегося: составление и использование: методические рекомендации./ Автор-составитель: Т. Б. Табарданова – Ульяновск: уипк... | Рабочая программа профессионального модуля «Составление и использование бухгалтерской отчётности» является частью основной профессиональной... | ||
Программа практики является составной частью профессионального модуля 04 Составление и использование бухгалтерской отчетности основной... | Предварительная проработка литературы по теме и составление «рабочего» плана курсовой работы 7 |
Поиск Главная страница   Заполнение бланков   Бланки   Договоры   Документы    |