WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   sortieralgorythmen (schattenzahl) (http://www.wcm.at/forum/showthread.php?t=146946)

porli 08.10.2004 17:33

sortieralgorythmen (schattenzahl)
 
helo mädels! *g*

und zwar versuch ich sortieralgorythmus zu "entwickeln"

also es sollen z.B. 15 zahlen eingeben werden und dann ein menü zur auswahl nach welcher stelle sortiert werden soll!

z.B. nach der einer-stelle also

eingegeben: sortiert:
5 10
6 11
7 12
8 13
9 14
10 5
11 6
12 7
13 8
14 9

und ich hab ma auch scho was überlegt!

also ich lass auswählen und diviedier dann die zahlen durch z.B. 10 oder 100 damit nur die stelle überbleibt!

doch dann veränder ich die zahl! und kann sie nicht mehr richtig ausgeben!

jetzt such ich sowas wie eine schattenzahl zum zuordnen!

also ich hab ein feld mit x elementen und kopier dieses. diviedier das zweite feld und sortier dieses und jetzt muss ich irgendwie das origninal feld in der sortierten reihenfolge ausgeben! nur wie!?!

is das halbwegs verständlich!?!

pong 08.10.2004 20:19

kannst mal ein komplettes kommentiertes Beispiel vorzeigen? Ich komme leider nicht ganz mit, oder meinst du mit "Schattenzahl" einen Index?

pong

porli 08.10.2004 20:35

natürlich! ich weiß nicht genau wie ichs erklären soll!

das is mal das up zum sortieren
Code:


void sort(int upstelle,int upanzahl,int *p_feld)
{
  int i = 0;
  int j = 0;
  int tmp = 0;

  for (i=0;i<upanzahl;i++)
  {
      p_feld[i]=((p_feld[i])/(upstelle));
  }

  for (i=0; i<upanzahl; i++)
        {
                for (j=i; j<upanzahl; j++)
                {
                        if ((p_feld[i])>(p_feld[j]))
                        {
                                tmp=p_feld[i];
                                p_feld[i]=p_feld[j];
                                p_feld[j]=tmp;
                        }
                }
  }

}

das funzt prima für ganzzahliges sortieren! upstelle is beim sortieren nach der zehnerstelle z.B. 10!


es sortieren würd scho funktionieren nur brauch ich wieder die ursprünglichen zahlen wie sie im feld drinstehn allerdings in der richtigen reihenfolge.

probier noch ein bsp:

unsortiert:
1,2,3,4,5,6,7,8,9,10,11,12,13,14

sortiert nach einer-Stelle:
10,1,11,2,12,3,13,4,14,5,6,7,8,9

flinx 08.10.2004 20:58

Für was schreibst eigentlich die Werte im Array neu?
Was du willst, solltest ja mit
Code:

if ((p_feld[i]/(upstelle))>(p_feld[j]/(upstelle)))
auch erreichen, ohne die Arrayinhalte zu ändern.

harry3 08.10.2004 22:50

Du musst aber beachten: Wenn du nach 100er Stelle ordnest, so kann es ja sein, dass viele Zahlen gleich sind(z.B. 451 und 478 und 410 usw...). Du musst also neben der 100er Stelle auch noch die Stellen nachher überprüfen um zu einem vernünftigen Ergebnis zu kommen.

Eigentlich müsstest du mit 1 Array auskommen.

Jetzt lass ich dich mal ein bisschen düffteln, das bringt einen beim Programmieren am meisten Weiter.
Wenn du's gar nicht auf die Reihe bekommst, dann melde dich wieder. Aber vorerst will ich keine Codes reinstellen. Denn sonst lernt du ja nichts;)



Grüße,
Harri

porli 10.10.2004 19:58

wie schaff ich es eine zahl nach der einerstelle abzuschneiden!
also so dass ich nur mehr die einerstelle hab!
gibts da nicht irgendsowas!?! mod oda so?!

harry3 12.10.2004 19:54

Hallo!
 
int eingabe=386, einerstelle=0;
einerstelle=eingabe%10;

In der Variablen Einerstelle steht nun die Einerstelle der Zahl eingabe. (also im Bsp. eine 6)


Grüße,
Harri

porli 13.10.2004 19:53

bin auch scho draufkommen! danke!
jetzt passt alles!


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag