Esercizio codifica in base a posizione C++

di il
1 risposte

Esercizio codifica in base a posizione C++

Salve avrei un esercizio che non riesco a risolvere, praticamente devo creare un algoritmo di cifratura che lavora in base alla posizione di una lettera nell'alfabeto, esempio la stringa "ciao", la c è la terza lettera dell'alfabeto, e mi serve che diventi a partire da z quindi dalla fine dell'alfabeto 3 posizioni indietro, quindi x. Ho buttato giù qualcosa qui di seguito, confido in una risposta, grazie in anticipo.

#include <iostream>
#include <string>

using namespace std;

void codifica(string, size_t);
char alfabeto[26] = {'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 posizioni[26] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
int posizione = 0;


int main()
{
    string testo;
    cout << "Inserisci il testo: ";
    cin >> testo;
    size_t lunghezza = testo.size();
    codifica(testo, lunghezza);

    return 0;
}
void codifica(string testo, size_t lunghezza)
{

    for (int i = 0; i < lunghezza; i++)
    {
        for (int j = 0; j < 26; j++)
        {
            if(testo[i] == alfabeto[j])
            {
                posizione = posizioni[j];
            }
        }
        cout << alfabeto[27-posizione];
        posizione = 0;


    }
}

1 Risposte

  • Re: Esercizio codifica in base a posizione C++

    Se ci pensi basta fare semplicemente qualcosa del genere:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        char s[] = "ciao";
        for(unsigned int i = 0; s[i]; ++i)
        {
            s[i] = 'a' + 'z' - s[i];
        }
        cout << s;
    }
Devi accedere o registrarti per scrivere nel forum
1 risposte