WSTĘP:
Witam,
pracuje nad napisaniem programu szyfrującego który w zbiorze przypadkowych cyfr będzie ukrywał litery.
Przykład (Ctrl+f >> znajdź 9):
999999964786547996476599999994638364899999956.996995574999999
995456765565565997656599686888687677899364995743.995743995647
999999939946994999994699999994999999799999937.994999997999999
6886699599379939946997364739969934566994.99564997993994993735
99999994999999599999439999999599999949946599.6997999996999999
Odstępy między wierszami w edytorze tego posta są bardzo duże, nie wiem czy będzie to widać w samym poście, ale powinien ukazać się naszym oczom napis "Subscribe".
Wymyśliłem sobie, że podzielę takie "wiersze" zbudowane z 5 linii cyfr na obszary po 50 znaków w których będzie jedna litera.
Jestem początkujący - przerobionych 10 lekcji Pana Mirosława na youtube o C++.
PROTOTYPOWY KOD:
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <time.h>
#include <windows.h>
using namespace std;
int szufladka[50];
int klucz;
string slowo;
int randWithout(int key)
{
int value = rand()%9;
if (value >= key) {value++;}
return value;
}
int main()
{
cout << "Wpisz klucz (max 1): ";
cin >> klucz;
cout << "Wpisz I albo C (max 1): ";
cin >> slowo;
srand(time(NULL));
if (slowo == "I")
{
for (int i=0; i<=49; i+=10 )
{
szufladka[i] = randWithout(klucz);
szufladka[i+1] = randWithout(klucz);
szufladka[i+2] = randWithout(klucz);
szufladka[i+3] = randWithout(klucz);
szufladka[i+4] = klucz;
szufladka[i+5] = klucz;
szufladka[i+6] = randWithout(klucz);
szufladka[i+7] = randWithout(klucz);
szufladka[i+8] = randWithout(klucz);
szufladka[i+9] = randWithout(klucz);
cout<< szufladka[i];
cout<< szufladka[i+1];
cout<< szufladka[i+2];
cout<< szufladka[i+3];
cout<< szufladka[i+4];
cout<< szufladka[i+5];
cout<< szufladka[i+6];
cout<< szufladka[i+7];
cout<< szufladka[i+8];
cout<< szufladka[i+9]<<endl;
}
}
if (slowo == "C")
{
for (int i=0; i<=0; i++)
{
szufladka[i] = randWithout(klucz);
szufladka[i+1] = klucz;
szufladka[i+2] = klucz;
szufladka[i+3] = klucz;
szufladka[i+4] = klucz;
szufladka[i+5] = klucz;
szufladka[i+6] = klucz;
szufladka[i+7] = klucz;
szufladka[i+8] = klucz;
szufladka[i+9] = randWithout(klucz);
cout<< szufladka[i];
cout<< szufladka[i+1];
cout<< szufladka[i+2];
cout<< szufladka[i+3];
cout<< szufladka[i+4];
cout<< szufladka[i+5];
cout<< szufladka[i+6];
cout<< szufladka[i+7];
cout<< szufladka[i+8];
cout<< szufladka[i+9]<<endl;
}
for (int i=10; i<=39; i+=10)
{
szufladka[i] = randWithout(klucz);
szufladka[i+1] = klucz;
szufladka[i+2] = klucz;
szufladka[i+3] = randWithout(klucz);
szufladka[i+4] = randWithout(klucz);
szufladka[i+5] = randWithout(klucz);
szufladka[i+6] = randWithout(klucz);
szufladka[i+7] = randWithout(klucz);
szufladka[i+8] = randWithout(klucz);
szufladka[i+9] = randWithout(klucz);
cout<< szufladka[i];
cout<< szufladka[i+1];
cout<< szufladka[i+2];
cout<< szufladka[i+3];
cout<< szufladka[i+4];
cout<< szufladka[i+5];
cout<< szufladka[i+6];
cout<< szufladka[i+7];
cout<< szufladka[i+8];
cout<< szufladka[i+9]<<endl;
}
for (int i=40; i<=49; i+=10)
{
szufladka[i] = randWithout(klucz);
szufladka[i+1] = klucz;
szufladka[i+2] = klucz;
szufladka[i+3] = klucz;
szufladka[i+4] = klucz;
szufladka[i+5] = klucz;
szufladka[i+6] = klucz;
szufladka[i+7] = klucz;
szufladka[i+8] = klucz;
szufladka[i+9] = randWithout(klucz);
cout<< szufladka[i];
cout<< szufladka[i+1];
cout<< szufladka[i+2];
cout<< szufladka[i+3];
cout<< szufladka[i+4];
cout<< szufladka[i+5];
cout<< szufladka[i+6];
cout<< szufladka[i+7];
cout<< szufladka[i+8];
cout<< szufladka[i+9]<<endl;
}
}
return 0;
}
KOMENTARZ I PYTANIA:
Komentarz: Kod wg mnie jest za długi, ale na tym popracuję po przerobieniu wskaźników.
Program na razie obsługuje tylko 2 litery - "I" oraz "C".
Pytania: Obecnie zastanawiają mnie 2 rzeczy:
1. Czy macie jakiś przystępny (dla początkującego) pomysł w jaki sposób mogę spowodować aby program nie rozpoznawał tylko pojedynczych znaków, a ciągi znaków (wyrazy), np. proste "IC" i wykonywał poszczególne instrukcje wg kolejności wpisywania liter?
2. W moim planie "wiersz" z tak zbudowanych liter powinien mieć 5 wierszy oraz 82 kolumny.
W związku z powyższym, w każdym tak zbudowanym "wierszu" powinny zmieścić się 8 zaszyfrowanych liter (każda to 50 szufladek w tabeli).
Czy macie pomysł w jaki sposób spowodować aby poszczególne litery zaszyfrowane były od lewej do prawej, a nie jedna pod drugą? Chodzi o budowanie całych wyrazów aby szyfr był szyfrem :)
Przykład budowy "wiersza" (w każdej szufladce jest cyfra):
PODSUMOWANIE:
Nie wiem czy nie rzucam się z motyką na słońce na takim poziomie, ale taki projekt wydaje mi się bardzo interesujący, dzięki czemu dużo ćwiczę, poza tym nigdzie mi się nie spieszy.
Z góry dziękuję za wszystkie komentarze i pomoc! :)