@ashot_powershot

Не правильно сортируется параллель под побочной диагональю. Что не так и что надо исправить?

Не могу понять как сделать, чтобы сортировалась параллель под побочной диагональю по возрастанию.
#include<iostream>
#include <cstring>
#include<cmath>
#include<cstdlib>
#include<conio.h>
#include<ctime>
#include<windows.h>

using namespace std;


int main()
{
	setlocale(LC_ALL, "RUS");
	srand(time(NULL));

	const int n = 5;
	double a[n][n], buf;
	int k = 1;

	cout << "Массив a" << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			a[i][j] = rand() % 20 - 10;
			cout << "a[" << i << "][" << j << "] = " << a[i][j] << "\t";
		}
		cout << endl;
		cout << endl;
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = n - 1; j > i; j--)
		{
			if (a[i][n - 1 - i + k] > a[i+1][n - 1 - i + k-1])
			if (a[5][j] > a[5][j - 1])
			{
				buf = a[i][n - 1 - i + k];
				a[i][n - 1 - i + k] = a[i + 1][n - 1 - i + k - 1];
				a[i + 1][n - 1 - i + k - 1] = buf;
			}
		}
	}
	cout << endl;
	cout << "Отсортированная параллель побочной диагонали расположенной под диагональю" << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << "a[" << i << "][" << j << "] = " << a[i][j] << "\t";
		}
		cout << endl;
		cout << endl;
	}



	system("PAUSE");
}
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
Gremlin92
@Gremlin92
Целеустремленный
Лови такой код
//g++  7.4.0
https://qna.habr.com/q/1088148
#include<iostream>
#include <cstring>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<vector>
#include <bits/stdc++.h>
using namespace std;


int main()
{
  setlocale(LC_ALL, "RUS");
  srand(time(NULL));

  const int n = 5;
  double a[n][n], buf;
  int k = 1;

  cout << "Массив a" << endl;
  for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < n; j++)
    {
      a[i][j] = rand() % 20 - 10;
      cout << "a[" << i << "][" << j << "] = " << a[i][j] << "\t";
    }
    cout << endl;
    cout << endl;
  }
    vector<double> vd;
  for (int i = 0; i < n; i++)
  {
    for (int j = 0;j<n;j++)
    {
      if(i==j)
          break;
        if(i==j+1)
            vd.push_back(a[i][j]);
    }
  }
   sort(vd.begin(), vd.end());
  for(int i=0;i<vd.size();i++)
      
  cout <<vd[i]<< endl;
    k=0;
    for (int i = 0; i < n; i++)
  {
    for (int j = 0;j<n;j++)
    {
      if(i==j)
          break;
        if(i==j+1){
            a[i][j] = vd[k];
            k++;
        }
    }
  }
  cout << "Отсортированная параллель побочной диагонали расположенной под диагональю" << endl;
  for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < n; j++)
    {
      cout << "a[" << i << "][" << j << "] = " << a[i][j] << "\t";
    }
    cout << endl;
    cout << endl;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вы этот код хотя бы раз целиком прочитали? Кажду строчку? Вот поствьте перед мониторо кружку. Представьте, что это ваш друг-студент, который пытается списать у вас задание, но ничего не понимает. Вот объясните ему, строчка-за-строчкой, что происходит в вашем коде, что он должен делать, как должен работать.

Вам должно сразу стать понятно, что в одной строчке написан полный, абсолютный, дисстилированный бред.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы