• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie Kryptologia Szyfr Tablica ASCII

Cloud VPS
0 głosów
1,153 wizyt
pytanie zadane 6 maja 2015 w C i C++ przez veryhotshark Obywatel (1,620 p.)
Witam wymysliłem taki kod z tablicą ASCII mianowicie chce zebyscei mi pomogli napisac kod do szyfru ,algorytm . Chce zeby aplikacja w konsoli działała tak że po napiszaniu zdania np. "mam 22 lata" to mi po enterze zasyfrowalo.

moj pomysł na szyfr jest taki że cyfra która odpowiada danej literce np . duze "A" to liczba 65 i chce numer 65 zamienic na numer w systemie dwojkowym czyli 1000001  i gdy pisze literke A to chce zeby pojawiła się cyfra 1000001 tylko ze nie wiem jak napisac kod bardzo byłbym wdzeiczny gdybyscie mi mogli pomóc wystarczy tylko przykład a ja sam dokoncze. dziekuje

2 odpowiedzi

+1 głos
odpowiedź 6 maja 2015 przez Radfler VIP (101,030 p.)
edycja 6 maja 2015 przez Radfler

Mój przepis (jak możesz to sam napisać):

1. Napisz funkcję zmianiającą znak na string składający się z zer i jedynek (np. string to_bin(char), ale lepiej poszukać w internecie ;)

2. Stwórz sobie string (będący szyfrem)

3. W pętli for (lub foreach) wysyłaj do funkcji to_bin(char) znaki, a zwrócony string dopisuj do szyfru operatorem +=

4. Takich pętli używaj do przeglądnia stringów:

string szyfr = "Hello";

// Pętla for z użyciem zwykłych liczb
for(int i=0; i<szyfr.size(); i++)
    cout << szyfr[i];

// Z użyciem iteratorów
for(string::iterator it = szyfr.begin(); it != szyfr.end(); ++it)
    cout << *it;

// Pętla foreach w stylu C++11
for(char &i : szyfr)
    cout << i;

EDIT:

Napisałem taki kod :) Funkcja szyfruj() przyjmuje string i zwraca go w postaci bitowej (zera i jedynki)

Bitset to klasa reprezentująca bity: http://en.cppreference.com/w/cpp/utility/bitset

#include <iostream>
using namespace std;
#include <bitset>

string szyfruj(const string &txt) {

    // Rezultat
    string result;

    // Zestaw bitów reprezentujący znak
    bitset<sizeof(char) * 8> bits;

    for(auto &i : txt) { // foreach (na każdy element)

        // 'Orowanie' bitów ze znaku
        bits |= i;

        // Dopisanie nowych bitów i spacji
        result += bits.to_string() + ' ';

        // Reset zestawu bitów
        bits.reset();
    }

    return result;
}

int main() {

    // Mój tekst
    string tekst;

    // Pobranie funkcją getline()
    getline(cin, tekst);

    // Zapisanie szyfru
    string szyfr = szyfruj(tekst);

    cout << "\nPo szyfrowaniu\n" << endl;

    cout << szyfr;
}
+1 głos
odpowiedź 6 maja 2015 przez niezalogowany
Powinieneś zrobić tak:

1. Deklaracja zmiennej typu string

2. Wycinanie znaku po znaku za pomocą SubString()

3. Konwersja znaku do zmiennej int (dzieki temu otrzymamy kod ASCII)

itd...

tu masz pomocny link:

http://4programmers.net/C/Konwersje_int_na_string_i_string_na_int

Podobne pytania

0 głosów
1 odpowiedź 1,298 wizyt
pytanie zadane 29 kwietnia 2015 w C i C++ przez veryhotshark Obywatel (1,620 p.)
0 głosów
1 odpowiedź 929 wizyt
pytanie zadane 27 maja 2015 w C i C++ przez LogicznyMat Użytkownik (940 p.)
0 głosów
1 odpowiedź 754 wizyt
pytanie zadane 17 września 2019 w SPOJ przez coderCpp93 Gaduła (4,200 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,909 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...