Probleme mit Funktion



  • Hi hab noch ein kleines Problem:

    wenn ich diese Funktion aufrufe:

    void Seriei()
    {
        Serie1 =0;
        for(int i =0;i<max;i++)
        {
            if(Nummern[i] == 1 && Nummern[i+1] == 1 && Nummern[i+2] == 1 && Nummern[i+3] == 5 && Nummern[i+4] == 5 && Nummern[i+5] == 5 && Nummern[i+6] == 10)
            {
                Nummern[i] = 0;
                Nummern[i+1] = 0;
                Nummern[i+2] = 0;
                Nummern[i+3] = 0;
                Nummern[i+4] = 0;
                Nummern[i+5] = 0;
                Nummern[i+6] = 0;
                i = i + 6;
                Serie1++;
    
            }
        }
    
    }
    

    ist alles noch so wie es vorher war!! Die Einträge im array werden nicht null, sondern bleiben so wie sie sind!! Was mach ich da falsch?



  • Die Klammern machen den Unterschied: 😉

    #include <iostream>
    using namespace std;
    
    void Seriei()
    {
        //begin Definitionen
        const int max = 7 ;
        int Serie1    = 0 ;
        int Nummern[max]  ;
        Nummern[0] =  1   ;
        Nummern[1] =  1   ;
        Nummern[2] =  1   ;
        Nummern[3] =  5   ;
        Nummern[4] =  5   ;
        Nummern[5] =  5   ;
        Nummern[6] = 10   ;
        //end Definitionen
    
        for( int i = 0; i<max; i++ )
        {
            if( ( Nummern[i]   ==  1 ) && 
                ( Nummern[i+1] ==  1 ) && 
                ( Nummern[i+2] ==  1 ) && 
                ( Nummern[i+3] ==  5 ) && 
                ( Nummern[i+4] ==  5 ) && 
                ( Nummern[i+5] ==  5 ) && 
                ( Nummern[i+6] == 10 ) 
              )
            {
                Nummern[i]   = 0;
                Nummern[i+1] = 0;
                Nummern[i+2] = 0;
                Nummern[i+3] = 0;
                Nummern[i+4] = 0;
                Nummern[i+5] = 0;
                Nummern[i+6] = 0;
                i = i + 6;
                Serie1++;
            }
        }
    
        //Ausgaberoutine zum Testen
        for( i = 0; i<max; i++)  cout << Nummern[i] << endl;
    } 
    
    int main()
    {
        Seriei();
        return 0;
    }
    

    [ Dieser Beitrag wurde am 30.11.2002 um 04:05 Uhr von Erhard Henkes editiert. ]



  • Original erstellt von Erhard Henkes:
    Die Klammern machen den Unterschied:

    Leider nein. == geht vor &&.

    @n00b:
    Der Fehler muss an anderer Stelle liegen. Zeig doch mal, wo Nummern[] gefüllt und Seriei aufgerufen wird.



  • Alos ich hab ein Array in dem stehen die Zahlen 0,1,5,10,20,30,50,100 wild durcheinander. wenn 1,1,1,5,5,5,10 hintereinander kommen ist das eine Serie I. Nun möchte ich herausfinden wieviele Serien I im Array sind(es gibt noch weitere Serien, abr das Prinzip ist ja immer das selbe). Und es soll noch ausgegeben werden wieviel 1er, 5er... im array sind! Wobei die 1er und 5er aus Serie1 nicht mtgezäht werden sollen.Zuerst hab ich ein Array mit 2500 Einträgen das Kalender[] heißt aus dem lösche ich die Nullen, da die ohne Belang sind:

    void Nullenloschen()
    {
        max = 0;
        for(int i= 0; i < 2500;i++)
        {
            if(Kalender[i] != 0)
            {
                Nummern[max] = Kalender[i];
                max++;
            }
        }
    
    }
    

    Nun stehen im array Nummern[] die Zahlen ohne Nullen hintereinader drin. Jetzt suche ich so, ob ne Serie1 forhanden ist:

    void Seriei()
    {
        Serie1 =0;
        for(int i =0;i<max;i++)
        {
            if(Nummern[i] == 1 && Nummern[i+1] == 1 && Nummern[i+2] == 1 && Nummern[i+3] == 5 && Nummern[i+4] == 5 && Nummern[i+5] == 5 && Nummern[i+6] == 10)
            {
                Nummern[i] = 0;
                Nummern[i+1] = 0;
                Nummern[i+2] = 0;
                Nummern[i+3] = 0;
                Nummern[i+4] = 0;
                Nummern[i+5] = 0;
                Nummern[i+6] = 0;
                i = i + 6;
                Serie1++;
    
            }
        }
    
    }
    

    Jetzt sollten alle Zahlen die zu Serie1 gehören gelöscht werden!!! Und das geht nicht.. Denn wenn ich jetzt die Restzahlen zähle sollen sie ja nicht mitgezählt werden. Aber sie werden halt mitgezählt!!

    In der Main Funktion ruf ich die Funktionen einfach nacheinader auf:

    Nullenloschen();
    Seriei();
    Restzahlen();



  • Ich wüsste zwar schn wie ich auf Umwegen trotzdem zum richtigen Ergebniss komme, aber wie sieht das denn dann aus..



  • Hast du dir mal überlegt, dass aus irgendeinem Grund, die if-Bedingung einfach nicht erfüllt wird, z.B. weil dieses 1,1,1,1,5,5,5,10 o.s.ä. (oder so ähnlich)
    einfach nicht vorkommt? 😮



  • Es kommt ganz sicher vor!!



  • Hallo zusammen,

    ich habe mir keine wirklichen Gedanken über den Aufwand gemacht. Aber wäre es vielleicht ein brauchbarer Ansatz, dein Array in einen CString zu verwandeln. Damit hättest du zumindest eine brauchbare leserliche Methode zum Suchen.

    Gruß, Volle.


Anmelden zum Antworten