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

Co jest powodem błędu "Unhandled exception"

Object Storage Arubacloud
0 głosów
357 wizyt
pytanie zadane 13 stycznia 2016 w C i C++ przez KlataMiLata Bywalec (2,120 p.)

Dzień dobry, mam problem ponieważ mój program przerywa działanie i wyskakuje taki oto błąd http://scr.hu/0w2rr/nobre co może być tego powodem ? Oto kod programu(nieskończonego);

#include <iostream>
#include <string>

using namespace std;

int n;
string l;

string test_1(int n, string li)
{
	int dlug=li.length();
	if (n>=dlug)
	{
		return(li+"1");
	}
	else
	{

			li.erase(li.rfind("_",string::npos));
			li.erase(li.rfind("&",string::npos));
			dlug = li.length();
		return(li);
	}


}

int sprawdz_n(int n)
{
	if (n==0)
	{
		return(n + 1);
	}
	else
	{
		return(n);
	}

}

int main()
{
	cout << "Podaj liczbe n dla maksymalnej dopuszczalnej dlugosci identyfikatora zmiennej:" << endl;
	cin >> n;
	cout << "Podaj identyfikator:" << endl;
	cin >> l;
	n=sprawdz_n(n);
	cout<<test_1(n,l);

	
	

	getchar();
	getchar();
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 13 stycznia 2016 przez niezalogowany
wybrane 14 stycznia 2016 przez KlataMiLata
 
Najlepsza
W funkcji test_1 za pomocą metody erase próbujesz usunąć elementy stringa które nie istnieją, więc rzuca wyjątek.
komentarz 13 stycznia 2016 przez KlataMiLata Bywalec (2,120 p.)
Usunąłem linie kodu "li.erase(li.rfind("&",string::npos));" i podaje dane wejściowe przykładowo n=4 i l = "Kotek_", a mimo wszystko błąd występuje. Teraz elementy stringa istnieją, więc być może to nie tu leży problem ?
komentarz 13 stycznia 2016 przez niezalogowany
W drugim użyciu metody erase też próbujesz usunąć coś spoza zakresu stringa, usuń oba a zobaczysz że program zadziała.
komentarz 13 stycznia 2016 przez KlataMiLata Bywalec (2,120 p.)
Mógłbym to zrobić, ale to mi nie pomoże, gdyż potrzebuje kombinacji tych dwóch metod, aby osiągnąć efekt. Co więc powinienem zrobić ?
komentarz 13 stycznia 2016 przez niezalogowany
Metodzie erase musisz podać inne argumenty, powiedz co chcesz usunąć to postaram się pomóc.
komentarz 13 stycznia 2016 przez KlataMiLata Bywalec (2,120 p.)
Na razie zająłem się tą częścią problemu http://scr.hu/0w2rr/0ce2t z zadania na SPOJ-u http://pl.spoj.com/problems/WI_IDEN/ i potrzebuje metody która znajdzie mi od końca wartości "_" oraz "&" i usunie je do póki nie będzie ich w tablicy znaków string albo gdy długość napisu będzie równa lub mniejsza od n . Na razie wymyśliłem coś takiego -> http://scr.hu/0w2rr/3kn4l
komentarz 13 stycznia 2016 przez niezalogowany

Kod który z wyszukanego tekstu wynajduje znak & i go usuwa:

#include <string>
#include <iostream>

void szukajWszystkichFrazOdKonca( std::string & tekst, std::string szukanaFraza )
{
    size_t znalezionaPozycja = tekst.rfind( szukanaFraza );
    if( znalezionaPozycja == std::string::npos )
        return;

    else
    tekst.erase(znalezionaPozycja,1);
    
    do
    {
        if( znalezionaPozycja >= szukanaFraza.size() )
{
             znalezionaPozycja = tekst.rfind( szukanaFraza, znalezionaPozycja - szukanaFraza.size() );
             if(znalezionaPozycja != std::string::npos)
               tekst.erase(znalezionaPozycja,1);
}
        else
             znalezionaPozycja = std::string::npos;
        
    } while( znalezionaPozycja != std::string::npos );
    
}

int main()
{
    std::string naszTekst;
    std::getline(std::cin,naszTekst);
    szukajWszystkichFrazOdKonca( naszTekst, "&" );
std::cout<<naszTekst;
    return 0;
}

Spróbuj zaimplementować to do własnego kodu.

komentarz 14 stycznia 2016 przez KlataMiLata Bywalec (2,120 p.)
Wielkie dzięki za pomoc teraz rozumiem, gdzie robiłem błąd. Kazałem przeszukiwać programowi elementy tablicy string które nie istniały ^^

Podobne pytania

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 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!

...