[H-L-L.ru]

Форма входа

Меню сайта

Categories
Основы работы в среде C++ Builder.Основы языка Си++ [7]
Операторы ветвления и операторы передачи управления [7]
Операторы цикла и операторы передачи управления [15]
Одномерные массивы [15]
Многомерные массивы [7]
Указатели.Динамическое распределение памяти [15]
Функции [4]
Строки [3]
Функция Main [15]
Типы данных,определяемые пользователем [1]
Потоки ввода/вывода [0]
Объектно-ориентированное программирование [0]
Справочные материалы [2]

Главная » Статьи » Решение задач на C++ к лекциям » Функции

Задача №1
Даны две квадратные матрицы nxn. Напечатать ту из них, которая имеет минимальный "след”
(т.е. сумму элементов главной диагонали). При решении создать функцию для нахождения
следа матрицы и функцию печати матрицы.

float Sled(int **massiv1, int number1, int **massiv2, int number2)
{
 float s1=0,s2=0;
 int i,j;

 for(i=0;i<number1;i++)
  for(j=0;i<number1;i++)
  {
   s1=s1+(*massiv1)[i*number1+j];break;
  }

 for(i=0;i<number2;i++)
  for(j=0;i<number2;i++)
  {
   s2=s2+(*massiv2)[i*number2+j];break;
  }

  return (s1>s2)?2:1;
}

void Pech(int **a, int nstr)
{
 int i, j;
 for(i=0;i<nstr;i++)
  for(j=0;j<nstr;j++)
   cout<<'\n'<<a[i][j]<<'\n';
}


#pragma argsused

int main(int argc, char* argv[])
{
int nstr,nstb;
cout<<" Количество строк = ";cin>>nstr;      //ввод кол. строк
cout <<" Количество столбцов = ";cin>>nstb;  //ввод кол. столбцов
//динамическое выделение памяти
int **a=new int *[nstr];//оператор 1
for(int i=0;i<nstr;i++)   //оператор 2
a[i]=new int[nstb];        //оператор 3
if(!a) //проверка факта выделения памяти
{cout<<"\nНедостаточно памяти";
 cout<<"\nНажмите любую клавишу для завершения программы ...\n";
 getch();
 return 0;}
//ввод массива
cout<<"\nВведите массив["<<nstr<<"]["<<nstb<<"]\n";
for(int i=0;i<nstr;i++)
 for(int j=0;j<nstb;j++) cin>>a[i][j]; //оператор 3


 
int nstr2,nstb2;
cout<<" Количество строк = ";cin>>nstr2;      //ввод кол. строк
cout <<" Количество столбцов = ";cin>>nstb2;  //ввод кол. столбцов
//динамическое выделение памяти
int **b=new int *[nstr2];//оператор 1
for(int i=0;i<nstr2;i++)   //оператор 2
b[i]=new int[nstb2];        //оператор 3
if(!b) //проверка факта выделения памяти
{cout<<"\nНедостаточно памяти";
 cout<<"\nНажмите любую клавишу для завершения программы ...\n";
 getch();
 return 0;}
//ввод массива
cout<<"\nВведите массив["<<nstr2<<"]["<<nstb2<<"]\n";
for(int i=0;i<nstr2;i++)
 for(int j=0;j<nstb2;j++) cin>>b[i][j]; //оператор 3

cout<<"\nMinimalnyi sled u matrici №"<<Sled(a, nstr, b, nstb);


Pech(a, nstr);
Pech(b, nstr);

delete [] a; //освобождение памяти
delete [] b; //освобождение памяти

getch();
return 0;
}



Источник: след матрицы

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Полная версия сайта