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 Nov 19, 2021 um 21:19:52 Uhr
Titel korrigiert und Code formatiert

Content-Key: 1530699503

Url: https://administrator.de/contentid/1530699503

Printed on: April 27, 2024 at 20:04 o'clock

Member: rubberman
rubberman Nov 19, 2021 at 22:33:06 (UTC)
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
Member: Donevito96
Donevito96 Nov 20, 2021 at 12:31:43 (UTC)
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
Member: rubberman
rubberman Nov 20, 2021 at 14:25:44 (UTC)
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
Member: GrueneSosseMitSpeck
GrueneSosseMitSpeck Nov 22, 2021 at 11:46:22 (UTC)
Goto Top
nun keine Schleifen... C kann auch noch Goto.
Member: rubberman
rubberman Nov 22, 2021 updated at 13:34:33 (UTC)
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.