Tekst od tyłu

0

Witam, mam problem z tym w jaki sposób napisać program który prosi użytkownika o podanie zdania do tablicy, lub wyrazu oczywiście, a następnie to zdanie, lub wyraz odczytuje od tyłu. Pozdrawiam.

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
char txt[80],odwrocony[txt];
int w=0;
cout<<"Podaj ciag znakow:"<<endl;
cin.getline(txt,80);

system("pause");
return 0;

}

To pierwsza część która była banalna, proszę o pomoc w tej drugiej części... Oczywiście w internecie pełno jest różnego rodzaju rozwiązań, ale za pomocą funkcji, których nie rozumiem. Proszę więc o jakieś proste rozwiązanie problemu, bez żadnych funkcji. Pozdrawiam, i z góry dzięki!!! :)

0

Więc je zrozum (te funkcje). Czy sądzisz że dasz rady przebrnąć semestr bez nauczenia się funkcji?
Po wczytaniu znaków przez cin.getline(txt,80) jeżeli użytkownik podał słowo Kot to w tablice txt będziesz miał:
txt[0]='K';
txt[1]='o';
txt[2]='t';
txt[3]=0; // to jest znak o kodzie ASCII równym 0 nie znak '0'. Będzie na końcu napisu jako że jest znacznikiem końca

0

No ok, w takim razie wychodzi tak jakby:
txt[0]=txt[3]
txt[1]=txt[2]
W ten sposób po użyciu couta dostanę wyraz w tym wypadku"tok", i niby ok, ale jak użytkownik poda zdanie składające się z 50 liter no to nie będę wypiywał po kolei który element odpowiada innemu. Jakiś pomysł?

0

Nie! txt[3] ma zostać na miejscu bo to znak końca zaś odwrócić masz cały napis:
odwrocony[0]=txt[2];
odwrocony[1]=txt[1];
odwrocony[2]=txt[0];
odwrocony[3]=txt[3];
Ale to tylko przy długości wprowadzonego napisu równemu dokładnie 3-m znakom.
Najpierw ustalasz tą długość szukając w txt znaku 0.

0

No dzięki, rzeczywiście, tutaj musi być druga tablica, ale właśnie tutaj mam problem... Jeśli użytkownik poda 50 wyrazów np no to wtedy nie będę pisał 50 razy że odwrocony[0]==txt[blablabla] itd. I właśnie co tu zrobić żeby tego nie wypisywać kilkadziesiąt razy.

0

Napisze ktoś jak to będzie wyglądało? Mam jeszcze sporo przykładów do zrobienia, nie wpadnę na to jak to ma wyglądać... ;/

0
mistergol napisał(a):

Napisze ktoś jak to będzie wyglądało? Mam jeszcze sporo przykładów do zrobienia, nie wpadnę na to jak to ma wyglądać... ;/

Będzie to wyglądało tak:

  1. pobierz ciąg znaków
  2. dla każdego znaku począwszy od ostatniego wypisz znak.

Prościej się już chyba nie da. :)

0

Jeśli C++ to po co się męczyć? Wystarczy std::string, std::getline(), std::string::reverse_iterator, std::ostream_iterator, std::copy().

0

Będzie wyglądało mniej więcej tak:

max = szukaj_pozycji_znaku_0(ciag_znakow);
for (od 0 do max)
odwrocone[indeks] = ciag_znakow[max-indeks] lub print(ciag_znakow[max-indeks]) //albo gdy print, to po prostu od max do 0 

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