Porównywanie znaków

0

Witajcie. Dostałem takie zadanie w szkole. w którym trzeba wczytywać wyrazy aż do napotkania pierwszego lub drugiego wczytanego wyrazu. Na końcu programu ma się wyświetlać informacja ile miał najdłuższy wyraz najkrótszy wyraz oraz ile razy wystąpiła sytuacja że pierwsza litera aktualnego wyrazu była taka sam jak ostatnia litera poprzedniego wyrazu. I z tym ostatnim zadaniem nie mogę sobie poradzić. Wiem jak wyznaczyć pierwszą literę wyrazu (napis[0]) ale nie wiem za cholere jak wyznaczyć ostatnią, zapis napis[n-1] nic nie daje.
Wkleja tu mój kod bardzo proszę was o podpowiedzi co i jak bo już nie mam pomysłów.

#include <iostream>
#include <cstdlib>

using namespace std;

string pierwszy;
string drugi;
string aktualny;
string poprzedni;

int l_znk_najd;         //liczba najdluższego znaku
int l_znk_najk;         //liczba najkrotszego znaku
int l_znk_ts = 0;       //liczba sytuacji gdzie pierwszy znak aktualnego i ostatni znak poprzedniego jest taki sam

int main(int argc, char*argv[])
{
    cout << "======Zadanie 2======\n";
    cout << "=====Maciej Saja=====\n";

    cout << "Podaj jakis napis\n ";
    cin >> pierwszy;

    cout << "Podaj drugi napis\n";
    cin >> drugi;



    if(pierwszy.size() > drugi.size())
        {
        l_znk_najd =  pierwszy.size();
        l_znk_najk = drugi.size();
        }
    else
        {
        l_znk_najd = drugi.size();
        l_znk_najk = pierwszy.size();
        }

    

        poprzedni = drugi;

    if(pierwszy != poprzedni)
    {
        do{
            cout << "Podaj kolejny napis\n";
            cin >> aktualny;

            if(aktualny.size()>l_znk_najd)
            {
                l_znk_najd = aktualny.size();
            }
            else if(aktualny.size() < l_znk_najk)
            {
                l_znk_najk = aktualny.size();
            }

        }while(aktualny!=pierwszy && aktualny != poprzedni);
    }

    cout << "Najdluzszy wyraz mial:  " << l_znk_najd << endl;
    cout << "Najkrotszy wyraz mail:  " <<  l_znk_najk << endl;
    cout << "Sytuacja w ktorej pierwsza litera aktualnego byla taka sama jak ostatnia poprzedniego wystapila " << l_znk_ts << " razy" << endl;

    system("pause");
    return 0;
}
```c++
0

Próbuje coś z tym zrobić ale na razie problem nie rozwiązany

0

oraz ile razy wystąpiła sytuacja że pierwsza litera aktualnego wyrazu była taka sam jak ostatnia litera poprzedniego wyrazu. I z tym ostatnim zadaniem nie mogę sobie poradzić. Wiem jak wyznaczyć pierwszą literę wyrazu (napis[0]) ale nie wiem za cholere jak wyznaczyć ostatnią, zapis napis[n-1] nic nie daje.

Masz problem z wzięciem ostatniego znaku stringa? Czym jest n u Ciebie?

std::string napis = "tekst";
std::cout << napis[napis.size() - 1] << std::endl;

Pozostałe rzeczy, które potrzebujesz do tego zadania to wydaje się, że wiesz jak zrobić.

0

Dzięki wielkie. działa :)

1

Efekt taki sam, ale mniej pisania: string::back()

std::string text{"Blablabla"};
std::cout << text.back() << '\n';

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