C# :: Aufgabe #33

9 Lösungen Lösungen öffentlich

Mit Caesar Chiffre ent- und verschlüsseln

Anfänger - C# von Dome - 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.

Konsolenausgabe:

Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu

Lösungen:

1x
vote_ok
von pocki (4190 Punkte) - 07.01.2013 um 17:44 Uhr
Quellcode ausblenden C#-Code
void main()
{
	Console.Write("Geben Sie den Text ein: ");
	string inputText = Console.ReadLine();
	Console.Write("Um wie viele Stellen soll verschoben werden: ");
	string inputStellen = Console.ReadLine();
	
	int stellen = int.Parse(inputStellen) % 26;
	
	string output = Chiffre(inputText, stellen);
	
	Console.WriteLine("Ergebnis: {0}", output);
}

private static string Chiffre(string input, int stellen)
{
	string output = string.Empty;
	
	foreach (char c in input)
	{
		char x = (char)(c+stellen);
		output += x.ToString();
	}

	return output;
}
vote_ok
von Process1 (1180 Punkte) - 10.01.2013 um 02:11 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Caesar {
    class Program {
        static void Main(string[] args) {
            Console.Write("Geben Sie den Text ein: ");
            string klartext = Console.ReadLine().ToLower();
            Console.Write("Um wie viele Stellen soll verschoben werden: ");
            int nummer = Convert.ToInt32(Console.ReadLine());

            string chiffre = ""; 
            for(int i = 0; i < klartext.Length; i++)
            {
                char c = Convert.ToChar(klartext[i] + nummer);
                if (c > 'z') {
                    c = (char)(c - 26);
                } else if (c < 'a') {
                    c = (char)(c + 26);
                }
                chiffre += c; 
            }
            Console.Write("Ergebnis: " + chiffre);
        }
    }
}

vote_ok
von wladi-g (1310 Punkte) - 03.06.2014 um 13:03 Uhr
Quellcode ausblenden C#-Code
using System;

namespace CaesarVerschluesselung
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "";
            short stellen = 0;
            byte buchstabe = 0;
            string ergebnis = "";

            Console.Write("Geben Sie den Text ein: ");
            text = Console.ReadLine();
            Console.Write("Um wie viele Stellen soll verschoben werden?\n(positiv = verschlüsseln, negativ = entschlüsseln)");
            do
            {
                Console.Write("Stellen angeben: ");
            }
            while (!short.TryParse(Console.ReadLine(), out stellen));
            if (stellen < 0)
                stellen += 26;
            while (stellen < 0)
                stellen += 25;
            while (stellen > 25)
                stellen -= 25;

            foreach (Char i in text)
            {
                buchstabe = (byte) i;
                if(65 <= buchstabe && buchstabe <= 90)
                    for (int j = 0; j < stellen; j++)
                    {
                        if (buchstabe == 90)
                            buchstabe = 64;
                        buchstabe++;
                    }
                if(97 <= buchstabe && buchstabe <= 122)
                    for (int j = 0; j < stellen; j++)
                    {
                        if (buchstabe == 122)
                            buchstabe = 96;
                        buchstabe++;
                    }
                ergebnis += (char) buchstabe;
            }
            Console.WriteLine("Ergebnis: {0}", ergebnis);
        }
    }
}
vote_ok
von niknik (1230 Punkte) - 13.08.2015 um 11:06 Uhr
Ich hab tatsächlich richtig lange überlegen müssen, wie ich einen einzelnen char in der ASCII-Tabelle verschieben kann ... :D

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaesarChiffre
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Geben Sie ihren Text ein: ");
            string eingabe = Console.ReadLine();
            Console.WriteLine("Um wieviel Stellen soll verschoben werden?");
            int number;
            bool valid = false;
            do
            {
                valid = int.TryParse(Console.ReadLine(), out number);
            } while (valid != true);

            StringBuilder strBuilder = new StringBuilder(eingabe);

            int letterAscii;

            for (int i = 0; i < eingabe.Length; i++)
            {
                letterAscii = strBuilder[i];
                letterAscii += number;
                strBuilder[i] = (char)letterAscii;
            }

            string ausgabe = strBuilder.ToString();

            Console.WriteLine("Die Ausgabe: {0}", ausgabe);
            Console.ReadLine();
        }
    }
}
vote_ok
von n.rohde (400 Punkte) - 25.08.2015 um 15:21 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaesarChiffre
{
    class Program
    {
        static void Main(string[] args)
        {
            string eingabeText, erg = "";
            char[] text;
            int stellenVerschieben;

            Console.Write("Geben Sie den Text ein: ");
            eingabeText = Console.ReadLine();
            text = new char[eingabeText.Length];
            text = eingabeText.ToCharArray();
            Console.Write("Um wie viele Stellen soll verschoben werden: ");
            stellenVerschieben = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < eingabeText.Length; i++)
            {
                if ((stellenVerschieben / 26) != 0)
                    while ((stellenVerschieben / 26) != 0)
                        stellenVerschieben -= 26;

                if (Convert.ToInt32(text[i]) >= 65 && Convert.ToInt32(text[i]) <= 90)
                    if ((Convert.ToInt32(text[i]) + stellenVerschieben) > 90)
                        erg += Convert.ToString(Convert.ToChar(64 + ((Convert.ToInt32(text[i]) + stellenVerschieben) - 90))); // 96+..., da a = 97 -> wird ansonsten übersprungen
                    else
                        erg += Convert.ToString(Convert.ToChar(Convert.ToInt32(text[i]) + stellenVerschieben));
                else if ((Convert.ToInt32(text[i]) + stellenVerschieben) > 122)
                    erg += Convert.ToString(Convert.ToChar(96 + ((Convert.ToInt32(text[i]) + stellenVerschieben) - 122))); // 96+..., da a = 97 -> wird ansonsten übersprungen
                else
                    erg += Convert.ToString(Convert.ToChar(Convert.ToInt32(text[i]) + stellenVerschieben));
            }

            Console.Write("Ergebnis: " + erg);
            Console.Read();
        }
    }
}
vote_ok
von stbehl (1640 Punkte) - 05.02.2018 um 13:35 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer33
{
    class Program
    {
        static void Main(string[] args)
        {
            string neuerText = "";
            int ascii;
            Console.Write("Geben Sie den Text ein: ");
            string text = Console.ReadLine();
            Console.Write("Um wie viele Stellen soll verschoben werden: ");
            int verschieben = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i <= text.Length - 1; i++)
            {
                ascii = Convert.ToInt32(text[i] + verschieben);
                if (ascii > 64 && ascii < 91 || ascii > 96 && ascii < 123 )
                {
                    neuerText += Convert.ToChar(ascii);
                }
                else
                {
                    ascii = ascii - 26;
                    neuerText += Convert.ToChar(ascii);
                }
            }
            Console.WriteLine(neuerText);
            Console.ReadKey();
        }
    }
}
vote_ok
von stcalvin (970 Punkte) - 06.02.2018 um 15:07 Uhr
Quellcode ausblenden C#-Code
        static void Aufgabe_33()
        {
            string eingabe, ausgabe = "";
            int k, verschieben, _verschieben;
            char buchstabe;

            Console.Write("Geben Sie den Text ein: ");
            eingabe = Console.ReadLine();
            Console.Write("Um wie viele Stellen soll verschoben werden: ");
            verschieben = Convert.ToInt16(Console.ReadLine());
            _verschieben = verschieben;

            for (int i = 0; i <= eingabe.Length - 1; i++)
            {
                k = (int)eingabe[i];
                verschieben = _verschieben;
                if (k >= 65 && k <= 90)
                {
                    if (k + verschieben > 90) // funktioniert bei negativem verschieben nicht!!
                    {
                        verschieben -= (90 - k);
                        k = 64 + verschieben;
                        buchstabe = (char)k;
                        ausgabe += buchstabe;
                    }
                    else
                    {
                        k += verschieben;
                        buchstabe = (char)k;
                        ausgabe += buchstabe;
                    }
                }
                else if (k >= 97 && k <= 122)
                {
                    if (k + verschieben > 122) // funktioniert bei negativem verschieben nicht!!
                    {
                        verschieben -= (122 - k);
                        k = 96 + verschieben;
                        buchstabe = (char)k;
                        ausgabe += buchstabe;
                    }
                    else
                    {
                        k += verschieben;
                        buchstabe = (char)k;
                        ausgabe += buchstabe;
                    }
                }
            }
            Console.WriteLine("Ergebnis: {0}", ausgabe);
        }
vote_ok
von JKooP (18090 Punkte) - 27.07.2020 um 16:38 Uhr
NET Core 3.x; C# 8.x

Quellcode ausblenden C#-Code
using System;
using System.Linq;

namespace CS_Aufgabe_33_Caesar
{
    class Program
    {
        static void Main(string[] args)
        {
            var lstChar = Enumerable.Range('A', 26).Select(x => (char)x).ToList();
            char GetChar(char c, int v) => lstChar.Contains(c) ? lstChar[(lstChar.IndexOf(c) + v) % 26] : c;

            var arr = "Hslh qhjah lza".ToUpper().ToCharArray();
            Enumerable.Range(0, 25).Select(y => string.Join("", arr.Select(x => GetChar(x, y)).ToList())).ToList().ForEach(Console.WriteLine);
        }
    }
}
vote_ok
von SiiNeX (20 Punkte) - 06.10.2020 um 14:04 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Caesarverschluesselung
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Please write your Text: ");
            string userText = Console.ReadLine();
            int userNumber = TryGetInt32("how many digits should the text move?: ");
            Console.WriteLine("\n Here is your encrypted Text: " + CaesarChiffre(userText, userNumber));
            Console.ReadKey();
        }
        public static int TryGetInt32(string userInput)
        {
            Console.Write(userInput);
            int counter = 1;
            while (counter <= 7)
            {
                try
                {
                    return Convert.ToInt32(Console.ReadLine());
                }
                catch (FormatException)
                {
                    counter++;
                }
            }
            throw new Exception();
        }
        private static string CaesarChiffre(string userText, int userNumber)
        {
            string output = string.Empty;

            foreach(char abc in userText)
            {
                char x = (char)(abc + userNumber);
                output += x.ToString();
            }
            return output;
        }
    }   
}
2104388

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.