Тема: Задача на C.(Допоможіть)

Задана матриця A(4,4).Посортувати елементи матриці , які лежать вище головної діагоналі (включаючи головну діагональ) за спаданням та записати їх , як вектор.

2

Re: Задача на C.(Допоможіть)

https://replace.org.ua/uploads/images/9676/15fb04520b763b7cc041bedac79abf44.jpg
Є думка просто посортувати одновимірний масив із елементів ,які вище діагоналі , із зображення ,але це здається занадто простим.

3

Re: Задача на C.(Допоможіть)

https://replace.org.ua/uploads/images/210/64eeb31d296fb8ca4a8744c47ebaabd1.jpg
Є думка, згідно пункту 3.5

Подякували: /KIT\, ostap34PHP, HetmanNet, leofun01, 221VOLT, grinyuk3096

4

Re: Задача на C.(Допоможіть)

Ось , це поки що весь код ,який я написав , тут я зупинився на тому ,що я визначаю елементи ,які знаходяться вище головної діагоналі.
https://replace.org.ua/uploads/images/9676/af8e5b837ac348e563e5ae3162672a51.jpg

5

Re: Задача на C.(Допоможіть)

І скільки ж ви збираєтеся платити тим, хто вам допомагатиме, за лікування очей?

Подякували: grinyuk309, 221VOLT2

6

Re: Задача на C.(Допоможіть)

https://onlinegdb.com/Bk7AvZo2r

7

Re: Задача на C.(Допоможіть)

Ну то збирайте ці елементи у вектор і сортуйте. В чому проблема?

8

Re: Задача на C.(Допоможіть)

У тому і проблема ,що не знаю як зібрати їх у вектор.
Можете підсказати або кинути посилання на статтю , зараз сиджу і моніторю  українські ,англійські і російські  форуми, поки що без успіху.

9

Re: Задача на C.(Допоможіть)

Що таке головна діагональ матриці, знаєте?

Прихований текст

В вікіпедії є стаття на цю тему

10

Re: Задача на C.(Допоможіть)

Так , вивчав вищу математику.

11

Re: Задача на C.(Допоможіть)

Oleg Kulynych написав:

Так , вивчав вищу математику.

  1. Вивести залежність кількості елементів вище головної діагоналі, включно з нею, від розміру матриці можете?

  2. Відфільтрувати непотрібні елементи можете?

  3. Створити одновимірний масив елементів (вектор), довжиною з пункту 1, можете?

  4. Відсортувати елементи в одновимірному масиві можете?

  5. Вивести той відсортований масив можете?

Якщо так - то пишіть як саме, можна текстом?

Подякували: koala, pluszz, leofun013

12

Re: Задача на C.(Допоможіть)

який в вектор в с?
тут треба функція, що сортує одновимірний масив за посиланням А довжиною L з позиції Р

13

Re: Задача на C.(Допоможіть)

ur_naz написав:

який в вектор в с?

Взагалі, вектор - це математичний об'єкт.

14

Re: Задача на C.(Допоможіть)

adziri написав:
ur_naz написав:

який в вектор в с?

Взагалі, вектор - це математичний об'єкт.

Узагалі, Сонце сходить на сході, але до чого тут це?

15

Re: Задача на C.(Допоможіть)

Потрібно відсортувати  одновимірних масив із 10 елементів , це легко, наприклад бульбашки, я не можу задати щоб елементи вище головної діагоналі були елементами цього масиву.

16

Re: Задача на C.(Допоможіть)

https://onlinegdb.com/B19k9GhnH
Ось я написав код ,але я ось так задав елементи вектора, тому що мені задана матриця 4х4 і її розмірність мінятися не буде , елементи її теж сталі і далі просто відсортував цей вектор. Можете підсказати інше рішення.

17

Re: Задача на C.(Допоможіть)

Oleg Kulynych написав:

Потрібно відсортувати  одновимірних масив із 10 елементів , це легко, наприклад бульбашки, я не можу задати щоб елементи вище головної діагоналі були елементами цього масиву.

Дивіться, якщо проходити матрицю в двох циклах, то в першому рядку всі стовпчики потраплять у вектор, у другому всі крім першого, у третьому всі крім першого і другого. Відчуваєте залежність?

п.с. розпишіть на листочку вручну,

|a11, a12, a13, a14|
|a21, a22, a23, a24|
|a31, a32, a33, a34|
|a41, a42, a43, a44|

Які елементи потраплять у вектор?

18

Re: Задача на C.(Допоможіть)

Chemist-i написав:
Oleg Kulynych написав:

Потрібно відсортувати  одновимірних масив із 10 елементів , це легко, наприклад бульбашки, я не можу задати щоб елементи вище головної діагоналі були елементами цього масиву.

Дивіться, якщо проходити матрицю в двох циклах, то в першому рядку всі стовпчики потраплять у вектор, у другому всі крім першого, у третьому всі крім першого і другого. Відчуваєте залежність?

п.с. розпишіть на листочку вручну,

|a11, a12, a13, a14|
|a21, a22, a23, a24|
|a31, a32, a33, a34|
|a41, a42, a43, a44|

Які елементи потраплять у вектор?

a11,a12,a13,a14,a22,a23,a24,a33,a34,a44 ось ці елементи попадають у вектор , а і присвоїв їм місця у цьому векторі

19 Востаннє редагувалося koala (27.11.2019 18:50:49)

Re: Задача на C.(Допоможіть)

Для початку - ви бачите, що вираз у циклі (10 операцій = ) не залежить від i та j і, відповідно, його можна сміливо винести з циклу?
Якщо так - добре. Якщо ні - подивіться ще раз. Тепер - як робити правильно.
Спосіб №1 (більш математичний). Встановіть залежність між індексами A та B, приблизно таку:
x = f(i,j);//наша залежність
B[x] = A[i ][j];
Короткий розрахунок показує, що для тих i, що нам підходять
f(i,j) = i*(довжина рядка-1)+j;
відповідно

for(i=...)
    for(j=...)
        if(елемент головної діагоналі і вище)
            B[j*(довжина рядка-1)+i] = A[i][j];

Спосіб 2 (програмістський).
Нам завжди треба буде дописувати в кінець записаної частини масиву B. Тому створімо ще одну змінну, скажімо k (правильніше було б її назвати size_b), і будемо кожного разу, коли додали щось у масив B, її збільшувати:

int k = 0;
for(i=...)
    for(j=...)
        if(елемент головної діагоналі і вище){
            B[k] = A[i][j];
            k++;
        }

k++ можна сміливо внести у попередній вираз:

int k = 0;
for(i=...)
    for(j=...)
        if(елемент головної діагоналі і вище)
            B[k++] = A[i][j];

Лишилося тільки знайти розмір B залежно від розмірів A. В принципі, ви не сильно втратите, якщо візьмете B такого ж розміру, як і A; але якщо дуже кортить не виділяти зайвої пам'яті - то сума арифметичної прогресії має вам допомогти.

П.С. У першій формулі таки помилка, але біс із ним. Всі користуються другим способом. Потім додумаю, яка там формула.

Подякували: Oleg Kulynych1

20

Re: Задача на C.(Допоможіть)

в с нема векторів, тобі потрібен масив розміром п*(п+1)/2