Kod27 01

Z Repozytorium Wiedzy
Skocz do: nawigacja, szukaj
#include <string.h>
#include <stdio.h> //gets(), toupper()
#include <iostream>
using namespace std;
char wprowadzony[99], zaszyfrowany[99];
int dlugoscTekstuwprowadzonego = 0, przesuniecie = 0;
char zaszyfrowanaliterka (char literka, int przesuniecie);
void powitanie();
void wczytajDane();
void zaszyfrujDane();
void wyswietlZaszyfrowaneZdanie();
bool czyLiterka(char literka);

int main() {
	powitanie();	
	wczytajDane();
	zaszyfrujDane();
	wyswietlZaszyfrowaneZdanie();
	return 0;
}
void powitanie(){
	cout << "Program szyfr Cezara.\n";
	cout << "\nProgram edukacyjny, nie korzysta z tablicy ASCII\ntak jak nie korzystal z tej tablicy Juliusz Cezar tysiace lat temu.\n";
}
void wczytajDane() {
	do {
		cout << "Szyfrowane sa znaki alfabetu lacinskiego, bez znakow interpunkcyjnych i spacji. \nPodaj zdanie do zaszyfrowania (99 znakow): ";
		gets(wprowadzony); //pobierz od uzytkownika ciag/tablice znakow
		dlugoscTekstuwprowadzonego = strlen(wprowadzony);
	} while (dlugoscTekstuwprowadzonego>99);
	do {
		cout << "Podaj przesuniecie (max. 10 znakow): ";
		cin >> przesuniecie;
	} while (przesuniecie>10);
}
void zaszyfrujDane () {
	bool czyLitera=false;
	for (int i=0;i<dlugoscTekstuwprowadzonego;i++) wprowadzony[i] = toupper(wprowadzony[i]);
	cout << "\nPrzyjeto do zaszyfrowania: \n";
	for (int j=0;j<dlugoscTekstuwprowadzonego;j++) cout << wprowadzony[j];
	for (int i=0;i<dlugoscTekstuwprowadzonego;i++) zaszyfrowany[i]=0; //przygotowanie tablicy
	for (int i=0;i<dlugoscTekstuwprowadzonego;i++) {
		if (czyLiterka(wprowadzony[i])==true) {zaszyfrowany[i] = zaszyfrowanaliterka(wprowadzony[i], przesuniecie);}
		if (czyLiterka(wprowadzony[i])==false) {zaszyfrowany[i] = wprowadzony[i];}
	}
}
bool czyLiterka(char literka) {
	if ((literka >= 'A') && (literka <='Z')) return true; else return false;
}
char zaszyfrowanaliterka (char literka, int przesuniecie){
	char alfabet[25]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','W','X','Y','Z'};
	for (int j=0;j<25;j++) {
		if (literka==alfabet[j]) {
			if (j+przesuniecie >= 25) return alfabet[j+(przesuniecie - 25)];
			if (j+przesuniecie < 25) return alfabet[j+przesuniecie];
		} 
	}		
}
void wyswietlZaszyfrowaneZdanie() {
	cout << "\nZdanie zaszyfrowane:\n";
	for (int i=0;i<dlugoscTekstuwprowadzonego;i++) cout << zaszyfrowany[i];
}
Zobacz: Licencja kodów źródłowych