close

Вход

Забыли?

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

?

Задача 1 (3)

код для вставкиСкачать

Задача №1.
Условие задачи
Дана действительная квадратная матрица порядка n. Рассмотрим те элементы, которые расположены в строках, начинающихся с отрицательного элемента. Найти суммы тех из них, которые расположены соответственно ниже, выше и на главной диагонали.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: квадратная матрица int mass[10][10] размерность матрицы: int n;
начальные суммы S1=0, S2=0, S3=0; Результаты: Cумма элементов строк, начинающихся с отрицательного элемента:
S1 - расположенных ниже главной диагонали,
S2 - расположенных на главной диагонали,
S3 - расположенных выше главной диагонали.
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блоков IV, V
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов II. Локальное описание переменных int mass[10][10],n, S1, S2, S3;
III. Определение размерности 2-го мерного массива IV. Элементы матрицы принимаются как случайные числа, вывод матрицы на экран в виде таблицы
V. Получение необходимого результата и вывод его на экран
IV. Вывод матрицы на экран в виде таблицы
for (int i=0; i<n; i++)
{ for (int j=0; j<n; j++)
{ mass[i][j]=random(50)-10;
cout<<setw(5)<<mass[i][j];
}
cout<<endl;
}
V. 1. Так как алгоритм циклический, то выводим три набора формул и условие окончания (повторения) цикла. - рабочие формулы - S1+=mass[i][j], S2+=mass[i][j], S3+=mass[i][j]. Вычисление сумм элементов матрицы, которые расположены в строках, начинающихся с отрицательного элемента и расположеные соответственно ниже, выше и на главной диагонали.
- закон изменения аргументов (переменных): i=i+1, j=j+1
- формулы для вычисления начальных значения аргументов (переменных): i=0; j=0; S1=0, S2=0, S3=0;
- условие окончания цикла: i=n, j=n (повторения i<n, j<n)
2. МРЗ:
цикл обработки массива: используем алгоритм расчета всей матрицы - два цикла подряд, операторные скобки между ними требуются
[блок присваивания переменным начальных значений]
цикл строк
Проверка, начинается ли строка с отрицательного числа if(mass[0][j]<0), Если Да, то переход в цикл столбцов
Если нет, то переход в цикл строк
В цикле столбцов: - проверяем находится элемент ниже главной диагонали? if (i>j), если да, то S1+=mass[i][j]; - проверяем находится элемент на главной диагонали? if (i=j), если да, то S2+=mass[i][j];
- проверяем находится элемент выше главной диагонали? if (i<j), если да, то S3+=mass[i][j]; * выводим найденные суммы.
Программа, реализующая данный алгоритм
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
void main()
{
clrscr();
randomize();
int mass[10][10],n;
int S1=0, S2=0, S3=0;
cout<<"Razmer matrix ->"; cin>>n;
printf("\nIschodnaya matrix:\n");
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
mass[i][j]=random(10)-5;
cout<<setw(5)<<mass[i][j];
}
cout<<endl;
}
for (i=0; i<n; i++)
{
if(mass[i][0]<0)
for (int j=0; j<n; j++)
{
if (i<j) S3+=mass[i][j];
if (i==j) S2+=mass[i][j];
if (i>j) S1+=mass[i][j];
}
}
cout<<"\nSumma elementov nige diagonali -> "<<S1;
cout<<"\nSumma elementov na diagonali -> "<<S2;
cout<<"\nSumma elementov vishe diagonali -> "<<S3;
getch();
}
Документ
Категория
Рефераты
Просмотров
50
Размер файла
20 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа