Szyfrowanie Cezara C++ Dev

0

Klasyczny szyfr Cezara polega na zastąpieniu każdej litery tekstu jawnego literą leżącą o trzy
pozycje dalej w alfabecie, na przykład A kodujemy jako D, B jako E itd. Po alfabecie
poruszamy się cyklicznie – po Z następuje z powrotem A, w związku z czym literę Z
zakodujemy jako C, Y jako B, a X jako A. Jeśli tekst jawny zawiera znak odstępu (spację),
to ten znak odstępu (i tylko on) pozostaje niezmieniony. W tym zadaniu posługujemy się
26 wielkimi literami alfabetu łacińskiego:
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 Z
Wykonaj następujące polecenia:
a) Zaszyfruj poniższy komunikat, używając klasycznego szyfru Cezara.
PRIMUM NON NOCERE

b) Szyfrowanie z kluczem k oznacza zastępowanie każdej litery literą o k pozycji dalszą,
z zachowaniem cykliczności alfabetu. Odszyfruj poniższy szyfrogram, który został
zakodowany szyfrem Cezara z kluczem k 10 .
KFO MOCKB
c) Odszyfruj poniższy szyfrogram, który został zakodowany szyfrem Cezara z kluczem
k  265 .
HTLNYT JWLT XZR

Sa to zadania z matury z informatyki Sierpien 2010
A)

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#define STOP '\n'
using namespace std;
int main() {
    int a=0;
    int b=0;
    int znacznik=0;
    char c;
    char tab[19];
    char tab2[19];
    char alfabet[26] = {'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','Z'};
    int l_znak = 0;
    cout<<"Podaj wyraz"<<'\n';
    while ((c = getchar()) != STOP) {
        tab[l_znak]=c;
        l_znak++;
    }

    if (l_znak<=20) {
        for( int i=0; i!=l_znak; i++) {
            for(int x=0; x!=23; x++) {
                if (tab[i]==alfabet[x]) {
                    b=x;
                    a=x;
                    a=a+3;
                    tab2[i]=alfabet[a];

                }
                if (tab[i]==' ') {
                    tab2[i]=' ';
                }


            }

            for(int x=23; x!=26; x++) {
                a=0;
                if (tab[i]==alfabet[x]) {
                    a=x-23;
                    tab2[i]=alfabet[a];
                }
            }

        }
        cout<<"Zaszyfrowany komunikat z uzyciem klasycznego szyfru Cezara brzmi: ";
        for(int i=0; i!=l_znak; i++) {
            cout<<tab2[i];
        }
        cout<<'\n';
        system("Pause");
    } else {
        cout<<"Podales za dlugi wyraz"<<'\n';
        system("Pause");
    }

}

Wklejam Kod z podpunktu a
Na Podpunkt a) mam odpowiedz i kod ale nie mam pojecia jak zrobic C-B czy ktos moglby mi pomoc?
Zrobic podpunkt b i c ?

2

B i C to samo co A tylko odejmujesz klucz zamiast dodawać.

Można twój kod znacznie uprościć,
kodowanie: c='A'+(c-'A'+key)%26;
dekodowanie: c='A'+(c-'A'+26-key)%26;

0

Moglbys mi to wstawic ? Gotowe ?>

0

gotowe rzeczy to pod działem "Oferty Pracy" z dopiskiem ile za takie rzeczy płacisz.

0

jak ja to na jutro musze miec ...

0

dzieki ale ja i tak musze latwiejszych komend uzywac zaraz poszperam i sprobuje tego swojego przeprawic na to w co watpie ze sie uda dzieki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1