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

Zadanie z wektorami oraz porównaniem wartości string.

0 głosów
111 wizyt
pytanie zadane 5 stycznia 2020 w C i C++ przez AlexSilesia Nowicjusz (240 p.)

Witam. Zwracam się z prośbą o pomoc lub wskazówkę z następującym zadaniem.

Wczytaj za pomocą standardowego strumienia wejściowego pary dzień tygodnia - liczba. Na przykład:

Wtorek 23 Piątek 56 Wtorek -3 Czwartek 99. Wartości każdego dnia zapisz w osobnym wektorze vector<int>. Wydrukuj wartości z wszystkich siedmiu wektorów. Wydrukuj sumę wartości wszystkich wektorów. Odrzuć niepoprawne nazwy dni tygodnia, typu Piontek, ale przyjmij różne poprawne formy jak piątek cz skrót pią.

Doszedłem do momentu że program prawie gotowy jednak mam problem z wyjściem z pętli while i porównaniem w niej wartości. Po prostu program po wpisaniu znaku wyjściowego ,,|" nadal zostaje w pętli while lub zasypuje ekran tekstem który jest wpisany na początku pętli. Proszę o rade. Pozdrawiam.

 

 

#include "std_lib_facilities.h"
using namespace std;

int main() {
	system("chcp 1250");
	vector<string> dzien;
	vector<int> pn; 
	vector<int> wt;
	vector<int> sr;
	vector<int> cz;
	vector<int> pt;
	vector<int> sb;
	vector<int> nd;
	
	string a = "";
	int b = 0;
	while (true) {

		cout << "Podaj dzien oraz liczbe: \n";
			cin >> a >> b;
			dzien.push_back(a);
			if (a == "Poniedzialek" || "Pon")
				pn.push_back(b);
			else if (a == "Wtorek" || "Wto")
				wt.push_back(b);
			else if (a == "Sroda" || "Sro")
				sr.push_back(b);
			else if (a == "Czwartek" || "Czw")
				cz.push_back(b);
			else if (a == "Piatek" || "Pia")
				pt.push_back(b);
			else if (a == "Sobota" || "Sob")
				sb.push_back(b);
			else if (a == "Niedziela" || "Nie")
				nd.push_back(b);
			else 
				break;
			

}
	int s = 0;
	for (int i = 0; i < pn.size(); ++i) {
		cout << pn[i] << " ";
		s += pn[i];
	}
	for (int i = 0; i < wt.size(); ++i) {
		cout << wt[i] << " ";
		s += wt[i];
	}
	for (int i = 0; i < sr.size(); ++i) {
		cout << sr[i] << " ";
		s += sr[i];
	}
	for (int i = 0; i < cz.size(); ++i) {
		cout << cz[i] << " ";
		s += cz[i];
	}
		for (int i = 0; i < pt.size(); ++i) {
			cout << pt[i] << " ";
			s += pt[i];
		}
		for (int i = 0; i < sb.size(); ++i) {
			cout << sb[i] << " ";
			s += sb[i];
		}
		for (int i = 0; i < nd.size(); ++i) {
			cout << nd[i] << " ";
			s += nd[i];

		}
		cout << "Suma : " << s;



		return 0;


}

 

1 odpowiedź

0 głosów
odpowiedź 5 stycznia 2020 przez tkz Nałogowiec (40,800 p.)
Błędne if'y w pętli.
komentarz 6 stycznia 2020 przez AlexSilesia Nowicjusz (240 p.)

Dziękuję za pomoc. Po zmianie ifów  z

,,(a == "Poniedzialek" || "Pon"); na

,,((a == "Poniedzialek") || (a =="Pon"));

program działa dobrze.

A czy kolega mógłby spojrzeć jeszcze na ten kod? Dlaczego po wyjściu z pętli while program nie czeka na wprowadzenie liczby przez polecenie cin tylko kończy działanie?

#include "std_lib_facilities.h"
using namespace std;

int main() {
	system("chcp 1250");
	vector<int> liczby;
	int l;
int k;
	while (cin >> l) {

		
				liczby.push_back(l);



	}
	cout << "Ile liczb chcesz zsumowac?:\n";
	
	cin >> k;

	for (int i = 0; i < k; i++)
	cout << liczby[i] << " \n" ;

}

 

komentarz 6 stycznia 2020 przez j23 Mędrzec (166,040 p.)

A jak kończysz działanie pętli while? Bo jeśli to robisz przez wpisanie "nieliczby", to odpowiedź jest prosta: strumień wchodzi w stan fail i nic z nim nie zrobisz, dopóki nie zresetujesz flagi błędu metodą clear. Metodą ignore powinieneś także odczytać dane, które spowodowały przejście w stan błędu.

Podobne pytania

0 głosów
1 odpowiedź 371 wizyt
pytanie zadane 24 marca 2020 w C i C++ przez wall7489 Obywatel (1,230 p.)
0 głosów
1 odpowiedź 212 wizyt
pytanie zadane 6 lipca 2016 w Java przez Jonki Dyskutant (8,190 p.)
0 głosów
2 odpowiedzi 207 wizyt
pytanie zadane 21 czerwca 2016 w Java przez windsmasher Nowicjusz (170 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

85,727 zapytań

134,512 odpowiedzi

298,568 komentarzy

56,635 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...