Array füllen



  • Hi leute, ich möchte ein Array mithilfe einer Funktion füllen..
    Es werden zwar Werte gespeichert aber es werden irgendwelche zeichen ausgebeben...wo ist der fehler

    void array_fuellen(char*);
    
    int main()
    {
        char s[10];
    
        array_fuellen(s);
    
        getch();
        return 0;
    }
    
    void array_fuellen(char* s)
    {
        for(int n=0;n<=10;n++)
        {
            *s=n;
            cout<<*s;
            *s++;
        }
    }
    

    //EDIT
    also mit int klappt das....warum geht das nicht mit char...kann mir jemand das mal kurz mit zeiger+char/string array erklären in form eines kleinen beispiels?



  • char's werden nicht als Dezimalwerte ausgegeben, sondern als Zeichen. (Daher auch der Name char. ;)).
    Kannst ja mal die Werte mit der ASCII Tabelle vergleichen.



  • ach ja lol vergessen xD, deswegen hat das programm auch gepiept 😃 wegen der 7 = BEL 😃

    k danke..das gleiche würde auch mit strings funktionieren oder?



  • Corax schrieb:

    k danke..das gleiche würde auch mit strings funktionieren oder?

    Kommt drauf an, was du machst, aber grundsätzlich ja.



  • also wenn ich die bibliothek alles einbinde und anstatt char dann halt string schreibe stürzt das programm ab...



  • for(int n=0;n<10;n++)
    


  • nein dadran liegts nicht, wenn ich irgendein Wert in den String-Array eingebe, hängt sich das programm beim ausgeben denke ich mal auf....



  • Corax schrieb:

    nein dadran liegts nicht, wenn ich irgendein Wert in den String-Array eingebe, hängt sich das programm beim ausgeben denke ich mal auf....

    Dann zeig mal den Code her, wie er jetzt ist.

    Ansonsten kannst du dich auch mal mit dem Debugger bemühen. Der kann sehr viel helfen..



  • #include <iostream>
    #include <string.h>
    #include <konsole.h>
    
    void array_fuellen(string*);
    
    int main()
    {
        string s[10];
    
        array_fuellen(s);
    
        getch();
        return 0;
    }
    
    void array_fuellen(string* s)
    {
        for(int n=0;n<=9;n++)
        {
            cin>>*s;
            cout<<"\ns["<<n<<"] = "<<*s<<endl;
            *s++;
        }
    }
    


  • #include <string>
    


  • gut das probiere ich gleich aus...
    hier habe ich nun ein anderes problem...
    ich möchte ein array auswerten...das programm funktioniert, also liefert die ergebnisse allerdings bleibt das programm irgendwie hängen, und ich weiß nicht wodran es liegen könnte

    #include <iostream>
    #include <konsole.h>
    
    void einlesen(double*);
    void auslesen(double*);
    double kleinster(double*);
    double groesster(double*);
    double gesamtwert(double*);
    
    int main()
    {
        double array[10];
    
        einlesen(array);
        auslesen(array);
        cout<<"Kleinster Wert = "<<kleinster(array)<<endl;
        cout<<"Groesster Wert = "<<groesster(array)<<endl;
        cout<<"Gesamtwert = "<<gesamtwert(array);
    
        getch();
        return 0;
    }
    
    void einlesen(double* array)
    {
        for(int n=0;n<=10;n++){
            cin>>*array;
            array++;
        }
    }
    
    void auslesen(double* array)
    {
        for(int n=0;n<=10;n++){
            cout<<"Wert "<<n<<" = "<<*array<<endl;
            array++;
        }
    }
    
    double kleinster(double* array)
    {
        double min=array[0];
    
        for(int n=0;n<=10;n++){
            if(*array<=min) min=*array;
            *array++;;
        }
        return min;
    }
    
    double groesster(double* array)
    {
        double max=array[0];
    
        for(int n=0;n<=10;n++){
            if(*array>=max) max=*array;
            *array++;
        }
        return max;
    }
    
    double gesamtwert(double* array)
    {
        double erg=0;
        for(int n=0;n<=10;n++){
                erg=erg+*array;
                *array++;
        }
        return erg;
    }
    


  • Dann geh da halt mal mit dem Debugger durch. 🙄



  • ersetz mal in kleinster, groesster und gesamtwert "*array++" durch "array++"



  • und außerdem mußt du in den for-Schleifen die Bedingung "n<=10" durch "n<10" ersetzen.



  • hmm komisch 😃 mit dev-c++ funktioneirt das programm...muss ich das jetzt verstehen :D?^^



  • Wenn du über die Arraygrenzen hinweg zugreifst, muss das nicht zwingend in einem Programmabsturz enden. Das Verhalten ist undefiniert, es kann also relativ viel passieren. 😉


Log in to reply