Hey Leute, ich programmiere noch nicht lange und bin gerade dabei es für die Hochschule zu lernen...
und zwar habe ich ein paar Probleme bei folgender Aufgabe:
Zunächst mal meine bisherige Lösung:
Folgende Fragen:
1. in der main methode wird am ende der entschlüsselte Text (letzte for-schleife) nicht ausgegeben. warum?!
2. Wie hätte ich das mit den vorgegebenen Funktionen lösen können?
Wie soll das ohne Liste überhaupt gehen? Weil spätestens bei der Verschlüsselungsfunktion Polybios(Texteingabe) bekäme ich ja einen String raus z.B. "1 1 2 2 10" => (A A B B J)
Und wenn ich jetzt den verschlüsselten Text in die Funktion Polybios_Zurueck() als Parameter setze um diesen Code wieder zu entschlüsseln in "A A B B J" dann könnt der ja z.B. die 10 nicht als 10 wahrnehmen, da ja jedes einzelne Char überprüft wird ob es die gleiche Zahl (String) ist wie bei string[ , ] Zahlen
Z.B.
if (string Zahlen [i, j] == str[si].ToString) (Konvertierung des Chars in ein String) Console.Write(Alphabet[i, j];
Sprich wenn (1 == 1) dann gebe Alphabet Buchstabe "A" aus
Aber wenn der jetzt eine 10 vergleichen will, dann wird die 10 ja nicht als ganzes betrachtet sondern aus 1 und 0. Und das Programm wird dann von char zu char vergleichen. Sprich zweistellige Zahlen lassen sich so nicht vergleichen.
Wie kann ich das also mit den Funktionen:
static string polybios(string str);
static string polybios_zurueck(string str);
lösen?
Bin für jede Hilfe dankbar!
LG
und zwar habe ich ein paar Probleme bei folgender Aufgabe:
Ich soll ein Programm schreiben, was einen Text (String) einliest und dieser soll dann verschlüsselt werden.
A = 1, B = 2, C = 3.... Y/Z = 25 (je nach Kontext wird der richtige Buchstabe dann abgeleitet)
In der Aufgabenstellung sind zwei vorgegebene Funktionen:
static string polybios(string str);
static string polybios_zurueck(string str);
Die Funktionen sollen einen Text verschlüsseln und wieder entschlüsseln.
Zunächst mal meine bisherige Lösung:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Hausaufgabe_3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Bitte geben sie einen gewünschten Text ein:");
string Texteingabe = Console.ReadLine();
Console.WriteLine();
Console.WriteLine("Der Text wird nun verschlüsselt");
for (int i = 0; i < 3; ++i)
{
Thread.Sleep(1000);
Console.Write(". . ");
}
Console.WriteLine();
List<string> v = Polybios(Texteingabe);
Console.WriteLine();
Console.WriteLine("Der Text wurde erfolgreich verschlüsselt");
Console.WriteLine();
Console.WriteLine("Der verschlüsselte Text lautet: ");
Console.WriteLine();
for (int i = 0; i < v.Count; i++)
{
Console.Write(v[i] + " ");
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Um den Text wieder zu entschlüsseln, drücken Sie bitte eine beliebige Taste");
Console.ReadKey();
Console.WriteLine();
Console.WriteLine("Der Text wird nun entschlüsselt");
for (int i = 0; i < 3; ++i)
{
Thread.Sleep(1000);
Console.Write(". . ");
}
Console.WriteLine();
List<string> e = Polybios_Zurueck(v);
Console.WriteLine();
Console.WriteLine("Der Text wurde erfolgreich entschlüsselt");
Console.WriteLine();
for (int i = 0; i < e.Count; i++) // Warum gibt die Schleife nicht den entschlüsselten Text aus?!
{
Console.Write(e[i] + " ");
}
Console.ReadKey();
}
static List<string> Polybios(string str)
{
List<string> Verschlüsselung = new List<string>();
string[,] Alphabet = {
{ "A", "B", "C", "D", "E" },
{ "F", "G", "H", "I", "J" },
{ "K", "L", "M", "N", "O" },
{ "P", "Q", "R", "S", "T" },
{ "U", "V", "W", "X", "Y" }
};
string[,] Zahlen = {
{ "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" }
};
for (int si = 0; si < str.Length; si++)
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (Alphabet[i, j] == str[si].ToString())
{
Verschlüsselung.Add(Zahlen[i, j]+" ");
}
}
}
}
return Verschlüsselung;
}
static List<string> Polybios_Zurueck(List<string> str)
{
List<string> Entschlüsselung = new List<string>();
string[,] Zahlen = {
{ "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" }
};
string[,] Alphabet = {
{ "A", "B", "C", "D", "E" },
{ "F", "G", "H", "I", "J" },
{ "K", "L", "M", "N", "O" },
{ "P", "Q", "R", "S", "T" },
{ "U", "V", "W", "X", "Y" }
};
for (int si = 0; si < str.Count; si++)
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (Zahlen[i, j] == str[si])
{
Entschlüsselung.Add(Alphabet[i, j]+" ");
}
}
}
}
return Entschlüsselung;
}
}
}
Folgende Fragen:
1. in der main methode wird am ende der entschlüsselte Text (letzte for-schleife) nicht ausgegeben. warum?!
2. Wie hätte ich das mit den vorgegebenen Funktionen lösen können?
Wie soll das ohne Liste überhaupt gehen? Weil spätestens bei der Verschlüsselungsfunktion Polybios(Texteingabe) bekäme ich ja einen String raus z.B. "1 1 2 2 10" => (A A B B J)
Und wenn ich jetzt den verschlüsselten Text in die Funktion Polybios_Zurueck() als Parameter setze um diesen Code wieder zu entschlüsseln in "A A B B J" dann könnt der ja z.B. die 10 nicht als 10 wahrnehmen, da ja jedes einzelne Char überprüft wird ob es die gleiche Zahl (String) ist wie bei string[ , ] Zahlen
Z.B.
if (string Zahlen [i, j] == str[si].ToString) (Konvertierung des Chars in ein String) Console.Write(Alphabet[i, j];
Sprich wenn (1 == 1) dann gebe Alphabet Buchstabe "A" aus
Aber wenn der jetzt eine 10 vergleichen will, dann wird die 10 ja nicht als ganzes betrachtet sondern aus 1 und 0. Und das Programm wird dann von char zu char vergleichen. Sprich zweistellige Zahlen lassen sich so nicht vergleichen.
Wie kann ich das also mit den Funktionen:
static string polybios(string str);
static string polybios_zurueck(string str);
lösen?
Bin für jede Hilfe dankbar!

LG
Zuletzt bearbeitet: