Frage zur Arrayeingabe



  • Hi!

    Im ersten Codefragment schreibst du sting. Im unteren Code stimmts dann. Du solltest die Eingabe des Interprets auch über getline lösen.

    grüße



  • Also das mit dem sting/string befehl hab ich behoben, dennoch überspringt er bei mir immer ncoh die eingabe des interpreten 😕



  • std.:cin.cear();
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    

    sollten helfen.



  • Also diese Befehlsfolge bewirkt bei mir, das das Programm bei der Suche einen Absturz hat. 😞



  • Hier ist noch:

    #include <iostream> // Ohne .h !
    #include <string>
    #include <vcl.h>
    #include <conio.h>
    #pragma hdrstop
    
    using namespace std;
    
    #pragma argsused
    

    Was ist eigenltich conio.h?
    Das kenne ich ned... oder pragma??

    Gg



  • Ja, gibts beides. Is aber Microsoft spezifischer Kram! 😉

    grüße



  • Jaja, und die VCL ist auch von MS 🙄 🙄 🙄



  • roko79 schrieb:

    Also diese Befehlsfolge bewirkt bei mir, das das Programm bei der Suche einen Absturz hat. 😞

    http://www.gnu.org/software/ddd/
    Ein sehr guter Debuger.
    Setzt auf dem GDB auf. sicher ein versuch wert.



  • Thomas (: schrieb:

    Jaja, und die VCL ist auch von MS 🙄 🙄 🙄

    MS-DOS spezifische Funktionen in conio.h Programme, die darauf aufbauen, sind nicht portabel, da conio.h nicht zur ANSI-Standardbibliothek gehört und z.B. auf einer Sun oder in Linux nicht verfügbar ist.

    MS-Spezifischer gehts ja wohl nich, oder?

    grüße



  • Tut mir ja leid mit all den MS Teilen, doch wenn unsere Lehrer uns das so zeigt 😃

    Aber um auf mein Prob zurückzukommen, das sieht immer noch so aus, das ich bei der Suche ein riesiges Prob hab.

    Ich kann nun problemlos texte mir lehrzeichen eingeben und auch wieder ausgeben, doch mit der suche das läuft alles schief. ich glaub ich geb es auf und muss damit leben das ich nur ein wort eingeben kann



  • Was läuft denn schief?



  • ich kriege folgende fehlerbox und das prog ist tot.

    http://pixelfummler.redio.de/1.jpg



  • Dann schmeiß mal den Debugger an. Diese Fehlermeldung kann nur eine vage Vermutung auf das tatsächliche Problem geben.

    grüße





  • Das bringt nich wirklich viel. Es wäre viel interessanter bei welcher Aktion das Programm abstürzt. Um sowas rauszufinden kannst du den Debugger von Borland verwenden. Borland IDE's haben imo ja einen recht komfortablen Debugger.

    grüße



  • jaja, lehrer und ihre programme..erschreckend was die einem sogar an der uni als c++ code andrehen wollen..

    while (interpret[i] != inter)
           {
           i++;   // Wenn der Arraywert in Feld i nicht mit dem gesuchten übereinstimmt
           }      // wird der Wert i um einen erhöht und es wird wieder kontrolliert
    

    du solltest auch irgenwann aufhören über den array zu iterieren.
    zb. mit

    while ( i < 1000 && interpret[i] != inter )
           {
           i++;   // Wenn der Arraywert in Feld i nicht mit dem gesuchten übereinstimmt
           }      // wird der Wert i um einen erhöht und es wird wieder kontrolliert
    

    und auch beim ausgeben checken das du nicht ausserhalb der grenzen bist

    if( i >= 1000 ){
            cout << " " << endl;
            cout << "Interpret nicht gefunden!" << endl;
           else{
            cout << " " << endl;
            cout << "CD Nummer: " << i << endl;
            cout << "Interpret: " << interpret[i] << endl;
            cout << "Titel: " << titel[i] << endl;
            cout << "Laenge: " << spieldauer[i] << endl;
           }
           cin.get();cin.get();
    

    vermutlich wird das prog jetzt nicht mehr mit ner access violation abschmieren, aber wohl nicht einen interpreten wieder finden richtig? oder klapts sogar?

    und ggf. solltest du dir mal überlegen ne globale const variable MAXARRAYSIZE zu benutzen und diese in deinem programm zu benutzen. ist zwar nicht perfekt aber besser als die hardcodierten 1000 überall im programmcode zu haben.
    also:

    const unsigned int MAXARRAYSIZE = 1000;
    .
    .
    .
    string interpret[MAXARRAYSIZE];  // Ein Array des Typen String mit 1000 Feldern
    float spieldauer[MAXARRAYSIZE];  // Ein Array des Typen Float mit 1000 Feldern
    string titel[MAXARRAYSIZE];
    .
    .
    .
    while ( i < MAXARRAYSIZE && interpret[i] != inter )
    .
    .
           if( i >= MAXARRAYSIZE ){
    

    nun kannst du an EINER stelle im code die größe deiner arrays verändern.


Anmelden zum Antworten