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

Szyfr Cezara C++ Pomocy

Object Storage Arubacloud
0 głosów
3,164 wizyt
pytanie zadane 24 sierpnia 2018 w C i C++ przez Sanchezklub Początkujący (400 p.)

Jestem poczatkujacym "programistą". Chciałem zrobić program który pozwoli mi rozszyfrować wiadomość z C++. Jako że nie chciałem od nikogo spisywać spróbowałem zrobić sam. moim załozeniem jest aby popodaniu slowa wybralo one 1 litere i ta litera przeszla przez switche przeszła do nowej postaci. Program po podaniu litery ( chcialem sprobowqac tylko z litera a ) myśli po 15 minutach nie dal rezultatu :(

#include <iostream>
#include <conio.h>
#include <cstdlib>
using namespace std;

string slowo;
int przesu;
int alfabet[29] = {'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 main()
{
    cout<< "podaj slowo"<< endl;
    cin >> slowo;
    cout << "Podaj przesuniecie" << endl;
    cin >> przesu;
    for( int i=0; i = slowo.length(); i++)
    {
    switch(slowo[i])
    {
    case 'a':
    cout << alfabet[1+przesu] << endl;
    break;
       }
    }
    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 24 sierpnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 24 sierpnia 2018 przez Sanchezklub
 
Najlepsza

W pętli for masz taki warunek:

i = slowo.length()

Czy nie miało być tam przypadkiem czegoś takiego?

i < slowo.length()

Pętla ma się wykonywać dopóki i jest mniejsze niż długość słowa. smiley

Program zatrzymuje Ci się dlatego, że nie wyczyściłeś strumienia wejściowego (więcej informacji na ten temat znajdziesz tutaj: http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Obsluga-strumienia-wejsciowego/12). Po wczytaniu stringa "slowo", a przed wczytaniem inta "przesu" daj taki kod:

cin.clear();
cin.ignore(1000, '\n');

Możesz też bardziej profesjonalnie skorzystać z nagłówka <limits> (z tego co widzę jest to w podanym przeze mnie linku opisane), ale jeśli się dopiero uczysz to nie musisz sobie zaprzątać głowy czymś takim jeszcze.

Kolejna sprawa - tablica z alfabetem powinna być typu char, wtedy std::cout wypisze Ci odpowiednie litery jako znaki (a, b, c), a nie jako odpowiadające tym znakom liczby (97, 98, 99).

Inna sprawa to taka, że rozmiar tablicy ustawiłeś na 29, a liter w alfabecie łacińskim jest 26. Jeszcze inna sprawa to taka, że ta tablica w ogóle nie jest Ci do niczego potrzebna. wink Switch i obsługa każdej literki z osobna też nie jest dobrym rozwiązaniem, bo wymaga duplikowania kodu do przesunięcia kilkadziesiąt razy! Lepszym rozwiązaniem byłoby skorzystanie z operacji modulo - pomyśl sam, jak można by jej tutaj użyć.

komentarz 24 sierpnia 2018 przez Sanchezklub Początkujący (400 p.)
dziekuje bardzo zaczyna dzialać. Wcześniej mialem litery oznaczone jako char ale coś musaiłem głupio poprawić :)

Podobne pytania

0 głosów
1 odpowiedź 742 wizyt
pytanie zadane 24 marca 2019 w C i C++ przez inc0gnito Początkujący (260 p.)
0 głosów
0 odpowiedzi 481 wizyt
pytanie zadane 11 lipca 2018 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 325 wizyt

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...