» Willkommen auf Software «

SG4
aus Rhede
offline



OC Newbie
21 Jahre dabei !

AMD Athlon 64 FX
2000 MHz @ 2355 MHz
31°C mit 1.75 Volt


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:

Code

#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 SG4

(Geändert von SG4 um 12:19 am Okt. 14, 2004)

Beiträge gesamt: 50 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2003 | Dabei seit: 7786 Tagen | Erstellt: 12:19 am 14. Okt. 2004
Murdock
aus Rain (Niederbayern)
offline



OC God
21 Jahre dabei !

Intel Pentium IV Prescott
3200 MHz @ 3600 MHz
38°C mit 1.375 Volt


Ich schätze mal weil sich der Befehl string nur auf Buchstaben bezieht! Bin mir aber nicht sicher, schau mal ins Handbuch oder mit google!

Gruß

Beiträge gesamt: 2349 | Durchschnitt: 0 Postings pro Tag
Registrierung: Juli 2003 | Dabei seit: 7819 Tagen | Erstellt: 14:14 am 14. Okt. 2004
MilleniumEli1
aus Duisburg
offline



OC God
23 Jahre dabei !

AMD Duron
750 MHz @ 1017 MHz
51°C mit 2.2 Volt


Hi! Also er benutzt ja keine string funktion, sondern variablen die so heissen...

WArum schmeisst du nicht einfach den debugger an!? da müssteste doch innerhalb von 10s raushaben wo der fehler auftritt...

streng dich mal selber was an ;)

was mir aber auffällt ist das du die schleife nach 0 durchläufst und nicht nach der binären 0 = '/0'
Darf man das?


All Hail the Crimson King!

Beiträge gesamt: 6351 | Durchschnitt: 1 Postings pro Tag
Registrierung: Mai 2001 | Dabei seit: 8605 Tagen | Erstellt: 14:45 am 14. Okt. 2004
SG4
aus Rhede
offline



OC Newbie
21 Jahre dabei !

AMD Athlon 64 FX
2000 MHz @ 2355 MHz
31°C mit 1.75 Volt


Nope, dass mit der /0 ists nicht, hab ich getestet, und mit dem Debugger bekomm ichs net raus.

Beiträge gesamt: 50 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2003 | Dabei seit: 7786 Tagen | Erstellt: 11:29 am 15. Okt. 2004
carpeta
aus Gießen
offline



Enhanced OC
20 Jahre dabei !

AMD Ryzen Threadripper
3900 MHz @ 4200 MHz
48°C mit 1.28 Volt


also bei mir läuft dein programm garnicht , der compiler rückt nur fehlermeldungen aus, hab 2 Zeilen verändert und jetzt läuft es zwar aber bei zahlen rückt das prog auch nur mist aus. :blubb:

definier mal dein problem genauer, kann noch nicht wirklich was mit anfangen, hast du alle typen richtig deklariert?

welchen compiler benutzt du, system Linux oder Windoof?

(Geändert von carpeta um 13:08 am Okt. 15, 2004)


„Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.“
—  Orson Welles

Beiträge gesamt: 312 | Durchschnitt: 0 Postings pro Tag
Registrierung: April 2004 | Dabei seit: 7524 Tagen | Erstellt: 12:49 am 15. Okt. 2004
Torgal
aus -geburt der Hölle
offline



OC God
23 Jahre dabei !

Intel Core 2 Duo
2666 MHz @ 3200 MHz
44°C mit 1.20 Volt


Du musst ne abfangschleife einbaun. das funzt folgendermaßen.
Du definierst eine neue Variable namens char Muell [100]. Bei einer falschen Eingabe schreibt das programm die eingabe auf die Müllvariable und löscht den inhalt dann. Funzt eigentlich ganz einfach mit ner While-schleife:

Wie hier z.B.:

cout << "Wollen Sie nochmal gefragt werden?\n Ja(1),Nein(0)\n";
           char str[100];        //
           while(!(cin>>nochmal))// Schlieát Fehler durch
             {                   // falsche Eingaben aus
              cin.clear();       //
              cin >> str;       //
              cout<< "Ja gehhearst Du Droodll gib hoid Ans oda Nui ei!";//
             }

nochmal ist hier n integer, bei Die musst Du hallt Deine Char-Arrays (oder strings)angeben.

Er gibt kuddelmuddel aus weil er wahrscheinlich die Zahlen als asci-Zeichen einließt (Du weißt schon 42='a' oder so ähnlich)
Mit dieser schleife dürfte das aber nicht mehr passieren.

Ich hoffe ich konnt ein bischen helfen.


(Geändert von Torgal um 14:15 am Okt. 15, 2004)


Death to false Metal!

Beiträge gesamt: 1909 | Durchschnitt: 0 Postings pro Tag
Registrierung: Dez. 2001 | Dabei seit: 8401 Tagen | Erstellt: 14:09 am 15. Okt. 2004