wert vergleichen und in const char* speichern



  • Blake_MaX schrieb:

    du meinst "1" oder so ist ein string und das geht nicht mit char?

    Doch 1 schon: '1' (beachte die ' und nicht "), allerdings wirds schon schwer, wenn du 11 hast.. Das ist dann nämlich gezwungenermassen ein string.



  • if(compcards[i] == x1) {
                                primeCardsRed[ia] = "11";
                                ia++;
                }
    

    ich habe das jetzt mal so geändert. aber das geht nicht! wie kann ich das denn machen das das verglichen wird?

    edit: habe jetzt auch noch alle zahlen die gebraucht werden in chars deklariert. geht trotzdem nicht mit dem in-den-char-schreiben.



  • Das, was Du da machst, kann so nicht gehen:

    const char* compcards[20]; //ein Array aus 20 char*, wobei jeder ins Nirvana zeigt
    const char* primeCardsRed[20]; //nochmal
    while(i < 6) {
                if(compcards[i] == "1") { //Versuch einer Zuweisung an etwas, dass ins Nichts zeigt
                                primeCardsRed[ia] = "11"; //noch mal
                                ia++;
                }
                else if(compcards[i] == "5") {
                                primeCardsRed[ib] = "21"; //uns noch mal
                                ia++;
                }
    i++
    }
    

    Nimm lieber std::string:

    #include <string>
    
    std::string compcards[20];
    std::string primeCardsRed[20];
    while(i < 6) {
                if(compcards[i] == "1") {
                                primeCardsRed[ia] = "11";
                                ia++;
                }
                else if(compcards[i] == "5") {
                                primeCardsRed[ib] = "21";
                                ia++;
                }
    i++
    }
    


  • string compcards[20];
    string primeCardsRed[20];
                if(compcards[i] == "1") {
                                primeCardsRed[ia] = "11";
                                ia++;
                }
    

    ok jetzt sind das strings, aber in den neuen string wird nichts reingeschrieben!



  • Blake_MaX schrieb:

    string compcards[20];
    string primeCardsRed[20];
                if(compcards[i] == "1") {
                                primeCardsRed[ia] = "11";
                                ia++;
                }
    

    ok jetzt sind das strings, aber in den neuen string wird nichts reingeschrieben!

    Dann geh halt mal mit dem Debugger durch. Und schau, was da falsch gemacht wird.. 🙄



  • "Eine Zugriffsverletzung (Segmentation Fault) trat in ihrem Programm auf! ??



  • Blake_MaX schrieb:

    "Eine Zugriffsverletzung (Segmentation Fault) trat in ihrem Programm auf! ??

    Meine Güte. Dann zeig doch mal den genauen Code und die Stelle, wo das auftrit.. 🙄



  • ne stelle weiß ich nicht, das wird mir angezeigt wenn ich die fehlersuche bei dev-c++ einschalte. passiert aber auch nu wenn ich diesen code:

    int a;
    int primeCardsRedSortA, primeCardsRedSortB, primeCardsRedSortC, primeCardsRedSortD;
    int primeCardsYelSortA, primeCardsYelSortB, primeCardsYelSortC, primeCardsYelSortD;
    int primeCardsGreSortA, primeCardsGreSortB, primeCardsGreSortC, primeCardsGreSortD;
    int primeCardsBluSortA, primeCardsBluSortB, primeCardsBluSortC, primeCardsBluSortD;
    string compcards[20];
    string usercards[20];
    string primeCardsRed[20];
    string primeCardsYel[20];
    string primeCardsGre[20];
    string primeCardsBlu[20];
    void Comp_KI() {
        int i = 1;
        int ia = 1;
        int ib = 1;
        int ic = 1;
        int id = 1;
        while(i < 6) {
                if(compcards[i] == "1") {
                                primeCardsRed[ia] = "11";
                                ia++;
                }
                else if(compcards[i] == "5") {
                                primeCardsRed[ia] = "21";
                                ia++;
                }
                else if(compcards[i] == "9") {
                                primeCardsRed[ia] = "31";
                                ia++;
                }
                else if(compcards[i] == "1" && compcards[i++] == "3") {
                                primeCardsRed[ia] = "41";
                                ia++;
                }
                else if(compcards[i] == "2") {
                                primeCardsYel[ib] = "12";
                                ib++;
                }
                else if(compcards[i] == "6") {
                                primeCardsYel[ib] = "22";
                                ib++;
                }
                else if(compcards[i] == "10") {
                                primeCardsYel[ib] = "32";
                                ib++;
                }
                else if(compcards[i] == "14") {
                                primeCardsYel[ib] = "42";
                                ib++;
                }
                else if(compcards[i] == "3") {
                                primeCardsGre[ic] = "13";
                                ic++;
                }
                else if(compcards[i] == "7") {
                                primeCardsGre[ic] = "23";
                                ic++;
                }
                else if(compcards[i] == "11") {
                                primeCardsGre[ic] = "33";
                                ic++;
                }
                else if(compcards[i] == "15") {
                                primeCardsGre[ic] = "43";
                                ic++;
                }
                else if(compcards[i] == "4") {
                                primeCardsBlu[id] = "14";
                                id++;
                }
                else if(compcards[i] == "8") {
                                primeCardsBlu[id] = "24";
                                id++;
                }
                else if(compcards[i] == "12") {
                                primeCardsBlu[id] = "34";
                                id++;
                }
                else if(compcards[i] == "16") {
                                primeCardsBlu[id] = "44";
                                id++;
                }
                i++;
        }
        for(a = 1; a = 20; a + 2) {
        if(primeCardsRed[a] == "1") {
                            primeCardsRedSortA++;
        }
        else if(primeCardsRed[a] == "2") {
                            primeCardsRedSortB++;
        }
        else if(primeCardsRed[a] == "3") {
                            primeCardsRedSortC++;
        }
        else if(primeCardsRed[a] == "4") {
                            primeCardsRedSortD++;
        }
        }
        for(a = 1; a = 20; a + 2) {
        if(primeCardsYel[a] == "1") {
                            primeCardsYelSortA++;
        }
        else if(primeCardsYel[a] == "2") {
                            primeCardsYelSortB++;
        }
        else if(primeCardsYel[a] == "3") {
                            primeCardsYelSortC++;
        }
        else if(primeCardsYel[a] == "4") {
                            primeCardsYelSortD++;
        }
        }
        for(a = 1; a = 20; a + 2) {
        if(primeCardsBlu[a] == "1") {
                            primeCardsBluSortA++;
        }
        else if(primeCardsBlu[a] == "2") {
                            primeCardsBluSortB++;
        }
        else if(primeCardsBlu[a] == "3") {
                            primeCardsBluSortC++;
        }
        else if(primeCardsBlu[a] == "4") {
                            primeCardsBluSortD++;
        }
        }
        for(a = 1; a = 20; a + 2) {
        if(primeCardsGre[a] == "1") {
                            primeCardsGreSortA++;
        }
        else if(primeCardsGre[a] == "2") {
                            primeCardsGreSortB++;
        }
        else if(primeCardsGre[a] == "3") {
                            primeCardsGreSortC++;
        }
        else if(primeCardsGre[a] == "4") {
                            primeCardsGreSortD++;
        }
        }
    

    einfüge.

    mfg



  • 😮

    Das les ich mir jetzt nicht durch,aber seg fault gibts, wenn du ausserhalb des gültigen Speicherbereichs einen Zugriff hast. (bei dir wahrscheinlich ein Zugriff ausserhalb der Arraygrenzen..)

    Ehm.. Was willst du mit dem hier genau bezwecken?!

    for(a = 1; a = 20; a + 2) {
    

    Das gibt nämlich auf der nächsten Zeile eine Zugriffsverletzung..
    Du willst eher das hier:

    for(a = 1; a < 19; a += 2) {
    


  • ok das was ich wollte funktioniert jetzt, also bei einem bestimmten wert wird etwas bestimmtes gespeichert. aber das hier:

    for(a = 1; a < 20; a += 2) {
        if(primeCardsRed[a] == "1") {
                            primeCardsRedSortA++;
        }
        else if(primeCardsRed[a] == "2") {
                            primeCardsRedSortB++;
        }
        else if(primeCardsRed[a] == "3") {
                            primeCardsRedSortC++;
        }
        else if(primeCardsRed[a] == "4") {
                            primeCardsRedSortD++;
        }
        }
        for(a = 1; a < 20; a += 2) {
        if(primeCardsYel[a] == "1") {
                            primeCardsYelSortA++;
        }
        else if(primeCardsYel[a] == "2") {
                            primeCardsYelSortB++;
        }
        else if(primeCardsYel[a] == "3") {
                            primeCardsYelSortC++;
        }
        else if(primeCardsYel[a] == "4") {
                            primeCardsYelSortD++;
        }
        }
        for(a = 1; a < 20; a += 2) {
        if(primeCardsBlu[a] == "1") {
                            primeCardsBluSortA++;
        }
        else if(primeCardsBlu[a] == "2") {
                            primeCardsBluSortB++;
        }
        else if(primeCardsBlu[a] == "3") {
                            primeCardsBluSortC++;
        }
        else if(primeCardsBlu[a] == "4") {
                            primeCardsBluSortD++;
        }
        }
        for(a = 1; a < 20; a += 2) {
        if(primeCardsGre[a] == "1") {
                            primeCardsGreSortA++;
        }
        else if(primeCardsGre[a] == "2") {
                            primeCardsGreSortB++;
        }
        else if(primeCardsGre[a] == "3") {
                            primeCardsGreSortC++;
        }
        else if(primeCardsGre[a] == "4") {
                            primeCardsGreSortD++;
        }
        }
    

    geht nicht!



  • Was geht da nicht?

    Ist es so schwer einen genauen Beschreib zu liefern?!



  • ja ok kannst du ja nicht wissen. also ich möchte eben eigentlich das gleiche wie oben, das bei einem bestimmten wert den wir ja grade eben in den string geschrieben haben, int++ passiert, wobei diese ziffern, die im string kommen nur an jeder 2. stelle auftauchen.

    genug?


Anmelden zum Antworten