Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Rozwiązania - tworzenie klas


powrót

//Ćwiczenie 1
#include<iostream>
using namespace std;

class pociag{
	public:
		pociag(int wagony, int miejsca) //konstruktor
		{
			w = wagony;
			m = miejsca;
			aktualnie = 0; //na początku pociąg jest pusty
		}
		
		bool wsiadanie(int ile)
		{
			if(aktualnie + ile > w*m) //gdy będzie przepełnienie pociągu
				return 0;
			
			aktualnie+=ile;
			
			return 1; //gdy wszystko jest ok
		}
		
		bool wysiadanie(int ile)
		{
			if(ile > aktualnie) //gdy więcje osób chce wysiąsć niż jest w pociągu
				return 0;
			
			aktualnie-=ile;
			
			return 1; //gdy wszystko jest ok
		}
		
		void dolacz(int wagony)
		{
			w+=wagony;
		}
		
		bool odlacz(int wagony)
		{
			int wolne_miejsca = w*m - aktualnie;
			//jesli jest za mało miejsca dla osób, 
			//które siedzą w odłaczanych wagonach
			if(wagony*m > wolne_miejsca) 
				return 0;
			
			w-=wagony;
			
			return 1; //gdy wszystko jest ok
		}
		
		void stan()
		{
			cout<<"Pociąg ma "<<w<<" wagony/wagonów\n";
			cout<<"W pociągu jest "<<aktualnie<<" osób\n";
		}
		
	private:
		int w, m; //wagony, miejsca
		int aktualnie; //aktualna liczba osób w pociągu 
};

using namespace std;

int main()
{
	pociag ciuchcia(3, 10); //stworzenie obiektu ciuchcia
							//składająca się z 3 wagonów
							//i 10 miejsc w każdym z nich
	if(!ciuchcia.wsiadanie(20))
		cout<<"Przepełnienie pociągu\n";
	ciuchcia.stan();	
	if(!ciuchcia.wsiadanie(5))
		cout<<"Przepełnienie pociągu\n";
	ciuchcia.stan();
	if(!ciuchcia.wsiadanie(20)) //tu będzie już przepełnienie
		cout<<"Przepełnienie pociągu\n";
	ciuchcia.stan();	
	if(!ciuchcia.wysiadanie(8))
		cout<<"Nie ma tyle osób w pociągu\n";
	ciuchcia.stan();	
	if(!ciuchcia.wysiadanie(20)) //chce więcej wysiąsć niż jest w pociągu
		cout<<"Nie ma tyle osób w pociągu\n";		
		
	ciuchcia.stan();
	
	ciuchcia.dolacz(3); //dolaczenie trzech wagonów
	ciuchcia.stan();
	if(!ciuchcia.wsiadanie(20))
		cout<<"Przepełnienie pociągu\n";
	
	ciuchcia.stan();
	
	if(!ciuchcia.odlacz(1))
		cout<<"Nie można odłączyć, bo jest za dużo osób w pociągu\n";
	
	ciuchcia.stan();
	;
	return 0;
}

//Ćwiczenie 2
#include<iostream>
using namespace std;

class segregacja_smieci{
	public:
		segregacja_smieci(int pl, int sz, int pa)
		{
			plastik = pl;
			szklo = sz;
			papier = pa;
			a_pl = a_s = a_pa = 0;
		}
		void oproznij_szklo(){a_s = 0;}
		void oproznij_plastik(){a_pl = 0;}
		void oproznij_papier(){a_pa = 0;}
		
		bool wrzuc_szklo(int ile)
		{
			if(ile+a_s > szklo) //jesli się nie zmiesci
				return 0;
			
			a_s+=ile;
			
			return 1; //gdy się zmiesci
		}
		
		bool wrzuc_plastik(int ile)
		{
			if(ile+a_pl > plastik) //jesli się nie zmiesci
				return 0;
			
			a_pl+=ile;
			
			return 1; //gdy się zmiesci
		}
		
		bool wrzuc_papier(int ile)
		{
			if(ile+a_pa > papier) //jesli się nie zmiesci
				return 0;
			
			a_pa+=ile;
			
			return 1; //gdy się zmiesci
		}
		
		void stan()
		{
			cout<<"Pojemnik ze szkłem\nPojemnosc: "<<szklo
			<<"\nW pojemniku jest "<<a_s<<" szkla\n";
			cout<<"Pojemnik z plastikiem\nPojemnosc: "<<plastik
			<<"\nW pojemniku jest "<<a_pl<<" plastiku\n";
			cout<<"Pojemnik z papierem\nPojemnosc: "<<papier
			<<"\nW pojemniku jest "<<a_pa<<" papieru\n";
		}
	private:
		int plastik, szklo, papier;
		int a_pl, a_s, a_pa; //aktualnie plastik, szkło, papier
};

int main()
{
	segregacja_smieci smieci(5, 6, 7); //stworzenie obiektu smieci
								
	smieci.stan();
	
	if(!smieci.wrzuc_szklo(5))
		cout<<"Kosz ze szkłem przepełniony\n";
	
	smieci.stan();
	
	if(!smieci.wrzuc_szklo(3))
		cout<<"Kosz ze szkłem przepełniony\n"; //przepełnienie kosza
	
	smieci.stan();
	
	smieci.oproznij_szklo();
	
	smieci.stan();
	
	return 0;
}