Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2015, 19:28   #1
ololoyev57
Новичок
Джуниор
 
Регистрация: 24.05.2015
Сообщений: 2
По умолчанию

Задана матрица (двумерный массив) A размером N x М, состоящая из действительных элементов. Числа M и N вводятся с клавиатуры. Для задания исходной матрицы предусмотреть ввод с клавиатуры или ввод с помощью датчика случайных чисел. Где это необходимо ввести квадратную матрицу. Во всех вариантах вывести исходную матрицу в общепринятом виде и необходимые результаты работы программы.

Найти сумму максимальных элементов каждого столбца матрицы и координаты максимумов. Сформировать вектор из максимумов и упорядочить его по возрастанию. Вывести на экран упорядоченный и неупорядоченный векторы, полученную сумму.

Помогите решить данную задачу, пожалуйста.

Есть частичное решение задачи, найдены векторы и упорядочены, выведены. Нужно найти сумму элементов каждого столбца и координаты максимумов, и еще вывести это все на экран. Здесь в задаче используются cout<< cin>> и указатели массива - мне хотелось бы через printf, scanf и без использования указателей.
Код:
#include "iostream"
#include <ctime>  
#include <vector>
#include<iterator>
 
#include "iomanip"
 
using namespace std;
 
int main()
{   
 setlocale(LC_ALL,"Rus");
 srand(time(0)); // генерация случайных чисел 
 int N,M,vibor,Max=-1000;
 cout<<"Введите кол-во строк в матрице N=";
 cin>>N;
 cout<<"\nВведите кол-во столбцов в матрице M=";
 cin>>M;
 // объявление двумерного динамического массива
 float **ptrarray = new float* [N];      // строки в массиве   
  for (int count = 0; count < N; count++)        
    ptrarray[count] = new float [M];    //  столбцы 
 cout<<"\nВведите 0 если хотите вручную заполнить матрицу\n"
       "или любую другую цифру если хотите авто заполнение\n"
       "Выбор:";
 cin>>vibor;
  if(vibor!=0)
   {
    for (int i = 0; i < N; i++)     
     for (int j = 0; j < M; j++)             
         ptrarray[i][j]=rand() % 100;
   }
  else
   {
       cout<<"\nЗаполняйте матрицу.\n";
     for (int i = 0; i < N; i++)     
      for (int j = 0; j < M; j++)
        { cout<<"элемент:["<<i<<"]["<<j<<"]=";
          cin>>ptrarray[i][j];}
   }
  cout<<"\nВаша матрица.\n";
   for (int i = 0; i < N; i++)  {   
      for (int j = 0; j < M; j++)
          cout<<setw(3)<<ptrarray[i][j];
      cout<<endl;}
cout<<endl<<endl;
   int *a=new int[N];                    //Буферный массив
for (int i = 0; i < N; i++) 
{a[i]=-1000;}
for (int k = 0;  k< N+1; k++){
     for (int i = 0; i < N; i++)  
         for (int j = 0; j < k;j++)
           {  
               if(ptrarray[i][j]>a[j])
                 {
                    a[j]=ptrarray[i][j];
                 }
           }
}    
 
vector<int> my_vector;   //создаем вектор
//vector<int>::iterator the_iterator;
cout<<"Неупорядочный вектор:\n";
    for (int i=0; i < N; i++) {   //заполним буферным массивом
      my_vector.push_back(a[i]);
    }
 
 
    for (int i=0; i < N; i++) {   //выводим
      cout<<setw(3)<<my_vector[i];
    }
cout<<endl<<endl;
cout<<"Упорядочный вектор:\n";
vector<int> my_vec;    //создаем вектор который будет упорядоченным
    for (int i=0; i < N; i++) {   //заполним буферным массивом
       my_vec.push_back(a[i]);
    }
for (int j=0; j < N-1; j++)    //Сортируем
 {for (int i=0; i < N-1; i++) {   
       if(my_vec[i]>my_vec[i+1] )
       {
          int temp=my_vec[i];
          my_vec[i]=my_vec[i+1];
          my_vec[i+1]=temp;
       }
    }
 }
    for (int i=0; i < N; i++) {   //выводим
      cout<<setw(3)<<my_vec[i];
    }
    cout<<endl<<endl;
  delete a; 
  // высвобождение памяти отводимой под двумерный динамический массив:   
  for (int count = 0; count < N; count++)       
     delete [] ptrarray[count]; 
 system("pause");
 return 0;
}

Последний раз редактировалось Stilet; 24.05.2015 в 19:33.
ololoyev57 вне форума Ответить с цитированием
Старый 24.05.2015, 20:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Найти сумму максимальных элементов каждого столбца матрицы и координаты максимумов. Сформировать вектор из максимумов
Код:
vector <float> vmax;
float m
    for (int i = 0; i < M; i++) {  
     m=ptrarray[0][i];
     for (int j = 0; j < N; j++)  m=(ptrarray[j][i]>m)?ptrarray[j][i]:m;
     vmax.push_back(m);
   }
Цитата:
упорядочить его по возрастанию
Код:
std::sort (vmax.begin(), vmax.end());
Вывести вектор до упорядочивания и после сможешь?
Вот так:
Код:
for(vector<float>::iterator itr=vmax.begin();itr!=vmax.end();itr++) cout<<*itr<<'\t';
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить строки матрицы по возрастанию их первых элементов Андрей_Андрей C++ Builder 1 10.04.2015 20:01
Сформировать массив а[1..12], упорядоченный по возрастанию. Если он содержит заданное число, удалить его из массива schibeki Паскаль, Turbo Pascal, PascalABC.NET 3 30.01.2014 21:43
Delphi. упорядочить столбцы матрицы по возрастанию сумм элементов этого столбца ДваДваВо7 Помощь студентам 2 09.02.2011 16:40
Упорядочить колонки матрицы по возрастанию wlll Помощь студентам 8 27.11.2010 09:06
Упорядочить колонки матрицы по возрастанию wlll Помощь студентам 2 25.11.2010 17:14