BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Двумерни масиви? Сортиране?
shushu2
Публикувано на: 29-11-2017, 23:18
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 5
Регистриран на: 29.11.17



Здравейте. Имам въпрос. Работя C++.
Та имам следната задача:
Съставете програма, в която да се въведат елементите( цели числа ) на двумерен масив с n-брой редове и 10 колони, като n се въвежда от клавиатурата. След това да се състави нов масив, като се взимат 7-те най-големи елемента от всеки ред и те стават ред във втория масив.

Пример:
Имаме
5 8 9 1 5 6 3 2 4 7
1 3 8 9 5 7 8 6 2 4
6 9 8 5 4 7 8 1 5 4
...
...

И след като сме установили кои са 7-те най-големи елемента на всеки ред, се създава нов масив, който изглежда така:
5 8 9 5 6 4 7
8 9 5 7 8 6 4
6 9 8 5 7 8 5
...
...

(Може и в новия масив да са подредени по ред числата, няма значение )
Знам за едномерни масиви, че може така от един масив да се прави втори в следствие на някакво условие, но не съм сигурна дали и за двумерни се прави по подобен начин , а и не знам как да изведа 7-те най-големи елемента на всеки ред. icon_confused.gif
Дано ме разбрахте какво точно искам да кажа.



Мислех си да сортирам масива по редове във низходящ ред (от най-голямото към най-малкото) и накрая на същия този масив да изведа елементите до 7-ма колона. Обаче идва проблема, че не знам как да сортирам елементи на двумерен масив по редове. Може би това е по-лесния вариант на задачата. Търсех и в интернет как да сортирам двумерен масив, но е написано доста сложно за мен и не разбирам как точно става.
PMEmail Poster
Top
saruman
Публикувано на: 29-11-2017, 23:27
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1662
Регистриран на: 21.07.10



Идеята на тази задача,е че като обхождаш трябва да създадеш масив с индексите на елементите на търсения масив,не трябва да сортираш,дано да съм помогнал,успех!

Това мнение е било редактирано от saruman на 29-11-2017, 23:28


--------------------
http://www.wefunkradio.com/radio/

Remember,remember the fifth of November
PMEmail Poster
Top
miron
Публикувано на: 30-11-2017, 08:51
Quote Post



Име: Мирослав Николов
Група: Потребител
Ранг: Редовен член

Мнения: 565
Регистриран на: 26.04.05



Може да разглеждаш всеки ред на двумерния масив като едномерен масив.
PM
Top
korsarq
Публикувано на: 30-11-2017, 09:54
Quote Post



Име: Мартин Чекуров
Група: Потребител
Ранг: Активен

Мнения: 183
Регистриран на: 30.11.16



Първия елемент на всеки ред на двумерния масив е едномерен масив, а останалите елементи на тези редове са елементите на тези масиви.Така че можеш да направиш нещо такова:
псевдо код
CODE

int array[rows][columns];
while(i < rows){

     sort(arr[i++]);
}


Така сортираш едномерни масиви

Това мнение е било редактирано от korsarq на 30-11-2017, 09:56


--------------------
It gladdens me to know that Odin prepares for a feast.
Soon I shall be drinking ale from curved horns.
This hero that comes into Valhalla does not lament his death!
I shall not enter Odin's hall with fear.My death comes without apology!
And I welcome the valkyries to summon me home!
PMEmail Poster
Top
shushu2
Публикувано на: 02-12-2017, 12:17
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 5
Регистриран на: 29.11.17



Благодаря. Опитах и така, но сортирва първите 3 елемента и другите не ги отразява изобщо. А пък самото сортиране ми е вярно.

CODE



void Sort(int X[100], int y)
   { int p;
         for(int i=0;i<y-1;i++)
        for(int j=0;j<y-1-i;j++)
                if(X[j]<X[j+1])
                     {p=X[j+1];
                      X[j+1]=X[j];
                        X[j]=p; }
      }      
             
//....

for(i=0;i<n;i++)
    Sort(A[i],n);


PMEmail Poster
Top
georgib1
Публикувано на: 02-12-2017, 15:20
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 891
Регистриран на: 26.09.16



Ето едно бавно и неефикасно решение, което би свършили работа.Сортираш всеки ред от двумерния масив низходящо.След това си правиш нов двумерен масив и запълваш всеки ред с първите седем елемента от съответния ред на другия масив.

Това мнение е било редактирано от georgib1 на 02-12-2017, 15:25
PMEmail Poster
Top
shushu2
  Публикувано на: 02-12-2017, 17:46
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 5
Регистриран на: 29.11.17



QUOTE (georgib1 @ 02-12-2017, 15:20)
Ето едно бавно и неефикасно решение, което би свършили работа.Сортираш всеки ред от двумерния масив низходящо.След това си правиш нов двумерен масив и  запълваш всеки ред  с първите седем елемента от съответния ред на другия масив.

Точно това се опитвам да направя, обаче сортировката бърка нещата ;д По-горе писах какво съм направила (не работи) и не знам къде е проблема

Даже мисля само да сортирам всеки ред от началния масив и просто при извеждането да направя да не извежда последните 3 колони (т.е. последните три елемента от всеки ред)

Всичко супер, само сортировката ме спъва

Това мнение е било редактирано от shushu2 на 02-12-2017, 17:48
PMEmail Poster
Top
georgib1
Публикувано на: 02-12-2017, 20:23
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 891
Регистриран на: 26.09.16



...(изказах се неодготвен)

Това мнение е било редактирано от georgib1 на 02-12-2017, 20:37
PMEmail Poster
Top
georgib1
Публикувано на: 02-12-2017, 20:29
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 891
Регистриран на: 26.09.16



Също така
CODE
for (int I = 0;i<y-1;i++)

Ако y е броя на елементите и е равно на 5, тоя няма да извърти толко пъти, колкото са елементите.
PMEmail Poster
Top
Дон Реба
Публикувано на: 03-12-2017, 08:34
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 5818
Регистриран на: 11.11.06



пробвай for(int i=0;i<y-1;i++) for(int j=i+1;j<y;j++)
PM
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0