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

getline() po wykonaniu się kończy program pomijając resztę kodu.

Cloud VPS
0 głosów
370 wizyt
pytanie zadane 12 sierpnia 2019 w C i C++ przez Brzoza Nowicjusz (180 p.)

ZADANIE POLSKI SPOJ - JZLICZ - Zliczacz liter!!! Poniżej kod rozwiązania.

 

 

 

Piszę program mający za zadanie liczyć wystąpienie liter w ciągu znaków wpisanym przez użytkownika(Użytjownik podaje liczbę wierszy, które ma zamiar wpisać i po ich skończeniu program ma za zadanie podać w jakiej ilości występowały poszczególne litery we wszystkich wierszach łącznie). Problem w tym, że program kończy się po przyjęciu znaków przez getline(). Próbowałem swój algorytm na pojedyńczym wykonaiu pętli w int main() znajdowało się wtedy:

{

getline(cin,wyraz);

zliczacz(wyraz);

return 0;

}

Program działał poprawnie, ale kiedy dodałem pętlę po przyjęciu ciągu przez getline() program nie wykonywał kolejnego kroku pętli tylko wyswietlał poprawne odpowiedzi dla pierwszego ciągu i kończył swoje działanie.

#include <iostream>
#include <string>
using namespace std;

void zliczacz(string zdanie)
{
	
	int a = zdanie.length() - 1;
	for (int j = 0; j <= a; j++)
	{
		int licznik = 0;
		if (zdanie[j] != ' ')
		{
			licznik++;
			for (int i = j + 1; i <= a; i++)
			{
				if (zdanie[i] == zdanie[j])
					licznik++;
			}
			 cout << zdanie[j] << " " << licznik << endl;

		}
		
	}
}



int main()
{
	string wyraz,zdanie=" ";
	int t;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		
		getline(cin, wyraz);
cin.ignore();
		zdanie += wyraz;	
	}
	zliczacz(zdanie);
	return 0;
}

 

komentarz 12 sierpnia 2019 przez MsMaciek123 Pasjonat (24,760 p.)
​​​​​​
​​​​​​int main()
{
    string wyraz,zdanie=" ";
    int t;
    cin >> t;
    for (int i = 0; i < t; i++)
    {
         cin.ignore();
        getline(cin, wyraz);
        zdanie += wyraz;    
    }
    zliczacz(zdanie);
    return 0;
}

https://forum.pasja-informatyki.pl/5572/getline-i-cin-ignore

 

Spróbuj tego w funkcji main();

komentarz 12 sierpnia 2019 przez Brzoza Nowicjusz (180 p.)
Niestety nadal dzieje się to samo.
komentarz 12 sierpnia 2019 przez tkz Nałogowiec (42,040 p.)

@Brzoza, cpp.sh/5ebtr Co Ci tu nie działa?

komentarz 13 sierpnia 2019 przez Brzoza Nowicjusz (180 p.)
getline() po tym jak przyjmie dane, skipuje resztę programu. Jeżeli wpiszę do getline() dane to program się kończy.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,340 wizyt
+1 głos
2 odpowiedzi 1,748 wizyt
pytanie zadane 7 października 2018 w C i C++ przez Hinzeq Użytkownik (860 p.)
0 głosów
2 odpowiedzi 1,582 wizyt
pytanie zadane 18 kwietnia 2015 w C i C++ przez Meltern Początkujący (440 p.)

93,483 zapytań

142,417 odpowiedzi

322,763 komentarzy

62,895 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

Kursy INF.02 i INF.03
...