• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed cout nie wyświetla zawartości stirng.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
621 wizyt
pytanie zadane 10 stycznia 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
zamknięte 10 stycznia 2020 przez amtrax

Witam, 

mam za zadanie odwrócić wyraz z jednej zmiennej string i zapisać już odwrócony do drugiej. 
Dlaczego program nic nie pokazuje? 

#include <iostream>

using namespace std;

int main()
{
  string liczby, pomoc1, pomoc2;
  int dl, j=0;



        cin>>liczby;
        dl=liczby.length();


          pomoc1=liczby;


        for(int i=(dl-1); i>=0; i--)
        {
         pomoc2[j]=liczby[i];
         j++;
        }
            cout<<pomoc2<<endl;


    return 0;
}

 

komentarz zamknięcia: problem rozwiazano
2
komentarz 10 stycznia 2020 przez Velta Maniak (52,790 p.)

Gwoli ścisłości, możesz użyć std::reverse:

reverse(liczby.begin(), liczby.end());
cout << liczby;

 

komentarz 10 stycznia 2020 przez amtrax Dyskutant (9,630 p.)

@amtrax, dziękuje panowie za pomoc. 

Jesteście wielcy <3 

Temat zamykam. 
Pozdrowienia 

3 odpowiedzi

+1 głos
odpowiedź 10 stycznia 2020 przez dawid2002 Mądrala (5,190 p.)
edycja 10 stycznia 2020 przez dawid2002
 
Najlepsza

Zauważ, że

pomoc2[j] = liczby[i];

Przypisuje jeden znak z "liczby" do jednego elementu "pomoc2", tylko problem jest taki, że "pomoc2" jest pusta i elementy, do których się odwołujesz nie istnieją. Żeby to rozwiązać lepiej byłoby abyś od końca dodawał znaki za pomocą operator +=. Jeśli nie zrozumiałeś o co chodzi z opisu to spójrz na ten przerobiony kod (przy okazji ci go upiększyłem):

std::string liczby, pomoc;

std::cin >> liczby;
const int dl = liczby.length();

for (int i = dl - 1; i >= 0; --i)
     pomoc += liczby[i];

std::cout << pomoc << "\n";

PS. Rozwiązanie jakie proponuje @Velta jest lepsze niż użycie pętli.   

+2 głosów
odpowiedź 10 stycznia 2020 przez Michałełe Nałogowiec (25,600 p.)

Witam

Mi wyrzuca segmentation fault - cały problem leży tutaj:

	for (int i = (dl - 1); i >= 0; i--){
		pomoc2[j] = liczby[i];
		j++;
	}

Zmienna pomoc2 jest pusta, a zmieniamy jej j-ty element.

Zmień na:

	for (int i = (dl - 1); i >= 0; i--){
		pomoc2 += liczby[i];
		j++;
	}

Operator += dodaje na koniec stringa liczby[i].

Dodam, że nie przechodziło mi bez dodania biblioteki string - nie szło "dać" do cout string'a.

+1 głos
odpowiedź 10 stycznia 2020 przez kukulim Mądrala (6,440 p.)

jako ze string pomoc2 nie jest zadeklarowany na długość [0] i jak probujesz przypisać wartość do pomoc2[1] wychodzisz poza zakres tablicy, możesz zadeklarować pomoc2=liczby;

wtedy będziesz miał odpowiednia długość tablicy taki kod:

#include <iostream>

using namespace std;

int main()
{
	string liczby, pomoc1, pomoc2;
	int dl, j = 0;

	cin >> liczby;
	dl = liczby.length();

	pomoc1 = liczby;
	pomoc2 = liczby; // <---- tytaj deklaracja

	for (int i = (dl - 1); i >= 0; i--)
	{
		pomoc2[j] = liczby[i];
		j++;
	}

	cout << pomoc2 << endl;
	return 0;
}

Ps. zmienna długosc1 jest niepotrzeba w kodzie bo i tak w petli masz liczby[i];

Mozesz tez rozwiazać to w taki sposob, do zmiennej dlugosc2 dodac poszczegulne znaki z stringa liczby, lepjej to zobaczysz w kodzie:

#include <iostream>

using namespace std;

int main()
{
	string liczby, pomoc2;
	int dl;

	cin >> liczby;
	dl = liczby.length();

	for (int i = (dl - 1); i >= 0; i--)
	{
		pomoc2 += liczby[i]; //<---- znak += jest kluczowy
	}
	cout << pomoc2 << endl;
	return 0;
}

 

Podobne pytania

0 głosów
3 odpowiedzi 1,588 wizyt
pytanie zadane 1 marca 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
2 odpowiedzi 502 wizyt
pytanie zadane 10 lutego 2016 w C i C++ przez Caishen Nowicjusz (210 p.)
–2 głosów
2 odpowiedzi 553 wizyt
pytanie zadane 20 sierpnia 2020 w C i C++ przez Drożdżówka Obywatel (1,870 p.)

93,112 zapytań

142,092 odpowiedzi

321,636 komentarzy

62,453 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...