Autor Beitrag
Yaddle
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 21.08.11 10:19 
Hey Leute,

ich versuche derzeit eine Cmd-Verschlüsselungssoftware zu schreiben. Habe auch schon ordentlich was geschaftt, aber der Cmd gibt mir immer nur Leerzeichen aus und ich weiß nicht wo der Fehler liegt.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
namespace Key
{
    class Program
    {
        static char[] alpha = "abcdefghijklmnopqrstuvwxyz .:,;-?!()".ToCharArray();
        static void Main(string[] args)
        {
            string stringinput;
            Console.WriteLine("Geben Sie den zu verschlüsselnen Text ein...");  //Eingabe auslesen + formatieren
            stringinput = Console.ReadLine();
            stringinput = stringinput.ToLower();

            double Key;
            Console.WriteLine("Geben Sie die Verschlüsselung ein..."); //Schlüssel auslesen
            Key = Convert.ToDouble(Console.ReadLine());

            if (Key > alpha.Length)
            {
                Key = Key - (Convert.ToDouble(alpha.Length) * Math.Floor(Key / Convert.ToDouble(alpha.Length)));
            }
            if (Key < -alpha.Length)
            {
                Key = Key + (Convert.ToDouble(alpha.Length) * Math.Floor(-Key / Convert.ToDouble(alpha.Length)));
            }
                    
            char[] charArr = stringinput.ToCharArray(); //Array mit Eingabe-Buchstaben anlegen

            char[] outputarr = new char[charArr.Length]; // OutputArray mit der selben Größe anlegen

            outputarr = Verschlüsseln(charArr,Key);  //Zuweisung des Outputs

            
            
            Console.WriteLine(outputarr); //Ausgabe des verschlüsselten Textes
            Console.ReadLine(); // Console offen halten
        }

        static char[] Verschlüsseln(char[] input, double key) 
        {
             // char-Array mit erlaubten Zeichen
            char[] output = new char[input.Length];                                                                     // Rückgabe-Array mit größe des Input Arrays
            int x = input.Length;                                               // Größe des Inputarrays
            double newindex;                                                    // neuer index für das Alphabetsarray
            
            for (int j = 0; j < x; j++)                                         // für die Länge der Eingabe
            {
                
                for(int k = 0;k > alpha.Length;k++)                                                     
                {
                    if (input[j].ToString() == alpha[k].ToString())                                       // 
                    {
                        newindex = Convert.ToDouble(k) + key;
                        if (newindex > alpha.Length)
                            {
                            newindex -= alpha.Length;
                            }
                        output[j] = alpha[Convert.ToInt32(newindex)];
                        break;
                    }
                }

            }
            return output;
        }
            
    }

        
}

Achja, ich erhalte keine Fehler-Meldungen nur am Rande :)

Bedanke mich jetzt schoneinmal für eure Hilfe
Greetz

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: So 21.08.11 15:12 
Hallo,

geh mit dem Debugger durch und schau dir die Werte an. Dann kannst du feststellen wo sich das Programm anders verhält als gewollt. Und dann halt so korrigieren dass es passt.


mfG Gü

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
Xcalibur
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 22.08.11 13:09 
Hey

ausblenden C#-Quelltext
1:
for(int k = 0;k > alpha.Length;k++)					


da wird nie was passieren den alpha.length wird niemals kleiner als k sein wenn k bei 0 startet.

also stattdessen mal

ausblenden C#-Quelltext
1:
for(int k = 0;k < alpha.Length;k++)					


Gruß Xcalibur
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Do 08.09.11 18:57 
Hey,

müsstest du statt
ausblenden C#-Quelltext
1:
for (int j = 0; j < x; j++)					

nicht
ausblenden C#-Quelltext
1:
for (int j = 0; j > x; j++)					

machen?
Sonst ist wird die schleife ja nicht ausgeführt weil wenn j = 0 startet ist es doch schon kleiner als x.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler