Problem mit Quelltext, und Note!



  • Hiho! Ich bin neu hier im Forum, und hab folgendes Problem. Wir sollten im Unterricht ein Programm entwickeln, dass folgendes macht:
    Man gibt zwei Strings ein, z.b. Tim und Adelheit. Er soll sie dann so ausgeben:

    TAidmelheit

    So, soweit tat das Programm, jedoch, wenn man Zahlen eingibt kam ein KuddelMuddel herraus. Und keiner wußte warum. Das HauptProblem ist, dass unser Lehrer mir, mit einem etwas komplizierterem Programm eine schlechtere Note gab, als dem der das folgende mit dem Bug gemacht hatte:

    #include <iostream>
    #include <cstring.h>
    #include <stdlib.h>
    
    int main ()
    {
    char string1[50],string2[50],ergebnis[101];
    cout << "\n\tBitte geben sie den ersten Text ein : ";
    cin.getline(string1,50);
    cout << "\n\tBitte geben sie den zweiten Text ein : ";
    cin.getline(string2,50);
    int i=0,i2=0,i3=0;
    cout << "\n\t";
    while (!((string1[i]==0)&&(string2[i2]==0)))
    	{
       if (string1[i]!=0) { ergebnis[i3]=string1[i]; i++; i3++; }
       if (string2[i2]!=0) { ergebnis[i3]=string2[i2]; i2++; i3++; }
       }
    i2=0;
    while (ergebnis[i2]!=0)
    	{
       cout << ergebnis[i2];
       i2++;
       }
    int end;
    cin >> end;
    }
    

    So, und meine Version schaut noch, wie lang der String ist, und gibt dann nichts mehr dort aus. Das funktioniert auch. Mein Lehrer sagte mir, wenn ich Ihm sagen kann, warum er den KuddelMuddel ausgibt, bekomme ich meine Note. Und nun brauche ich die Hilfe von euch, bevor die Zeugnisnote wegen so einem Quatsch in die Tiefen geht.

    Mfg Keenora



  • Hi,
    nunja ich bin nun wirklich kein C++ Guru und wahrscheinlich noch nicht so weit wie du aber ich kann dir schon sagen das Visual C++ diese Fehler meldung produziert:

    c:\programme\progs : fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'cstring.h': No such file or directory



  • wie wärs mit #include <string> ?



  • und wie wärs mit nur 1 Thread aufmachen und net 3!! 👎



  • @zyrian, wie du vielleicht mitbekommen hast, gabs heute wiedermal ne forendowntime, die sich durch absolutes lagen des servers angekündigt hat. da passiert sowas schonmal(zb, wenn man sich nich sicher ist, ob man wirklich auf absenden geklickt hat, weil sich nichts tut).



  • Wie wärs mit sowas?

    #include <string>
    #include <iostream>
    #include <iterator>
    
    int main() {
      std::string s1, s2, s3;
      std::string::iterator i1, i2;
    
      std::getline(std::cin, s1);
      std::getline(std::cin, s2);
    
      // Bis einer der Strings zuende ist, abwechselnd Zeichen anhängen
      for(i1 = s1.begin(), i2 = s2.begin();
          i1 != s1.end() && i2 != s2.end();
          ++i1, ++i2) {
        s3.push_back(*i1);
        s3.push_back(*i2);
      }
    
      // Danach den Rest - einer der Reststrings ist leer, also ist eine der beiden
      // Zeilen effektiv bedeutungslos. Ist imho der einfachste Weg.
      for(; i1 != s1.end(); ++i1) s3.push_back(*i1);
      for(; i2 != s2.end(); ++i2) s3.push_back(*i2);
    
      std::cout << s3 << std::endl;
    }
    

Anmelden zum Antworten