Klasse ValueGets: Fehler!
-
Badestrand schrieb:
CStoll schrieb:
PS: Wenn du dir nicht helfen lassen willst, sag Bescheid, dann kann ich hier dicht machen.
Hey, ich finde er gibt sich wirklich Mühe! Auch wenn er nicht richtig erklären kann, was da nun vor sich geht und was nicht

Ja, er gibt sich Mühe, aber er redet um den heißen Brei herum. Und wenn ich jede Frage zehnmal wiederholen muß, bevor ich eine verwertbare Antwort bekomme, verliere ich irgendwann auch die Geduld.
-
CStoll schrieb:
**Was für ein Wert steht vor dieser if()-Abfrage in free[first]?
**Hi CStoll
es ist ziemlich schwer zu erklären(also für mich), aber ich versuchs nun besser zu machen

"first" ist ja eine Zahl, zbsp. 3 und free vom typ char(ist ein Vektor) enthält viele ASCII Zeichen.
A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 ... ElementeDa ich nun 3 als first habe, bewegt sich der Buchstabe C von da nach last aber nur im Index des Vektors. Wenn last 11 wäre, würd L D sein und es würde so aussehen:
A B C D E F G H I J K C M 0 1 2 3 4 5 6 7 8 9 10 11 12 .. ElementeSo mein ich das

Aber den genauen Wert vor der IF-Anweisung kann man ja nicht sagen, was der eine Grund wäre,dass der Benutzer erst bestimmen muss von wo es bis nach geht(Durch Eingabe von first und last).
Mein Vektor, std::vector<char> free(10, ' '); mach ich mal leer, dann tu ich manuell alle Ascii zeichen einfügen:
unsigned char smiley = 1; // ASCII-Smiley unsigned char smiley2 = 2; // anderes Smiley // andere möglichen ASCII Zeichen free[0] = smiley; free[1] = smiley2; free[2] = smiley; free[3] = smiley2; free[4] = smiley; free[5] = smiley2; free[6] = smiley; free[7] = smiley2; free[8] = smiley; free[9] = smiley2;Dann schaut es so aus:
A B A B A B A B A B 0 1 2 3 4 5 6 7 8 9A ist Smiley
B ist Smiley2in der If-Anweisung vergleiche ich dann ob free[first] dem entspricht, mit dem man sich als einziges Bewegen kann:
if(free[first] == A) // ist der Anfangsschritt gleich dem von mir erlaubten? { //.. }Mit freundlichen grüssen
thomas w.
-
GFGF schrieb:
Aber den genauen Wert vor der IF-Anweisung kann man ja nicht sagen, was der eine Grund wäre,dass der Benutzer erst bestimmen muss von wo es bis nach geht(Durch Eingabe von first und last).
Mag sein, daß man den Wert nicht aus der Programmlogik ermitteln kann (soviel sehe ich ja ein), aber du wirst doch wohl nachsehen können, was da drin steht

(auf deutsch: setz' mal ein
cout<<"vor dem if():"<<(int)free[first]<<"/"<<(int)abc<<endl;vor die if-Abfrage und schau nach, ob da zwei identische Werte rauskommen - alternativ könntest du auch lernen, mit dem Debugger umzugehen)
-
achso.. da kommen immer ASCII Zeichen raus. Hier kann man leider keine ausgeben lassen, aber es sind halt verschiedene. Je nach welche Zahl ich eingebe.
Aber es ist auf jeden Fall korrekt:std::cout << "Start(free[first]): " << free[first] << " First: " << first;Es wird auch das richtige ausgegeben.
-
dernichtswissende schrieb:
achso.. da kommen immer ASCII Zeichen raus. Hier kann man leider keine ausgeben lassen, aber es sind halt verschiedene. Je nach welche Zahl ich eingebe.
Aber es ist auf jeden Fall korrekt:std::cout << "Start(free[first]): " << free[first] << " First: " << first;Es wird auch das richtige ausgegeben.
caste die Ausgaben mal in einen int, dann siehst du die ASCII-Codes anstelle der Zeichen (ist mitunter einfacher zu unterscheiden).
-
CStoll schrieb:
dernichtswissende schrieb:
achso.. da kommen immer ASCII Zeichen raus. Hier kann man leider keine ausgeben lassen, aber es sind halt verschiedene. Je nach welche Zahl ich eingebe.
Aber es ist auf jeden Fall korrekt:std::cout << "Start(free[first]): " << free[first] << " First: " << first;Es wird auch das richtige ausgegeben.
caste die Ausgaben mal in einen int, dann siehst du die ASCII-Codes anstelle der Zeichen (ist mitunter einfacher zu unterscheiden).
Hallo CStoll wieder

also hab mit
std::cout << static_cast<int>(free[first]) << std::endl;mal gecastet. Es kommt immer nur der ASCII Code(Integer) vom jeweiligen und dazu noch richtigen ASCII-Zeichen(was der "Benutzer" auch verlangt) als Ergebnis heraus.
mFG
-
sorry für doppelpost:
also wenn das Feld gerade ein Smiley ist(zbsp.: ASCII Code "1" = Smiley) und ich dann caste, dann kommt nur 1 raus, was das richtige Ergebnis ist. Nur verstehe ich nicht, wieso das nicht funktioniert(die If-Anweisung)

mit freundlichen grüssen,
thomasP.S.: ich hab auch vector<char> ... in vector<unsigned char> geschrieben, hat aber leider auch nichts gebracht

-
Was funktioniert denn an der if-Bedingung nun nicht? Wie sind die Eingangswerte und was wird verglichen?
-
Badestrand schrieb:
Was funktioniert denn an der if-Bedingung nun nicht? Wie sind die Eingangswerte und was wird verglichen?
Es wird verglichen ob free[first] ein bestimmtest ASCII Zeichen ist.
-
dernichtswissende schrieb:
also wenn das Feld gerade ein Smiley ist(zbsp.: ASCII Code "1" = Smiley) und ich dann caste, dann kommt nur 1 raus, was das richtige Ergebnis ist. Nur verstehe ich nicht, wieso das nicht funktioniert(die If-Anweisung)

Und was funktioniert denn nun nicht an der if-Bedingung?
Die sieht doch glaubich so aus:if(free[first] == A)Was soll daran nicht funktionieren? Du hast dir doch free[first] und first ausgeben lassen... Wo liegt dann das Problem?
Oder lass es mich anders formulieren: Du willst ja, dass wir dir bei einem Problem helfen (was ja gut ist, dafür ist das Forum ja da). Nur ich verstehe das Problem nicht. Du hast im Prinzip eine Bedingung "if ( x == y )" und du sagst "sie funktioniert nicht". Ich verzweifle langsam

-
Badestrand schrieb:
dernichtswissende schrieb:
also wenn das Feld gerade ein Smiley ist(zbsp.: ASCII Code "1" = Smiley) und ich dann caste, dann kommt nur 1 raus, was das richtige Ergebnis ist. Nur verstehe ich nicht, wieso das nicht funktioniert(die If-Anweisung)

Und was funktioniert denn nun nicht an der if-Bedingung?
Die sieht doch glaubich so aus:if(free[first] == A)Was soll daran nicht funktionieren? Du hast dir doch free[first] und first ausgeben lassen... Wo liegt dann das Problem?
Oder lass es mich anders formulieren: Du willst ja, dass wir dir bei einem Problem helfen (was ja gut ist, dafür ist das Forum ja da). Nur ich verstehe das Problem nicht. Du hast im Prinzip eine Bedingung "if ( x == y )" und du sagst "sie funktioniert nicht". Ich verzweifle langsam

also erstmal dankeschön

also das sie einfach ignoriert wird, hätte ich besser sagen sollen.
Also wenn meine "Auswahl" also in dem Sinne first ist, dann muss ich vergleichen, ob die Auswahl ein bestimmtes Zeichen ist
Aber ich glaube es hängt vom Gültigkeitsbereich irgendwie ab, ist nur so ein Gedanke
ich teste mal ob es mit normalen Buchstaben geht
