Avatar billede Slettet bruger
22. september 2001 - 14:58 Der er 11 kommentarer

Sorteringsrutine

Er der en venlig sjæl der vil lave en hurtig sorteringsrutine der sortere ip adresse i et aray?

Foklaring:

Ip adresserne ligger i et string format.
(string enIPaddresse = \"172.24.234.12\")

string ipadressearray[100];

Disse adresser skal så sorteres så den \"mindste\" ip adresse kommer først.

Venligst
Rasmus






Avatar billede kenzo Nybegynder
22. september 2001 - 17:26 #1
Du kan bruge sort som findes i algorithm.

string ipadr[] = {\"123.321.123.44\", \"123.322.123.43\",\"12.322.123.43\"};
sort(ipadr,ipadr+3);

Kenzo
Avatar billede mickni33 Nybegynder
22. september 2001 - 17:36 #2

Ved ikke lige om man kan sorterer string arrays men prøv lige med denne algorithme som jeg har skrevet her jeg har ikke afprøvet den endnu så kom lige med noget response hvis det ikke virker så må jeg have pc\'en frem


void sorter(string x[],int n){
int j;
int k;
  for(j=0;j<n-1;j++)  // husk ingen tuborgklammer
  for(k=j+1;k<n;k++)
    order(x[j+1],x[k]);
}

void order(string number1,string number2){
if(number1>number2){
  string temp=number1;
  number1=number2;
  number2=temp;
}
}



int main(){
const n=10;
string array[10]; // smid ip addresserne ind her

sorter(array,10);  //kalder sorter funktion

  for(int j=0;j<10;j++){  //udskriver array
  cout<<array[j]<<endl;
  cout<<endl;
return 0;
}
Avatar billede Slettet bruger
22. september 2001 - 18:43 #3
Prøvede:

#include <iostream.h>
#include <string>

void sorter(string x[],int n);
void order(string number1,string number2);


void sorter(string x[],int n)
{
int j;
int k;
  for(j=0;j<n-1;j++)  // husk ingen tuborgklammer
  for(k=j+1;k<n;k++)
    order(x[j+1],x[k]);
}

void order(string number1,string number2)
{
    if(number1>number2)
    {
          string temp=number1;
          number1=number2;
          number2=temp;
    }

}



int main()
{
    int const n=10;
    string array[10]; // smid ip addresserne ind her
   
    string a = \"10.128.43.71\";
    array[0] = a;
    string b = \"13.228.43.16\";
    array[1] = b;
    string c = \"12.128.53.71\";
    array[2] = c;
    string d = \"172.128.43.73\";
    array[3] = d;
   
    sorter(array,10);  //kalder sorter funktion    

      for(int j=0;j<10;j++)
      {  //udskriver array
          cout<<array[j]<<endl;
          cout<<endl;
        //return 0;
    }



}


Men sortering virker desværre ikke...
Avatar billede kenzo Nybegynder
22. september 2001 - 18:46 #4
Hvorfor bruger du ikke den generiske sort?
Avatar billede Slettet bruger
22. september 2001 - 18:47 #5
hvilken klasse ligger den i???
Avatar billede kenzo Nybegynder
22. september 2001 - 18:52 #6
Det er en standard c++ rutine

prøv følgende:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(int argc, char* argv[])
{
    const int ipadr_size = 3;
    string ipadr[ipadr_size] = {\"123.321.123.44\", \"123.322.123.43\",\"12.322.123.43\"};
    sort(ipadr,ipadr+ipadr_size);
    for ( int i = 0; i < ipadr_size ; ++i )
        cout << ipadr[i].c_str() << endl;
   
    return 0;
}

Kenzo
Avatar billede kenzo Nybegynder
28. september 2001 - 16:33 #7
Funker det, eller vil du bare ikke af med dine point?
Avatar billede mickni33 Nybegynder
28. september 2001 - 18:44 #8
selvfølgelig funker det :) nogle spørgsmål bliver bare aldrig lukket. Prøv at kigge på gamle spørgsmål på eksperten, de går tilbage til 1999
Avatar billede Slettet bruger
29. september 2001 - 08:30 #9
Rutinen kan ikke kende forskel på \"store\" og \"små\" ip adresser, og kræver vel også en lidt mere kompliceret rutine hvor stor er feks. 192.0.0.1. og 10.254.254.254??? Tænkte derfor at nogen havde stået i samme problem og derfor havde en sådanne en rutine liggende... 
Avatar billede kenzo Nybegynder
01. oktober 2001 - 18:47 #10
Store og små ip adresser???
Er det antallet af hosts i den aktuelle klasse du vil sortere efter?
Avatar billede Slettet bruger
01. oktober 2001 - 22:28 #11
Næhh, jeg vil bare have IP adresserne sorteret, startende med klasse A, sluttende med klasse C.

(som 10.34.23.254, 13.65.2.23, 192.65.24.78)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester