• 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.

Object Storage Arubacloud
+1 głos
454 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,010 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,037 wizyt
pytanie zadane 1 marca 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
2 odpowiedzi 353 wizyt
pytanie zadane 10 lutego 2016 w C i C++ przez Caishen Nowicjusz (210 p.)
–2 głosów
2 odpowiedzi 353 wizyt
pytanie zadane 20 sierpnia 2020 w C i C++ przez Drożdżówka Obywatel (1,870 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...