close

Вход

Забыли?

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

?

Задача 1

код для вставкиСкачать
Вариант 10.
Задача №1. Даны натуральное число n, целочисленная квадратная матрица порядка n. Получить b1,...,bn, где bi - это значение первого по порядку положительного элемента i-й строки (если таких элементов нет, то принять bi=1)
Описание метода решения задачи
Исходные данные: квадратная матрица int mass[10][10] размерность матрицы: int n; f - переменная - флаг, которая фиксирует первый положительный элемент в строке, указывается в составном условии вместе с основным
Результаты: m[i] - одномерный массив, где mi - это значение первого по порядку положительного элемента i-й строки
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блоков IV, V
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов
II. Глобальные описания переменных int mass[10][10], n, m[10], f;
III. Определение размерности 2-го мерного массива IV. Элементы матрицы принимаются как случайные числа, вывод матрицы на экран в виде таблицы
V. Получение необходимого результата и вывод его на экран
IV. Вывод матрицы на экран в виде таблицы
for (int i=0; i<n; i++)
{ for (int j=0; j<n; j++)
{ mass[i][j]=random(50)-35;
cout<<setw(5)<<mass[i][j];
}
cout<<endl;
}
V. 1. Так как алгоритм циклический, то выводим три набора формул и условие окончания (повторения) цикла. - рабочие формулы - нет, ничего не вычисляем
- закон изменения аргументов (переменных): i=i+1, j=j+1
- формулы для вычисления начальных значения аргументов (переменных): i:=0; j=0; f =0;
- условие окончания цикла: i>n, j>n (повторения i<n, j<n)
2. МРЗ:
* поиск первого положительного значения в строке матрицы: цикл обработки массива: используем алгоритм расчета матрицы при работе со строками - цикл строк операторные скобки
[блок присваивания переменным начальных значений]
цикл столбцов
- проверяем элемент массива больше нуля и переменная флаг равна нулю (т.е. еще не было найдено ни одного положительного элемента?), в программе это составное условие запишется следующим образом: if ((mass[i][j]>0) && (f==0)), если Да, то в одномерный массив m[i] записываем элемент массива, переменную флаг устанавливаем в единицу - нашли первый положительный элемент
- проверяем, если флаг равен нулю, т.е. в строке нет положительных элементов, то по условию задачи в одномерный массив записываем единицу: if (f==0) m[i]=1;
* вывод результата
Программа, реализующая данный алгоритм
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<iomanip.h>
int main()
{
clrscr();
randomize();
int mass[10][10],n,m[10],f;
cout<<"Размерность массива n="; cin>>n;
printf("Исходная матрица:\n");
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
mass[i][j]=random(50)-35;
cout<<setw(5)<<mass[i][j];
}
cout<<endl;
}
for (i=0; i<n; i++)
{
f=0;
for (int j=0; j<n; j++)
if ((mass[i][j]>0) && (f==0)) {m[i]=mass[i][j];f=1;}
if (f==0) m[i]=1;
}
cout<<"одномнрный маасив";
for(i=0;i<n;i++)
cout<<setw(7)<<m[i];
getch();
}
Документ
Категория
Рефераты
Просмотров
28
Размер файла
40 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа