Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > решение задания матриц


Автор: Malburg 25.12.2019, 12:45
Получите вектор, элементы которого равны элементам побочной диагонали матрицы A=(А индекс ik) (i,k =1,2,...,n), предварительно преобразованной следующим образом: в начале каждой строки матрицы находятся положительные элементы, затем следуют нули, а в конце – элементы . Нужна помощь в написание когда. А то я не знаю вообще что делать с заданием

Автор: kapbepucm 27.12.2019, 17:25
Код
#include <iostream>
#include <cstring>
#include <vector>

void sortRow(int* row, const int count)
{
  int i;
  std::vector<int> positive;
  std::vector<int> zero;
  std::vector<int> negative;

  for(i = 0; i < count; ++i)
  {
    if (row[i] > 0)
      positive.push_back(row[i]);
    else if ((row[i] == 0))
      zero.push_back(row[i]);
    else if (row[i] < 0)
      negative.push_back(row[i]);
  }
  positive.insert(positive.end(), zero.begin(), zero.end());
  positive.insert(positive.end(), negative.begin(), negative.end());
  memcpy(row, positive.data(), sizeof(int) * count);
}


int main(int argc, char *argv[])
{
  int j,l;
  int i = 4;
  int& k = i;

  int A[i][k] = {{-5,56,34,-76},
                 {7888,-56,0,33},
                 {3,4,5,6},
                 {9,87,6,5}};
  for (j=0; j < i; ++j)
    sortRow(A[j], k);


  std::vector<int> myVector;
  for (j=0, l=k-1; j < i; ++j, --l)
    myVector.push_back(A[j][l]);

  for (j=0; j < k; j++)
    std::cout << myVector[j] << " ";
  std::cout << std::endl;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)