Dlaczego k mam inna wartość niź wartość pomocnica?

0

Witam mam problem z programem. W pętlą for mam zmienna pomocniczą która mam pamiętać w którym kroku pętli jestem. Ale mimo przypisaniu na końcu pętli zmiennej pomocniczej do k, k i tak zamiast mieć wartość np. 2 ma wartość 3.

#include <iostream>
#include <string>
#include <sstream>


int main()
{
    int ile = {};
    std::cin >> ile;
    for ( int i = 0 ; i < ile ; ++i)
    {
        std::string litera = {};
        std::string koncowy_ciag = {};
        std::string klon = {};
        koncowy_ciag.clear();
        litera.clear();
        std::cin >> litera;
        klon.insert(0,litera);
        std::cout << "to jest kopia stringa litera: " << klon << std::endl;
        int flaga = {};
        std::cout << "ile mam liter " << litera.size() << std::endl;
        for ( int k = 0 ; k < litera.size() ; ++k)
        {
            std::cout << "to jest liter[k]: " << litera[k] << std::endl;
            std::cout << "to jestliter [k++]: " << litera[k++] << std::endl;
            std::cout << "to jest k: " << k << std::endl;
            int pomicnicze_k = k;
            int pom_k = k;
            std::cout << "to jest pomicnicze_k:" << pomicnicze_k << std::endl;
            std::cout << "to jest pom_k:" << pom_k << std::endl;
            if ( litera[k] == litera[k++])
            {
                flaga++;
                koncowy_ciag += litera[pomicnicze_k];
                std::cout << "string koncowy: " <<koncowy_ciag << std::endl;
            }
            std::cout << "to jest pomicnicze_k:" << pomicnicze_k << std::endl;
            std::cout << "to jest pom_k:" << pom_k << std::endl;
            k = pom_k;
        }
    }
    return 0;
}
2

Bo pętla for robi ++k pod koniec pętli?

if ( litera[k] == litera[k++])

Mylące i błędogenne, pisz normalnie

if (litera[k] == litera[k+1])
int ile = {};

ile to liczba, więc inicjalizuj po prostu

int ile = 0;
std::string litera = {};

string automatycznie się inicjalizuje do pustego stringa, więc wystarczy

std::string litera;

Swoją drogą nazwa litera sugeruje, że to jest jedna litera, a nie ciąg.

1 użytkowników online, w tym zalogowanych: 0, gości: 1