Основы алгоритмизации и программирования
Основы алгоритмизации и программирования
ГОУ СПО СО "Асбестовский политехникум" Специальность: "Программное обеспечение вычислительной техники и автоматизированных систем" ДОМАШНЯЯ КОНТРОЛЬНАЯ РАБОТА по дисциплине "Основы алгоритмизации и программирования" ТЕХНИЧЕСКИЙ ОТЧЕТ ДК ОАиП 25.00 ТО Преподаватель Студент группы ПОВТ-2-1 О.Н. Савина Д.А. Савин 2010 г 05.03.2010 г. 2010 Содержание - Задача 1
- 1.1 Постановка задачи
- 1.2 Метод решения
- 1.3 Блок-схема
- 1.4 Листинг программы
- 1.5 Тестинг программы
- Задача 2
- 2.1 Постановка задачи
- 2.2 Метод решения
- 2.3 Блок-схема
- 2.4 Листинг программы
- 2.5 Тестинг программы
- Задача 3
- 2.1 Постановка задачи
- 2.2 Метод решения
- 3.3 Блок-схема
- 3.4 Листинг программы
- 3.5 Тестинг программы
- Задача 4
- 4.1 Постановка задачи
- 4.2 Метод решения
- 4.3 Блок-схема
- 4.4 Листинг программы
- 4.5 Тестинг программы
ЗАДАЧА 1В одномерном массиве найти элементы, заканчивающиеся на 3. Использовать функцию. Найти максимальный из них. 1.1 Постановка задачиИсходные данные: mas[n] - одномерный массив, где n - количество элементов.Результат: Изменённый изначальный массив - mas3[n], максимальный элемент, который заканчивается на 3 - max.1.2 Метод решения- Составляем функцию, которая будет находить элементы, заканчивающиеся на 3.- Заполняем массив данными, которые вводим с клавиатуры- Находим элементы, заканчивающиеся на 3, с помощью цикла с параметром.- Находим максимальный элемент, заканчивающийся на 3.- Выводим изменённый массив через цикл с параметром, и максимальный элемент, заканчивающийся на 3.1.4 Листинг программы/* В одномерном массиве найти элементы, заканчивающиеся на 3. Использовать функцию. Найти максимальный из них. */ #include<iostream.h> #include<conio.h> #define n 5 // функция long int fy(long int a) { if(a%10==3) return a; else return 0;} void main() {clrscr(); long int mas[n],mas3[n],max=0; int d=0,i; // вводим массив cout<<"vvedite massive"<<'\n'; for (i=0;i<n; i++) cin>>mas[i]; // массив cout<<"massive:"<<'\n'; for (i=0;i<n; i++) cout<<mas[i]<<'\t'; // находим элементы, заканчивающиеся на 3 for (i=0;i<n;i++) {mas3[d]=fy(mas[i]); if (mas3[d]!=0) d=d+1;} // находим максимальный элемент, заканчивающий на 3 for (i=0;i<d; i++) if (mas3[i]>max) max=mas3[i]; cout<<'\n'; // вывод результатов на экран cout<<"elements with end for 3:"<<'\n'; for (i=0;i<d; i++) cout<<mas3[i]<<'\t'; cout<<'\n'; cout<<"max="<<max<<'\n'; } 1.5 Тестинг программыТест 1) Введите массив 5 3 43 6 103 Изменённый массив 3 43 103 Максимальный элемент, заканчивающийся на 3 103 Тест 2) Введите массив 133 131 312 213 333 Изменённый массив 133 213 333 Максимальный элемент, заканчивающийся на 3 333 ЗАДАЧА 2В одномерном массиве найти элемент, который кратен 7, и после него вставить число, определяющее место этого элемента в массиве. Если таких нет, то вывести соответствующее сообщение. 2.1 Постановка задачиИсходные данные: mas[n] - одномерный массив, где n - количество элементов.Результат: Изменённый изначальный массив - mas, где удалены чётные элементы.2.2 Метод решения- Заполняем массив данными, которые вводим с клавиатуры- Находим элемент кратный 7 через цикл с параметром.- Вставляем число, определяющее место этого элемента в массиве.- Выводим результаты на экран.- Если таких элементов в массиве нет, то выводим соответствующее сообщение.2.3 Блок-схема2.4 Листинг программы/* В одномерном массиве найти элемент, который кратен 7, и после него вставить число, определяющее место этого элемента в массиве. Если таких нет, то вывести соответствующее сообщение. */ #include<iostream.h> #include<conio.h> #define n 8 void main() {clrscr(); int mas[n], i, p=-1; //вводим массив cout<<"vvedite massive"<<'\n'; for(i=0;i<n; i++) cin>>mas[i]; //массив cout<<"massive:"<<'\n'; for(i=0;i<n; i++) cout<<mas[i]<<'\t'; //находим элемент кратный 7 for(i=0;i<n; i++) if (mas[i]%7==0) {p=i; break;} //вставляем после первого такого элемента его позицию в массиве и выводим новый массив if (p!=-1) {for(i=n; i>p+1;i--) mas[i]=mas[i-1]; mas[p+1]=p; cout<<"end massive"<<'\n'; for(i=0;i<n+1;i++) cout<<mas[i]<<'\t';} //вывод сообщения если таковых нет else {cout<<endl; cout<<"v massive net elementa kratnogo chislu 7";} } 2.5 Тестинг программыТест 1) Начальный массив 1 4 3 5 7 6 4 3 Конечный массив 1 4 3 5 7 4 6 4 3 Тест 2) Начальный массив 1 2 3 4 5 6 8 9 Вывод сообщения "В массиве нет элемента кратного числу 7" ЗАДАЧА 3В двумерном массиве найти среднее арифметическое значение нечётных элементов расположенных над главной диагональю, и среднее арифметическое чётных элементов, расположенных под главной диагональю. 3.1 Постановка задачиИсходные данные: mas[n][n] - где n число строк и число столбцов (квадратная матрица), kch - количество чётных, knch - количество нечётных, sumch - сумма чётных, sumnch - сумма нечётных.Результат: среднее арифметическое значение нечётных элементов, расположенных над главной диагональю, и среднее арифметическое значение чётных элементов, расположенных под главной диагональю.3.2 Метод решения- Заполняем двумерный массив mas [n][n].- Находим количество и сумму нечётных элементов над главной диагональю.- Находим количество и сумму чётных элементов под главной диагональю.- Находим среднее арифметическое значение чётных и нечётных.- Записываем 2 ответа.3.3 Блок-схема3.4 Листинг программы/* В двумерном массиве найти среднее арифметическое значение нечётных элементов расположенных над главной диагональю, и среднее арифметическое чётных элементов, расположенных под главной диагональю.*/ #include<iostream.h> #include<conio.h> #define n 3 void main() {clrscr(); int i, j, kch=0,knch=0,mas[n][n]; float srch, srnch, sumch=0,sumnch=0; //вводим массив cout<<"vvedite massive"<<'\n'; for(i=0;i<n; i++) for(j=0;j<n; j++) cin>>mas[i][j]; //массив cout<<"massive:"<<'\n'; for(i=0;i<n; I++) {for(j=0;j<n; j++) cout<<mas[i][j]<<'\t'; cout<<'\n';} for(i=0;i<n; i++) for(j=0;j<n; j++) {if ((i<j)&&(mas[i][j]%2==0)) //кол-во и сумма нечётных элементов расположенных над главной диагональю {knch++; sumnch=sumnch+mas[i][j];} if ((i>j)&&(mas[i][j]%2==0)) //кол-во и сумма чётных элементов расположенных под главной диагональю {kch++; sumch=sumch+mas[i][j];};} //среднее арифметическое srnch=sumnch/knch; srch=sumch/kch; //вывод результатов на экран cout<<"srednee arifm. nechetnikh= "<<srnch<<'\n'; cout<<"srednee arifm. chetnikh= "<<srch<<'\n';} 3.5 Тестинг программыТест 1) n=3 Массив 1 2 3 4 5 6 7 8 9 Сумма нечётных = 3; Количество нечётных = 1; Среднее арифметическое = 3 Сумма чётных = 12; Количество чётных = 2; Среднее арифметическое = 6 Тест 2) n=4 Массив 1 2 3 4 5 6 7 8 1 2 3 4 9 8 7 6 Сумма нечётных = 10; Количество нечётных = 2; Среднее арифметическое = 5 Сумма чётных = 10; Количество чётных = 2; Среднее арифметическое = 5. ЗАДАЧА 4В двумерном массиве удалить столбец, в котором находятся 3 отрицательных элемента. Если такого нет, то удалить первый. 4.1 Постановка задачиИсходные данные: mas [n][m] - двумерный массив, где n - количество строк, а m - количество столбцов.Результат: Массив с удалённым столбцом.4.2 Метод решения- Вводим с клавиатуры mas [n][m].- Находим столбец, в котором 3 отрицательных элемента.- Удаляем столбец, в котором 3 отрицательных элемента.- Удаляем 1 столбец, если нет столбцов с 3 отрицательными элементами.- Выводим mas[i][j]. 4.3 Блок-схема4.4 Листинг программы/* В двумерном массиве удалить столбец, в котором находятся 3 отрицательных элемента. Если такого нет, то удалить первый.*/ #include<iostream.h> #include<conio.h> #define n 3 #define m 3 void main() {clrscr(); int h,i,j,mas[n][m],p=0,sum; //вводим массив cout<<"vvedite massive"<<'\n'; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>mas[i][j]; //массив cout<<"massive:"<<'\n'; for(i=0;i<n;i++) {for(j=0;j<m;j++) cout<<mas[i][j]<<'\t'; cout<<'\n';} //находим строку в которой 3 отрицательных элемента for(j=0;j<m;j++) {sum=0; for(i=0;i<n;i++) if (mas[i][j]<0) sum++; if (sum>2) {for(h=j;h<m-1;h++) //удаляем строку в которой 3 отрицательных элемента for(i=0;i<n;i++) mas[i][h]=mas[i][h+1]; p=1; break;};} if (p==0) //удаляем 1 строку т.к. нет строк с 3 отрицательными элементами for(j=0;j<m-1;j++) for(i=0;i<n;i++) mas[i][j]=mas[i][j+1]; //вывод результатов на экран cout<<"end massive"<<'\n'; for(i=0;i<n;i++) {for(j=0;j<m-1;j++) cout<<mas[i][j]<<'\t'; cout<<'\n';} } 4.5 Тестинг программыТест 1) Введите массив 2 -3 3 1 -1 2 3 -4 6 Конечный массив 2 3 1 2 3 6 Тест 2) Введите массив 2 3 3 1 1 2 3 4 6 Конечный массив 3 3 1 2 4 6
|