Тема: Задача на C.(Допоможіть)
Задана матриця A(4,4).Посортувати елементи матриці , які лежать вище головної діагоналі (включаючи головну діагональ) за спаданням та записати їх , як вектор.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Задача на C.(Допоможіть)
Для відправлення відповіді ви повинні увійти або зареєструватися
Задана матриця A(4,4).Посортувати елементи матриці , які лежать вище головної діагоналі (включаючи головну діагональ) за спаданням та записати їх , як вектор.
Є думка просто посортувати одновимірний масив із елементів ,які вище діагоналі , із зображення ,але це здається занадто простим.
Є думка, згідно пункту 3.5
Ось , це поки що весь код ,який я написав , тут я зупинився на тому ,що я визначаю елементи ,які знаходяться вище головної діагоналі.
І скільки ж ви збираєтеся платити тим, хто вам допомагатиме, за лікування очей?
Ну то збирайте ці елементи у вектор і сортуйте. В чому проблема?
У тому і проблема ,що не знаю як зібрати їх у вектор.
Можете підсказати або кинути посилання на статтю , зараз сиджу і моніторю українські ,англійські і російські форуми, поки що без успіху.
Що таке головна діагональ матриці, знаєте?
Так , вивчав вищу математику.
Вивести залежність кількості елементів вище головної діагоналі, включно з нею, від розміру матриці можете?
Відфільтрувати непотрібні елементи можете?
Створити одновимірний масив елементів (вектор), довжиною з пункту 1, можете?
Відсортувати елементи в одновимірному масиві можете?
Вивести той відсортований масив можете?
Якщо так - то пишіть як саме, можна текстом?
який в вектор в с?
тут треба функція, що сортує одновимірний масив за посиланням А довжиною L з позиції Р
який в вектор в с?
Взагалі, вектор - це математичний об'єкт.
ur_naz написав:який в вектор в с?
Взагалі, вектор - це математичний об'єкт.
Узагалі, Сонце сходить на сході, але до чого тут це?
Потрібно відсортувати одновимірних масив із 10 елементів , це легко, наприклад бульбашки, я не можу задати щоб елементи вище головної діагоналі були елементами цього масиву.
https://onlinegdb.com/B19k9GhnH
Ось я написав код ,але я ось так задав елементи вектора, тому що мені задана матриця 4х4 і її розмірність мінятися не буде , елементи її теж сталі і далі просто відсортував цей вектор. Можете підсказати інше рішення.
Потрібно відсортувати одновимірних масив із 10 елементів , це легко, наприклад бульбашки, я не можу задати щоб елементи вище головної діагоналі були елементами цього масиву.
Дивіться, якщо проходити матрицю в двох циклах, то в першому рядку всі стовпчики потраплять у вектор, у другому всі крім першого, у третьому всі крім першого і другого. Відчуваєте залежність?
п.с. розпишіть на листочку вручну,
|a11, a12, a13, a14|
|a21, a22, a23, a24|
|a31, a32, a33, a34|
|a41, a42, a43, a44|
Які елементи потраплять у вектор?
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 ось ці елементи попадають у вектор , а і присвоїв їм місця у цьому векторі
Для початку - ви бачите, що вираз у циклі (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; але якщо дуже кортить не виділяти зайвої пам'яті - то сума арифметичної прогресії має вам допомогти.
П.С. У першій формулі таки помилка, але біс із ним. Всі користуються другим способом. Потім додумаю, яка там формула.
в с нема векторів, тобі потрібен масив розміром п*(п+1)/2
Для відправлення відповіді ви повинні увійти або зареєструватися