donevito96
Goto Top

Verschlüsselung in C++ ohne Schleifen

Hallo ich soll für die Ausbildung eine Verschlüsselung programmieren und ich darf keine Schleife verwenden.
Diesbezüglich habe ich Probleme weil ich nicht weiss wie ich die Buchstaben verschieben soll

Code:
#include <iostream>
#include<string>
using namespace std;

string Teingabe;
string Ausgabe;
int ascii;

int ascii()
{
	if (ascii >= 65 && ascii <= 90) {
		cout << ascii;
	}
}
int entschluesselungsprogramm()
{
	int schrittweite;
	cout << "Bitte geben sie die Schrittweite der Entschl\x81sselung ein" << endl;  
	cin >> schrittweite;
	cout << "Sie haben eine Schrittweite von " << endl;  
	cout << schrittweite << " gew\x84hlt." << endl;  
	cout << "Bitte geben sie jetzt den Text ein, den sie Entschl\x81sseln wollen ein: ";  
	
	getline(cin, Teingabe);
	return 0;
}

int verschluesselungsprogramm()
{
	int schrittweite;
	cout << "Bitte geben sie die Schrittweite der Verschl\x81sselung ein" << endl;  
	cin >> schrittweite;
	cout << "Sie haben eine Schrittweite von " << endl;  
	cout << schrittweite << " gew\x84hlt." << endl;  
	cout << "Bitte geben sie jetzt den Text ein, den sie Verschl\x81sseln wollen ein: " << endl;  
	cin >> Teingabe;
	getline(cin, Teingabe);
	
	return 0;
}


int main()
{
	string eingabe;
	cin >> eingabe;
	

	cout << "Programm der Caesar-Verschl\x81sselung " << endl;  
	
	cout << "Bitte w\x84hlen sie aus:" << endl;  
	cout << "Entschl\x81sseln <1>" << endl;  
	cout << "Verschl\x81sseln <2>" << endl;  
	cout << "Programm beenden <3>" << endl;  

	

	

	if (eingabe == "1")  
	{
		cout << "Entschl\x81sselungs-Programm" << endl;  
		entschluesselungsprogramm();
		
	}
	else if (eingabe == "2")  
	{
		cout << "Verschl\x81sselungs-Programm" << endl;  
		verschluesselungsprogramm();
		
	}
	else if (eingabe == "3")  
	{
		cout << "Dankesch\x94n, Meister und auf Wiedersehen!" << endl;  
	}

	else
	{
		cout << "Diese Option steht nicht zur Auswahl!" << endl;  
		cout << "---------------------------------------\n";  
	}
	main();
	return 0;
}


auf eure Hilfe bin ich sehr dankbar und bis bald.
Kommentar vom Moderator tomolpi am 19.11.2021 um 22:19:52 Uhr
Titel korrigiert und Code formatiert

Content-ID: 1530699503

Url: https://administrator.de/forum/verschluesselung-in-c-ohne-schleifen-1530699503.html

Ausgedruckt am: 21.12.2024 um 16:12 Uhr

rubberman
rubberman 19.11.2021 um 23:33:06 Uhr
Goto Top
Offensichtlich ist dieses ganze Eingabe, Ausgabe, "Dankeschön Meister" Gedöns nicht das, auf was du dich konzentrieren solltest. Nimm irgendeinen String, schreib ihn hart in den Code und entwickle erst mal die notwendigen Algorithmen.
darf keine Schleife verwenden
Dann ist das wonach du suchst vermutlich "Rekursion".
#include <iostream>
#include <string>

static void RecursionTest(const std::string::const_iterator currentIter, const std::string::const_iterator endIter)
{
  if (currentIter == endIter)
    return;

  std::cout << *currentIter << std::endl;
  RecursionTest(currentIter + 1, endIter);
}

int main()
{
  const std::string testString{ "Hello World!" };  
  RecursionTest(testString.cbegin(), testString.cend());
  return 0;
}

Steffen
Donevito96
Donevito96 20.11.2021 um 13:31:43 Uhr
Goto Top
ich hab das notwendige gemacht ich weiss aber nicht wie ich das schaffe, dass der code sagt nimm den Buchstaben A und addiere das mit 4 und gib G aus. Wie die Cäsar Chiffre die Eingabe fehlt da nur noch der rest ist in ordnung und das mit dem Ascii Code hab ich eingebaut weil ich einen Ansatz hatte, dieser aber nicht funktioniert hat und ich den wieder raus nehme höchst wahrscheinlich
rubberman
rubberman 20.11.2021 um 15:25:44 Uhr
Goto Top
Cäsar Chiffre beruht auf Cäsar Ersetzung (genau wie ROT13, Atbash, oder Vigenere Chiffre). Da ein char nichts weiter als ein ganzzahliger Wert ist, kannst du einfach addieren oder subtrahieren. Die einzige Herausforderung ist, dass eine Cäsar Ersetzung rotierend ersetzen soll. Angenommen dein char ist 'X' und dein gültiger Bereich ist 'A' bis 'Z', dann soll bei einer Addition von 4 zum Anfang des Bereiches umgeschlagen werden, sodass das resultierende char 'B' ist. Diese Routine zu implementieren, ist deine eigentliche Aufgabe.

Steffen
GrueneSosseMitSpeck
GrueneSosseMitSpeck 22.11.2021 um 12:46:22 Uhr
Goto Top
nun keine Schleifen... C kann auch noch Goto.
rubberman
rubberman 22.11.2021 aktualisiert um 14:34:33 Uhr
Goto Top
Dafür, dass du einem Programmierbeginner ein goto vorschlägst, kommst du bestimmt in Hölle face-wink face-big-smile

Da wir offenbar von C++ (vielleicht auch C+- ¯\_(ツ)_/¯) reden, gäbe es noch std::for_each was natürlich auch nichts anderes als eine Schleife unter der Haube hat.