1 Востаннє редагувалося krupkanazar18 (14.11.2020 13:59:29)

Тема: Проблема при сортуванні методом Шелла двох вимірного масива

Завдання
Усі елементи кожної непарної діагоналі, що паралельні побічній діагоналі квадратної матриці. Спосіб сортування за спаданням. Методом сортування Шелла. Допоможіть реалізувати код на с++

2

Re: Проблема при сортуванні методом Шелла двох вимірного масива

неправильно сортируєш двох вимірний масив методом шелла

3

Re: Проблема при сортуванні методом Шелла двох вимірного масива

krupkanazar18 написав:

Завдання
Усі елементи кожної непарної діагоналі, що паралельні побічній діагоналі квадратної матриці. Спосіб сортування за спаданням. Методом сортування Шелла. Допоможіть реалізувати код на с++


Дуже змістовна умова, особливо перше речення. Поясніть конкретно що повинна робити програма, що вона робить на даний момент і які питання у вас виникають.

4

Re: Проблема при сортуванні методом Шелла двох вимірного масива

Допоможіть будь-ласка. Потрібно всі елементи кожної непарної діагоналі, що паралельні побічній діагоналі квадратної матриці. Відсортувати за спаданням. Методом сортування Шелла.

#include <time.h>
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("cls");
srand(time(NULL));
int pi, pj, i, j=0, k, s=0, n, d, x=1, nm, q=0;
cout << "mass[n][n] n = ";
cin >> n;
nm=n*n;
int matr[n][n], mass[nm];
cout << endl << endl;
for (pi = 0; pi < n; pi++)
{
    for (pj = 0; pj < n; pj++)
    {
        q++;
        matr[pi][pj]=mass[nm]=rand()%100-50;
        printf("%3.0d  ", matr[pi][pj]);
    }
cout << endl;
}
for (int i = 0; i < n+n-1; i++)
{
    if (n+n-1%2==0)
    {
        if (x<(n+n-1)/2)
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x++;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x++;                
            }
        }
        else
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x--;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x--;
            }
        }
    }
    else
    {
        if (x<=(n+n-1)/2)
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x++;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x++;                
            }
        }
        else
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x--;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x--;
            }
        }
    }
}

for (int z = 0; z < nm; z++)
{
    for (k = 0; k < (n+n-1); k++)
    {
        {
            if (k<n)
            {
                    pi=k;
                pj=0;
            }
            else
            {
                pi=n-1;
                pj=k-n+1;
               }
               for (; (0<=pi)&(pj<n); pi--, pj++)
              {
                for (i = 0; i < nm; i++)
                {
                     matr[pi][pj]=mass[z];
                   }
              }
        }
        
    }
}
cout << endl;
for (pi = 0; pi < n; pi++)
{
    for (pj = 0; pj < n; pj++)
    {
        printf("%3.0d  ", matr[pi][pj]);
    }
cout << endl;
}
cout << endl;
system("pause");
return 0;
}

5

Re: Проблема при сортуванні методом Шелла двох вимірного масива

Не допомагайте цьому ідіоту, який до того ж власні повідомлення видаляє.

6

Re: Проблема при сортуванні методом Шелла двох вимірного масива

Допоможіть знайти помилки в даному коді. Завдання є таким у двох вимірному квадратному масиві елементи кожної непарної діагоналі потрібно відсортувати за спаданням методом Шелла.

#include <time.h>
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("cls");
srand(time(NULL));
int pi, pj, i, j=0, k, s=0, n, d, x=1, nm, q=0;
cout << "mass[n][n] n = ";
cin >> n;
nm=n*n;
int matr[n][n], mass[nm];
cout << endl << endl;
for (pi = 0; pi < n; pi++)
{
    for (pj = 0; pj < n; pj++)
    {
        q++;
        matr[pi][pj]=mass[nm]=rand()%100-50;
        printf("%3.0d  ", matr[pi][pj]);
    }
cout << endl;
}
for (int i = 0; i < n+n-1; i++)
{
    if (n+n-1%2==0)
    {
        if (x<(n+n-1)/2)
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x++;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x++;                
            }
        }
        else
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x--;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x--;
            }
        }
    }
    else
    {
        if (x<=(n+n-1)/2)
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x++;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x++;                
            }
        }
        else
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x--;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x--;
            }
        }
    }
}

for (int z = 0; z < nm; z++)
{
    for (k = 0; k < (n+n-1); k++)
    {
        {
            if (k<n)
            {
                    pi=k;
                pj=0;
            }
            else
            {
                pi=n-1;
                pj=k-n+1;
               }
               for (; (0<=pi)&(pj<n); pi--, pj++)
              {
                for (i = 0; i < nm; i++)
                {
                     matr[pi][pj]=mass[z];
                   }
              }
        }
        
    }
}
cout << endl;
for (pi = 0; pi < n; pi++)
{
    for (pj = 0; pj < n; pj++)
    {
        printf("%3.0d  ", matr[pi][pj]);
    }
cout << endl;
}
cout << endl;
system("pause");
return 0;
}

7

Re: Проблема при сортуванні методом Шелла двох вимірного масива

П.3.6 Правил

8

Re: Проблема при сортуванні методом Шелла двох вимірного масива

П 2.1 правил - забанив мульта.