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 8660 28.07.2017, 16:29
Ostatni post: TheJohan8
  Szyfr Cezara - jak zrobić? Dreamer1x6xX 9 7001 04.11.2014, 18:23
Ostatni post: Dreamer1x6xX
Question [C++]Szyfr Vigenère'a w Builderze 6 (błąd Access violation). kuciapka1 2 3278 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
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 10565 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 1807 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 5114 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 3938 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 4300 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 14478 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 5511 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 3520 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 16332 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 6607 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 6079 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 8006 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 7581 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 7455 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 9589 28.04.2019 19:31
Ostatni post: koneton