Autor Beitrag
DerChamp
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 01.03.09 17:01 
Hallo liebe Programmierer-Community!
Ich lerne jetzt seit ungefähr 3 Monaten C# und wollte jetzt mal ein kleines Programm (eig. nur so zum Spaß, obwohl es mich schon sehr interessiert ob es funktioniert) schreiben, eine Art Verschlüsselungsprogramm aber nur für Texte... Idee steht und ich hab alles umgesetzt! Jedoch habe ich ein kleines Problemchen übergangen was ich jetzt aber noch bereinigen will!
Das Programm soll jeden Buchstaben in eine Zahl umwandeln (in dem Fall ASCII-Code mit allmöglichen Zahlen Multiplizieren und Dividieren, und dann den verschlüsselten Code ausgeben! In die andere Richtung ist halt nur alles umgekehrt!) Jeder eingegebene Buchstabe wird als String gespeichert in einem Index (ich will nicht hören, dass das platzverschwenderisch ist ;) ) und sobald man den Buchstaben # (auch gerne wenn man Enter drückt) sollen die Arrays übergeben werden an meinen Verschlüsseler!
So sieht meine for-Schleife aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
                
int i;
for (i = 0;i < 255; i++)
{
str[i] = Convert.ToString(Console.Read());
if (str[i] == "#")
break;
}


Wo liegt das Problem? Entweder ich übersehe da was oder ähnliches! sobald ich nämlich "#" drücke, macht er einfach weiter! Ich habe auch schon anstatt "break;" "i = 255" probiert aber das hilft natürlich auch nicht!
Ich hoffe ihr könnt mir helfen!
MFG DerChamp
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 01.03.09 18:04 
:welcome: in der Entwickler-Ecke!
user profile iconDerChamp hat folgendes geschrieben Zum zitierten Posting springen:
Das Programm soll jeden Buchstaben in eine Zahl umwandeln
Warum speicherst du die Zahlen dann in einem String-Array, das macht doch keinen Sinn? Benutze ein byte-Array (oder List<byte>, dann hast du keine feste Größenbeschränkung), dann wäre dir auch der Fehler nicht unterlaufen: In deinem Array steht schließlich nicht "#", sondern "35", der String des Unicode-Codes. Mit einem byte-Array (das dann wahrscheinlich nicht mehr "str" heißen sollte) sieht die Abfrage dann so aus:
ausblenden C#-Quelltext
1:
if (str[i] == (byte)'#') ...					


PS: Eine andere Vorgehensweise: Lies mit Console.ReadLine eine ganze Zeile aus und übertrage sie dann in einer Schleife in ein gleichgroßes byte-Array.

_________________
>λ=
DerChamp Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 01.03.09 19:53 
aber in der Variable str liegen die Buchstaben ja noch als BUchstabe vor! Die Konvertierung findet erst im 2. Teil, der nicht dabei steht statt!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 01.03.09 23:06 
user profile iconDerChamp hat folgendes geschrieben Zum zitierten Posting springen:
aber in der Variable str liegen die Buchstaben ja noch als BUchstabe vor!
Nö: Console.Read liefert einen int! zurück, also bereits den Code des Zeichens. Du bekommst also 35 als int und speicherst "35" als String.

_________________
>λ=
DerChamp Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 04.03.09 17:16 
Da haste Recht! Ich probier mal schnell ob's geht und berichte ;)