close

Вход

Забыли?

вход по аккаунту

?

Задача 1 (4)

код для вставкиСкачать
Задача №1
Условие задачи
Дан 2 - х мерный 5 * 5 массив целых чисел. В зависимости от введенной буквы выполнить следующее : - если введен символ 's' найти сумму элементов главной диагонали
- если введен символ 'a','b ' или 'c' определить средне арифметическое значение элементов для каждого столбца.
- Если введен символ 'm' найти максимальное и минимальное значения.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: два 2 - х мерный 5 * 5 массив целых чисел mass[5][5]; ch - символ, используемый для выбора задания; Результаты: s- сумма элементов главной диагонали; s1- сумма элементов каждого столбца; d - одномерный массив, куда будет записываться сумма элементов каждого столбца;
max- максимальное значение
min -минимальное значение
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блоков III, IV.
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов
II. Глобальные описания переменных int mass[5][5], double s, d[5]; char ch;
III. Элементы матрицы принимаются как случайные числа, вывод матрицы на экран в виде таблицы
IV. В зависимости от введенного символа, поиск необходимого результата и вывод его на экран
III . Вывод матрицы на экран в виде таблицы
for (int i=0; i<5; i++)
{ for (int j=0; j<5; j++)
{ mass[i][j]=random();
cout<<setw(5)<<mass[i][j];
}
cout<<endl;
}
IV. 1. Так как алгоритм циклический, то выводим три набора формул и условие окончания (повторения) цикла. Для всех трех подзадач:
- закон изменения аргументов (переменных): i=i+1, j=j+1
- условие окончания цикла: i>5, j<5 (повторения i<5, j>5)
2. Рабочие формулы и формулы для вычисления начальных значений аргументов - различные.
3. Для просмотра решения всех трех задач в цикле do
{
cout<<" введите номер задачи...1,2,3\n";
cout<<" для выхода из программы 4\n";
ch=getch();
...
}
while (ch!='4');
в зависимости от введенного символа (if (ch=='1'), выбирается номер задачи
МРЗ 1): - формулы для вычисления начальных значений аргументов: s=0, i=0; j=0
- рабочая формула - s=s+mass[i][j];
* цикл обработки массива: используем алгоритм расчета всей матрицы - два цикла подряд, операторные скобки между ними не требуются
[блок присваивания переменным начальных значений]
цикл строк
цикл столбцов
проверяем находится элемент на главной диагонали? if((i==j), если Да, то вычисляем сумму по рабочей формуле
* выводим результат (cout<<"сумма главной диагонали:"<<s<<endl;)
МРЗ 2): - формулы для вычисления начальных значений аргументов: s:=0;
- рабочая формула - s=s+mass[i][j];
* цикл обработки массива: используем алгоритм расчета матрицы при работе со столбцами - цикл столбцов
операторные скобки
[блок присваивания переменным начальных значений]
цикл строк
считаем сумму по рабочей формуле и записываем суммы в одномерный массив (s=s+mass[i][j]; d[j]=s;), для проверки правильности решения задачи выводим суммы на экран (cout<<setw(5)<<s;)
* вывод результата: * так как суммы записаны в массив, то при выводе среднего арифметического значения элементов для каждого столбца (cout<<setw(5)<<d[i]/5;) используем цикл;
* элементы массива типа double, поэтому прежде чем выводить значения, указывается количество знаков после точки (cout<<setprecision(2);)
МРЗ 3): - формулы для вычисления начальных значений аргументов: max=-999,min=999;
- цикл обработки массива: используем алгоритм расчета всей матрицы - два цикла подряд, операторные скобки между ними не требуются
[блок присваивания переменным начальных значений]
цикл строк
цикл столбцов
- проверяем элемент массива больше максимального значения? if((mass[i][j]>max), если Да, то в переменную max записываем элемент массива
- проверяем элемент массива меньше минимального значения? (if((mass[i][j <min)), если Да, то в переменную min записываем элемент массива
- выводим результат (cout<<"max="<<max<<" "<<"min="<<min<<"\n";)
Программа, реализующая данный алгоритм
#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<iostream.h> #include<iomanip.h>
void main()
{
clrscr();
randomize();
int mass[5][5],max=-999,min=999;
double s,d[5];
char ch;
printf("MATRIX #1:\n");
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
{
mass[i][j]=random(20);
cout<<setw(5)<<mass[i][j];
}
cout<<endl;
}
do
{
cout<<" введите номер задачи...1,2,3\n";
cout<<" для выхода из программы 4\n";
ch=getch();
if (ch=='1')
{
s=0;
for (i=0; i<5; i++)
for (int j=0; j<5; j++)
if (i==j) s=s+mass[i][j];
cout<<"сумма главной диагонали:"<<s<<endl;
}
if (ch=='2')
{
printf("среднеарифметическое значение элементов столбца:\n");
for (int j=0; j<5; j++)
{
s=0;
for (int i=0; i<5; i++)
{s=s+mass[i][j]; d[j]=s;}
cout<<setw(5)<<s;
}
cout<<"\n"<<setprecision(2);
for (i=0; i<5; i++)
cout<<setw(5)<<d[i]/5;
cout<<"\n";
}
if (ch=='3')
{
for (i=0; i<5; i++)
for (int j=0; j<5; j++)
{ if (mass[i][j]>max) max=mass[i][j];
if (mass[i][j]<min) min=mass[i][j];
}
cout<<"max="<<max<<" "<<"min="<<min<<"\n";
}
}
while (ch!='4');
getch();
}
Документ
Категория
Рефераты
Просмотров
29
Размер файла
19 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа