1. Dashboard
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. HTML - Webmaster Forum
  2. Programmierung - Entwickler Forum
  3. Forum für alle anderen Programmiersprachen

Suche Algorithmus

  • holzverleih
  • 6. Februar 2008 um 17:06
  • holzverleih
    Youngster
    Beiträge
    10
    • 6. Februar 2008 um 17:06
    • #1

    Hallo ich habe eine Datei in der folgendes steht (alles hintereinander nur zur besseren anschauung umformatiert)

    Code
    ## Xs1000;Ys1000;EA0! 
    // Nr1;xP11;yP12;Tp0;AE0;BzE_1;TD0;PnE_1;NE00000000;NA00000000!
    // Nr2;xP11;yP21;Tp0;AE0;BzE_2;TD0;PnE_2;NE00000000;NA00000000!
    // Nr3;xP22;yP11;Tp6;AE2;Bz;TD0;PnAND;NE00000000;NA00000000!
    // Nr4;xP20;yP40;Tp6;AE2;Bz;TD0;PnAND;NE00000000;NA00000000! 
    // Nr5;xP11;yP41;Tp0;AE0;BzE_3;TD0;PnE_3;NE00000000;NA00000000! 
    // Nr6;xP12;yP50;Tp0;AE0;BzE_4;TD0;PnE_4;NE00000000;NA00000000!
    // Nr7;xP32;yP24;Tp8;AE2;Bz;TD0;PnXOR;NE00000000;NA00000000! 
    // Nr8;xP46;yP29;Tp1;AE1;BzA_1;TD0;PnA_1;NE00000000;NA00000000! 
    || Nr1;AP2;vBYA6;bBXB4;PV0! ''19,52;20,50;!
    || Nr2;AP2;vBYA5;bBXA4;PV0! ''18,43;20,44;! 
    || Nr3;AP2;vBYA2;bBXB3;PV0! ''18,23;22,21;! 
    || Nr4;AP2;vBYA1;bBXA3;PV0! ''18,14;22,15;! 
    || Nr5;AP2;vBYA3;bBXA7;PV0! ''29,18;32,28;! 
    || Nr6;AP2;vBYA4;bBXB7;PV0! ''27,47;32,34;! 
    || Nr7;AP2;vBYA7;bBXA8;PV0! ''39,31;46,31;!
    Alles anzeigen

    zur Zeit lese ich die Zeile Segmentweise aus und gebe diese Informationen in einen Puffer dies habe ich so realisiert

    Code
    // Segmentweise die Daten ausschneiden
    			while(Segmentausschneiden(Hauptpuffer,puffer2))
    			{
    				// Zuerst unterscheiden, um welchen Abschnitt es sich handelt
    				AktuellerSegmentTyp = keinen;
    				if (SucheString(&puffer2[0],TEXT("##"),&WertPos))
    					AktuellerSegmentTyp = Infodaten;
    				if (SucheString(&puffer2[0],TEXT("//"),&WertPos))
    					AktuellerSegmentTyp = Blockdaten;
    				if (SucheString(&puffer2[0],TEXT("||"),&WertPos))
    					AktuellerSegmentTyp = Verbindung;
    				if (SucheString(&puffer2[0],TEXT("''"),&WertPos))
    					AktuellerSegmentTyp = Verbindungspunkte;
    
    
    				switch (AktuellerSegmentTyp)
    				{
    Alles anzeigen

    Nun folgenden Problem ich möchte Wissen Wie oft PnE_x und wie oft PnA_x vorkommt.
    In diesen Bsp 4*PnE_x und 1xPnA_x.
    (PnE_1...Pne_x sind eingänge und PnA_1....PnA_X Anzahl der Ausgänge)

    Wie kann ich es schaffen das mir wie in diesen Bsp.: 4 Eingänge und 1 Ausgang vorhanden ist. (ausgegeben wird)

    Hoffe ihr könnt mir helfen
    Gruß Holzverleih

  • The User
    Forum Guru
    Beiträge
    4.044
    • 6. Februar 2008 um 17:11
    • #2

    Modifiziere SucheString doch einfach so, dass gezählt wird und erst am Ende abgebrochen wird? Kann dann int zurückgeben.

    Freiheit bedeutet mehr.

    "Mir ist die gefährliche Freiheit lieber als eine ruhige Knechtschaft."
    (Jean Jacques Rousseau)
    Mein Blog zum Programmieren, GNU/Linux etc.
    Free Chelsea Manning!
    Stolzer Nutzer von KDE, openSUSE und Qt.

  • holzverleih
    Youngster
    Beiträge
    10
    • 6. Februar 2008 um 17:46
    • #3
    Zitat von The User

    Modifiziere SucheString doch einfach so, dass gezählt wird und erst am Ende abgebrochen wird? Kann dann int zurückgeben.

    Das problem ist das ich aber auch die Kompletten Angabe in den Einzelnen Segmenten brauche. Deshalb kann ich nicht Den Suche String modifizieren sonder muss 2 neue Suchstrings einfügen. Aber irgenwie komme ich net drauf wie ich es realiesieren kann der er alle Segmente durch geht und die Anzahl der PnE_x und PnA_x zählt.

  • The User
    Forum Guru
    Beiträge
    4.044
    • 6. Februar 2008 um 19:40
    • #4

    Welche Angaben brauchst du?
    Kannst ja auch einen Vektor von Suchestring zurückgeben lassen, der bei jedem Treffer ge-push_back-t wird.
    Mit size() hast du dann auch die Anzahl.

    The User

    Freiheit bedeutet mehr.

    "Mir ist die gefährliche Freiheit lieber als eine ruhige Knechtschaft."
    (Jean Jacques Rousseau)
    Mein Blog zum Programmieren, GNU/Linux etc.
    Free Chelsea Manning!
    Stolzer Nutzer von KDE, openSUSE und Qt.

  • holzverleih
    Youngster
    Beiträge
    10
    • 6. Februar 2008 um 20:00
    • #5

    ich brauche wie oft PnE_x vorkommt und wie oft PnA_x nur die Anzahl
    wie in obigen Bsp 4 mal Pne_x und 1 mal der Ausgang Pna_x

  • The User
    Forum Guru
    Beiträge
    4.044
    • 6. Februar 2008 um 21:05
    • #6

    int unsigned suche(string pne, string text)
    {
    int unsigned z = 0;
    for(int i = 0; i < strlen(text) - strlen(pne); i++)
    {
    for(j = 0; j < strlen(pne); j++)
    {
    if(text[i + j] != pne[j])
    break;
    }
    if(j == strlen(pne))
    z++;
    }
    return z;
    }

    Wie wäre es mit der Funktion?

    Freiheit bedeutet mehr.

    "Mir ist die gefährliche Freiheit lieber als eine ruhige Knechtschaft."
    (Jean Jacques Rousseau)
    Mein Blog zum Programmieren, GNU/Linux etc.
    Free Chelsea Manning!
    Stolzer Nutzer von KDE, openSUSE und Qt.

Tags

  • text
  • funktion
  • suche
  • problem
  • code
  • zahl
  • datei
  • daten
  • verbindung
  • xp
  • ring
  • string
  • int
  • break
  • vektor
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche