Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Szyfr Vigenere w C++ - problem - program kończy szyfrować po 5 znakach

#1
Szyfr Vigenere w C++ - problem - program kończy szyfrować po 5 znakach
Mam napisać program szyfrujący tekst z pliku dane.txt kluczem z pliku klucz.txt według szyfru Vigenere, zapisujący zaszyfrowany tekst w pliku dane_szyfr.txt.
Problem w tym, że program szyfruje tylko pierwsze szesc znaków.
Dla przykładu, kiedy chce zaszyfrować zdanie "TEKST DO ZASZYFROWANIA" kluczem "TAJNE" - dostaje zaszyfrowany tekst "METFX(spacja) ", kiedy powinniśmy dostać więcej znaków.
I odrazu mówię, że nie jest to wina spacji ani klucza, sprawdzałem inne zdania. Niezależnie co szyfruję, zawsze kończy szyfrować po 6-tym znaku, niezależnie od spacji i długości słów/klucza.

W czym jest problem?

Kod:
#include <cstdlib>
#include "stdafx.h"
#include <SDKDDKVer.h>
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

char schemat[] = {'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 const dlugosc = sizeof(schemat);

char tablica[dlugosc][dlugosc];

int poczatek;

int main(void)
{

    for(int i = 0; i < dlugosc; i++)
    {
        poczatek = i;

        for(int j = 0; j < dlugosc; j++)
        {
            if((j + poczatek) >= dlugosc)
            {
                poczatek -= dlugosc;
            }
        tablica[i][j] = schemat[j + poczatek];

        }
    
    }

ifstream tekst_s ("dane.txt");
    
string tekst, klucz, zaszyfrowany = "";

    if (tekst_s.is_open())
    {

            getline (tekst_s, tekst);

        tekst_s.close();
    }
    else
    {

        cout << "Brak pliku - " << "dane.txt" << endl;


        system("pause");
        return 0;
    }
    ifstream tekst_k ("klucz.txt");

if (tekst_k.is_open())
    {

            getline (tekst_k, klucz);

        tekst_k.close();
    }
    else
    {
        cout << "Brak pliku - " << "klucz.txt" << endl;;
        system("pause");
        return 0;
    }

    int dl_klucz = (sizeof(klucz) - 2) , dl_tekst = (sizeof(tekst) - 2);

    int j = 0;

    for(int i = 0; i < dl_tekst; i++)
    {
    
        if(((int) tekst[i]) != 32)
        {


            zaszyfrowany += tablica[( ((int) tekst[i]) - 65 ) ][ ( ( (int) klucz[j]) - 65 ) ];

            if(j < dl_klucz)
            {
                ++j;

                if( ((int) klucz[j]) == 32)
                {
                
                    ++j;
                }

            }


            if (j >= dl_klucz)
            {
                j = 0;
            }

            
            
        }
        else
        {

            zaszyfrowany += " ";
        }
        

    }
ofstream plik_zaszyfrowany;
plik_zaszyfrowany.open ("dane_szyfr.txt");
plik_zaszyfrowany << zaszyfrowany << endl;

    system("pause");
    return 0;
}
 System operacyjny: windows_seven Przeglądarka: opera
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
tlumacz szyfru vigeneraszyfrowanie plików c++ przykładszyfr vigenere c++program+szyfruje+c++szyfr vigenerekto to vigenereszyfr vigenere programszyfr vigenere szyfrowanieszyfr vigenere tłumaczvinenere kim on jest

Podobne wątki (Szyfr Vigenere w C++ - problem - program kończy szyfrować po 5 znakach)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Exclamation [VBS] Skrypt błyskawicznie się kończy TheJohan8 7 8925 28.07.2017, 16:29
Ostatni post: TheJohan8
  Szyfr Cezara - jak zrobić? Dreamer1x6xX 9 7074 04.11.2014, 18:23
Ostatni post: Dreamer1x6xX
Question [C++]Szyfr Vigenère'a w Builderze 6 (błąd Access violation). kuciapka1 2 3293 24.04.2012, 19:45
Ostatni post: kuciapka1

Skocz do:


Wybrane wątki (Szyfr Vigenere w C++ - problem - program kończy szyfrować po 5 znakach)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Skrypt usuwający pliki sylwiaa1 2 4329 28.04.2019 15:20
Ostatni post: sylwiaa1
  Środowisko do assemblera Physicist 4 9663 21.04.2019 14:04
Ostatni post: Ajgor
  VBA excel dmjs 6 9839 17.04.2019 10:20
Ostatni post: ptrick
  C++ - sens pogłębiania nauki gbr 5 9572 25.03.2019 12:53
Ostatni post: koneton
  Klasa wewnętrzna w C++ Physicist 4 9243 23.03.2019 18:28
Ostatni post: Physicist
  Ruby on Rails - tutoriale luciussulla 0 8381 23.03.2019 16:49
Ostatni post: luciussulla
Big Grin Czy dostane sie technikum informatycznego klaudiusz20046 6 11783 21.03.2019 01:28
Ostatni post: UnableToSee
  [C#] Program do moderacji czatów gier wiktrom12 0 8862 07.03.2019 15:33
Ostatni post: wiktrom12
  Mój pierwszy projekt - Pomoc rafal12999 1 9311 07.02.2019 22:01
Ostatni post: Szachista
  pomoc projekt scilab piesel18 2 10725 04.02.2019 09:03
Ostatni post: piesel18
  Szkoła Informatyczna Zikinan 1 9582 02.02.2019 17:59
Ostatni post: wojownikhaha
  [Java] Strona z zadaniami do rozwiązania i odpowiedziami rafal12999 2 10361 27.01.2019 13:44
Ostatni post: rafal12999
  kompilacja biblioteki Agui - cmake jurek2 0 9604 10.01.2019 13:12
Ostatni post: jurek2
  Zamiana całego zestawu znaków wg przyporządkowania BarHorab 5 10296 19.12.2018 16:45
Ostatni post: Szachista
  Sumowanie licz excel - problem OxyGenE 2 12987 19.12.2018 16:29
Ostatni post: Szachista