Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wprowadzanie wartości i ciągu znaków

Ostatnio zmodyfikowano 2020-11-22 14:21
Autor Wiadomość
wwojtas
Temat założony przez niniejszego użytkownika
Wprowadzanie wartości i ciągu znaków
» 2020-11-22 12:15:17
Witam i uszanowanko.

Jestem początkującym programistą, więc problem niby błahy ale nie wiem co zrobić? Help

Program (szyfr Cezara) przesuwa litery w prawo o liczbę z zakresu od 1 do 25 (znak spacji pozostaje bez zmian).

Dane wejściowe:
W pierwszej linii podana jest liczba z zakresu od 1 do 25 określająca o ile należy przesunąć litery w prawo. Jeżeli liczba nie będzie z tego zakresu, to program ma poprosić o ponowne wprowadzenie liczby.
W drugiej linii podawane jest zdanie do zaszyfrowania składające się tylko z DUŻYCH liter (A-Z) oraz spacji  -  tu nie wiem co zrobić wczytam klucz, wczytam ciąg znaków bez spacji.
Ale nie wiem jak zrobić by po wczytaniu klucza  wczytać ciąg znaków ze spacją.
próbowałem getline(cin, wyrazSzyfruj); ale coś jest nie tak
Kod poniżej:

C/C++
#include <iostream>

using namespace std;


string szyfrCezara( int klucz, string wyrazSzyfruj )
{
    for( int i = 0; i < wyrazSzyfruj.size(); i++ )
    {
        int x = wyrazSzyfruj[ i ] + klucz;
        if( x < 65 )
             wyrazSzyfruj[ i ] +=( 26 + klucz );
        else if( x > 90 )
             wyrazSzyfruj[ i ] -=( 26 - klucz );
        else
             wyrazSzyfruj[ i ] += klucz;
       
    }
    return wyrazSzyfruj;
}

string szyfrCezaraDekoder( int klucz, string wyrazOdszyfruj )
{
   
    for( int i = 0; i < wyrazOdszyfruj.size(); i++ )
    {
        int x = wyrazOdszyfruj[ i ] - klucz;
        if( x < 65 )
             wyrazOdszyfruj[ i ] +=( 26 - klucz );
        else if( x > 90 )
             wyrazOdszyfruj[ i ] -=( 26 + klucz );
        else
             wyrazOdszyfruj[ i ] -= klucz;
       
    }
    return wyrazOdszyfruj;
}


int main()
{
    string wyrazSzyfruj;
    int klucz;
    do
    {
        cout << "Podaj klucz szyfrowania: ";
        cin >> klucz;
    } while( klucz > 25 || klucz < 1 );
   
    cin >> wyrazSzyfruj;
   
    cout << "Wyraz zaszyfrowany to: ";
    cout << klucz << szyfrCezara( klucz, wyrazSzyfruj );
    cout << endl;
   
    cout << "Wyraz rozszyfrowany to: ";
    cout << szyfrCezaraDekoder( klucz, szyfrCezara( klucz, wyrazSzyfruj ) );
    cout << endl;
   
    return 0;
}
P-177729
pekfos
» 2020-11-22 14:21:38
próbowałem getline(cin, wyrazSzyfruj); ale coś jest nie tak
» Kurs C++ / FAQstd::getline() mi nie działa! pytanie/odpowiedź
P-177732
« 1 »
  Strona 1 z 1