Probleme
-
Danke, jetzt habe ich es.
Wenn Leerzeichen eingegeben werden, sollen diese auch ausgegeben werden und zwar an der gleichen Stelle. Da habe ich jetzt gedacht, ich kann innerhalb der for-Schleife (s.o.) folgendes einfach eingeben:
if (eingabe[i]='') eingabe[i]='';Doch dann schreibt er folgendes aus: Character constant too long (or empty)
Ich will ja, dass es leer bleibt.Hat jemand einen Tipp für mich?
-
Beide Zeilen werden nie funktionieren, die if-Abfrage beinhaltet keinen Vergleich sondern eine Zuweisung. Eine Abfrage nach einem leeren Zeichen gibt es so nicht, denn dann gibt es diese Zeichen ja garnicht. Ein Leerzeichen ist wohl eher so
' ' //nicht ''
-
Danke,
habe das Problem leider immer noch. Werde langsam wahnsinnig und zwifel an meinem Können...
for (int i=1;i<=eingabe.Length();++i) //bis i die Länge des Eingabetextes erreicht hat { if (eingabe[i]=' ') eingabe[i]=' '; //if (eingabe[i]>=26) //eingabe[i]=eingabe[i]-26; eingabe[i]+=zahlen+1; //eingabe + zahlwert + 1 (warum +=???) } edtausgabe->Text = eingabe;Dieser Code ist mein Programm. Folgende Probleme habe ich jetzt:
Zeile 3 und 4 sollen Leerzeichen darstellen, d.h. Leerzeichen in der Eingabe sollen aus Leerzeichen in der Ausgabe sein.
Zeile 6 und 7 sollen das Ende des Codes bzw. den Anfang darstellen. Wenn das Alphabet bestehend aus 26 Buchstaben nicht mehr ausreicht, dann soll wieder von vorne angefangen werden, z.B. Eingabe = W , Zahlen = 10 , dann soll Ausgabe = G sein.
Bitte helft mir!!!
-
ich bin zwar kein C++ Neuling, aber ich habe folgendes Problem
Na gut, dann helfe ich auch mal einem erfahrenen C++ Progger -)
Zuerst einmal solltest du dich mit der ASCII-Tabelle beschäftigen (d.h. wie werden z.B. Buchstaben in char gespeichert).
// dieses Beispiel behandelt nur Kleinbuchstaben !!! // zahlen ist wohl dein Verschiebewert if(eingabe[i] >= 'a') { eingabe[i] += zahlen; if(eingabe[i] >= 'z') eingabe[i] -= 'z' - 'a' + 1; }Vielleicht verstehst du es ja jetzt.
-
Hallo,
danke für deine Hilfe, Habe dazu auch gleich einmal eine Frage: Ich verstehe das - Zeichen in Zeile 8 nicht:
eingabe[i] -= 'z' - 'a' + 1;Wofür steht das "-"-Zeichen? Ich habe zwar auch ein "+"-Zeichen in meinem Code, aber das verstehe ich auch nicht... Ich kenn mich zwar mit C++ aus, habe auch schon ne Projektarbeit damit bewältigt (mit ner 1!!!), aber ich würde mich nie als Profi, sondern immer nur als Anfänger bezeichnen.
Danke aber schon mal!
-
Ich glaub, ich bin zu blöd...
Habe deinen Vorschlag übernommen und es klappt, zumindestens für einen kleinen Verschiebefaktor. Wenn ich größere Zahlen nehme, wie z.B. 15 , bekomme ich immer nur Sonderzeichen als Antwort. Ich weiß nicht warum?
Bzgl. deines Tipps wegen Ascii-Code:
String eingabe = edteingabe->Text; String zeichenkette = eingabe.Length(); char* eingabe = edteingabe->Text.c_str(); //Umwandlung Text aus Eingabe von string in char strupr(eingabe); //Konvertierung in Großbuchstaben int ascii = int(char(eingabe+2));Das habe ich auch schon probiert, aber ich weiß nicht, wie ich die Buchstaben/Zahlen in den Ascii-Code umwandle, denn
int ascii = int(char(eingabe+2));halte ich nicht für richtig...
-
Hallo
Wenn du dir die ASCII-Tabelle mal genauer angeschaut hättest, wüstest du das dadrin auch die besagten Sonderzeichen drin sind. Dein Verschiebefakter wird immer draufgerechnet, egal ob Buchstabe oder Sonderzeichen rauskommt. Du must, wenn du über die Buchstaben hinaus verschiebst, eben die Verschiebung am anderen Ende des Buchstabenbereichens wieder fortsetzen.
Das - und das + arbeiten bei char genauso wie bei int. Für C++ ist char auch nur eine Zahl.
bis bald
akari
-
@mad21
mad21 schrieb:
for (int i=1;i<=eingabe.Length();++i) //bis i die Länge des Eingabetextes erreicht hat { if (eingabe[i]=' ') eingabe[i]=' '; ...nochmal kurz zu diesem Problem:
ist "if (eingabe[i]=' ')" ein Vergleich oder eine Zuweisung? wenn du das nicht weißt bzw. den Unterschied der beiden Begriffe nicht kennst wage ich zu bezweifeln dass du ein Projekt mit C++ selbst gemacht hast
-
Hallo Linnea,
auch wenn du es mir nicht glauben magst: JA, ich habe eine Projektarbeit mit Hilfe von C++ geschrieben. Und JA, ich habe dafür die Note 1 (sehr gut) bekommen!
Mit "if (eingabe[i]=' ')" will ich folgendes ausdrücken:
Wenn die Eingabe (in diesem Fall "i") ein Leerzeichen ist!!! Also ein Vergleich und KEINE Zuweisung.
Ich hoffe, es gibt jetzt nichts mehr zu bezweifeln.
Trotzdem Danke für die lobreiche Kritik!
-
Das muss ja eine toller Lehrer sein, der so eine Projektarbeit mit 1 bewertet hat.
Vergleich: ==
Zuweisung: =
-
Ja, das war eine tolle Lehrerin!
Dann hab ich nun mal das "="-Zeichen vergessen! Das komische ist nur, dass in meinem Quellcode nirgends ein "="-Zeichen drin stand und das immer funktioniert hat.
Das kann doch nicht sein oder?
-
Danke für eure Hilfe!
Nur eine Sache möchte ich noch einmal anmerken:
Ich finde es unfair, wie man hier Neulinge behandelt. Ich habe immer einen ordentlichen Text geschrieben und oft eine beleidigende Antwort bekommen, wie "hättest du mal genauer gelesen" oder "wage ich zu bezweifeln dass du ein Projekt mit C++ selbst gemacht hast". Das finde ich nicht sehr korrekt!
Ich hatte schon am Anfang darauf hingewiesen, dass ich ein Neuling bin! Es waren natürlich auch gute, hilfreiche Antworten dabei, aber wie sagt man so schön: Der Ton macht die Musik!
Trotzdem Danke!
-
Nimm's nicht persönlich.
Der Fehler ist zwar schnell gemacht und im Code auch leicht zu übersehen, nach unseren zahlreichen Hinweisen hättest du ihn mit dem dir selbst zugeschriebenen Kenntnisstand aber längst finden sollen. Dass das nicht passiert ist, provoziert unweigerlich gewisse Zweifel an besagtem Kenntnisstand.Mit dem Ton hast du schon recht, allerdings solltest du auch deine Beiträge mal daraufhin abklopfen. Und wenn du bei der nächsten Frage auch noch eine aussagekräftige Überschrift formulierst, wird dir mit Sicherheit in Nullkommanix geholfen werden.

-
Hast Recht,
das Thema war unglücklich gewählt. Darin bin ich nicht so gut.
Was meinen Kenntnisstand angeht:
"Dass das nicht passiert ist, provoziert unweigerlich gewisse Zweifel an besagtem Kenntnisstand."
- - - vielleicht sollte ich dazu sagen, dass ich mich mit C++ nur ein halbes Jahr beschäftigt hatte und das war vor 2 Jahren, also schon etwas länger her. Ich hatte das versucht über meine Einstufung als Neuling auszudrücken - hat wohl nicht geklappt.
Naja, ist ja auch egal. Nächstmal weiß ich es besser, man lernt ja nur dazu.

Bis denn!