program classy- wyswietlanie

0

Witam mam problem o tuz zatrzymalem sie i nie wiem jak ruszyc dalej . ponizej wklejam link zadania i moj kod czy byl by ktos tak mily i podpowiedzial / napisal troszke kodu aby mogło mnie to nakierowac
user image

 #include <iostream>										//biblioteka zawierajaca strumienie wejscia wyjscia: cout, cin
#include <cstring>										//biblioteka do operacji na lancuchach znakow np. strcpy()
#include <fstream>										//biblioteka zawierajaca funkcje do operacji na plikach
using namespace std;									//ustawia przestrzen nazw na std

class Roslina{											//class: slowo kluczowe tworzace nowa klase
	private:											//modyfikator dostepu private: dostep wylacznie z wnetrza klasy
		//deklaracje skladowych klasy Roslina
		int ID;
		char nazwa[20];
		char typ[15];
		int cena;									
	public:												//modyfikator dostepu public: dostep z dowolnego miejsca w programie
		//dwa konstruktory klasy Roslina
		Roslina(){										//konstruktor bezargumentowy. nadaje domyslne wartosci skladowym 
			ID = 0;
            strcpy(this->nazwa, "");		//(konstruktor ma nazwe taka sama co nazwa klasy, wywolywany jest podczas tworzenia obiektu danej klasy)							
			strcpy(this->typ, "");						//strcpy(): funkcja kopiujaca lancuch znakow				
		    cena = 0;								
		}
		Roslina(int ID, char nazwa[], char typ[], int cena){	//konstruktor 4 argumentowy, do tworzenia obiektu o okreslonych wartosciach pol
			           	//dzieki Przeciazaniu mozliwe jest deklarowanie funkcji o takich samych nazwach
			this->ID = ID;
			strcpy(this->nazwa, nazwa);
			strcpy(this->typ, typ);
			this->cena = cena;																	
		}
		//metody ustawiajace wartosci dla skladowych
		void setID(int ID){
			this->ID = ID;		
		}
	         
		void setNazwa(char nazwa[]){
			strcpy(this->nazwa, nazwa);
		}
		void setTyp(char typ[]){
			strcpy(this->typ, typ);
		}

		void setCena(int cena){
			cena = cena;
		}
		//metody zwracajace wartosci skladowych
		int getID(){
			return ID;
		}
		char* getNazwa(){
			return nazwa;
		}
		char* getTyp(){
			return typ;
		}
		int getCena(){
			return cena;
		}
		
};															

class Uprawa{
	private:												
		//deklaracje skladowych klasy Uprawa
		int ID;
	    char roslina[20];
		char farmer[30];
		int powierzchnia;
	public:
		//dwa konstruktory klasy Uprawa
		Uprawa(){
			ID = 0;
			strcpy(this->roslina, "");
			strcpy(this->farmer, "");
			powierzchnia = 0;
		}
		Uprawa(int ID, char roslina[], char farmer[], int powierzchnia){
			this->ID = ID;
			strcpy(this->roslina, roslina);
			strcpy(this->farmer, farmer);
			this->powierzchnia = powierzchnia;
			
		}
		//deklaracje metod klasy Osoba
		void setID(int ID){
			this->ID, ID; 
		}
		void setroslina(char roslina[]){
			strcpy(this->roslina, roslina);
		}
		void setfarmer(char farmer[]){
			strcpy(this->farmer, farmer);
		}
		void setPowierzchnia(int powierzchnia){
			this->powierzchnia, powierzchnia;
		}
		int getID(){
            return ID;
        }
		char* getroslina(){
			return roslina;
		}
		char* getfarmer(){
			return adres;
		}
		int getPowierzchnia(){
			return powierzchnia;
		}
};
class Farmer{
	private:												
		//deklaracje skladowych klasy Uprawa
		int ID;
	    char farmer[20];
		char farma[30];
	public:
		//dwa konstruktory klasy Uprawa
		Uprawa(){
			ID = 0;
			strcpy(this->farmer, "");
			strcpy(this->farma, "");
	
		}
		Uprawa(int ID, char farmer[], char farma[]){
			this->ID = ID;
			strcpy(this->farmer, farmer);
			strcpy(this->farma, farma);
		
			
		}
		//deklaracje metod klasy Osoba
		void setID(int ID){
			this->ID, ID; 
		}
		void setfarmer(char farmer[]){
			strcpy(this->farmer, farmer);
		}
		void setfarma(char farma[]){
			strcpy(this->farma, farma);
		
		}
		int getID(){
            return ID;
        }
		char* getfarmer(){
			return farmer;
		}
		char* getfarma{
			return farma;
		}
		


void dodajRosline();
void dodajFarmera										/**/
void dodajUprawe();									//prototypy funkcji operujacych na danych								//
void wyswietlListeRoslin();								//
void wyswietlListeUpraw();							//
void podpunkt3();                                       /**/


int main(int argc, char *argv[]) {
	int wybor;										//zmienna w ktorej zapisuje indeks opcji wybranej przez uzytkownika
	bool wyjdz=true;
	while(wyjdz){								//petla wykonuje sie dopoki zmienna wyjdz ma wartosc true dzieki czemu mozemy wielokrotnie wybierac opcje w naszym programie 
		cout<<"---Menu---\n";				// znacznik \n oznacza przejscie do nowego wiersza w konsoli
		cout<<"1. Dodaj Rosline.\n";
		cout<<"2. Dodaj Farmera.\n";
		cout<<"3. Dodaj Uprawe.\n";
		cout<<"4. Wyswietl liste upraw.\n";
		cout<<"5. Wyswietl Całkowity koszt zasiania roslin poniesionego przez wskazanego farmea.\n";
		cout<<"6. Wyjdz z programu.\n";
		cin>>wybor;							//pobieram indeks opcji ktora chce wybrac uzytkownik
		switch(wybor){						//konstrukcja switch-case pozawala na wybor odpowiedniej opcji w zaleznosci od wartosci zmiennej wybor
			case 1: {
				dodajRosline();
				break;
			}
			case 2:{
				dodajFarmera();
				break;
			}
			case 3:{
				Dodaj Uprawe();
				break;
			}
			case 4:{
				wyswietlListeUpraw();
				break;
			}
		    case 5:{
				podpunkt3();
				break;
			}
			case 6:{
				wyjdz=false;					//ustawiam zmienna wyjdz na false aby wyjsc z petli i zakonczyc program
				break;
			}
			default:{							//wartosc domyslna, jezeli uzytkownik wybierze inna wartosc niz przy case'ach
				cout<<"\nPodano nieprawidlowa wartosc!\n\n";
				break;
			}
		}
	}
	
	return 0;
}
0

http://postimg.org/image/ewz0umdwx/ - tresc zadania z poprzedniako posta sie nie upl wiec dodaje i przepraszam za spam ;<

1

Nie mam pojecia jakie jest zadanie, ale... wyrzuc ta proteze obiektowosci i napisz to z sensem, tj:
#Wywal wszystkie wystapienia switch getBlaBlaBla setBlaBlaBla
#Wywal wszystkie funkcje wiszace luzem poza main
#Wywal wszystkie funkcje zaczynajace sie od str
#Poczytaj w dokumentacji: <string>

Edit: O, jest zadanie:
#http://en.cppreference.com/w/cpp/language/operators, operatory << i >>.
#<vector> <list>, whatever + copy
#accumulate, max

0

napisalem cos takiego

 #include <iostream>										//biblioteka zawierajaca strumienie wejscia wyjscia: cout, cin
#include <cstring>										//biblioteka do operacji na lancuchach znakow np. strcpy()
#include <fstream>										//biblioteka zawierajaca funkcje do operacji na plikach
using namespace std;									//ustawia przestrzen nazw na std

class Roslina{											//class: slowo kluczowe tworzace nowa klase
	private:											//modyfikator dostepu private: dostep wylacznie z wnetrza klasy
		//deklaracje skladowych klasy Roslina
		int ID_roslina;
		char nazwa[20];
		int cena;									
	public:												//modyfikator dostepu public: dostep z dowolnego miejsca w programie
		//dwa konstruktory klasy Roslina
		Roslina(){										//konstruktor bezargumentowy. nadaje domyslne wartosci skladowym 
			ID_roslina = 0;
            strcpy(this->nazwa, "");		//(konstruktor ma nazwe taka sama co nazwa klasy, wywolywany jest podczas tworzenia obiektu danej klasy)												//strcpy(): funkcja kopiujaca lancuch znakow				
		    cena = 0;								
		}
		Roslina(int ID_roslina, char nazwa[], , int cena){	//konstruktor 4 argumentowy, do tworzenia obiektu o okreslonych wartosciach pol
			           	//dzieki Przeciazaniu mozliwe jest deklarowanie funkcji o takich samych nazwach
			this->ID_roslina = ID_roslina;
			strcpy(this->nazwa, nazwa);
			this->cena = cena;																	
		}
		//metody ustawiajace wartosci dla skladowych
		void setID_roslina(int ID_roslina){
			this->ID_roslina = ID_roslina;		
		}
	         
		void setNazwa(char nazwa[]){
			strcpy(this->nazwa, nazwa);
		
		}

		void setCena(int cena){
			cena = cena;
		}
		//metody zwracajace wartosci skladowych
		int getID_roslina(){
			return ID_roslina;
		}
		char* getNazwa(){
			return nazwa;
		}
		
		int getCena(){
			return cena;
		}
		
};															

class Uprawa{
	private:												
		//deklaracje skladowych klasy Uprawa
		int ID_uprawa;
	    char roslina[20];
		char farmer[30];
		int powierzchnia;
	public:
		//dwa konstruktory klasy Uprawa
		Uprawa(){
			ID_uprawa = 0;
			strcpy(this->roslina, "");
			strcpy(this->farmer, "");
			powierzchnia = 0;
		}
		Uprawa(int ID_uprawa, char roslina[], char farmer[], int powierzchnia){
			this->ID_uprawa = ID_urpawa;
			strcpy(this->roslina, roslina);
			strcpy(this->farmer, farmer);
			this->powierzchnia = powierzchnia;
			
		}
		//deklaracje metod klasy Osoba
		void setID_uprawa(int ID_uprawa){
			this->ID_uprawa, ID_uprawa; 
		}
		void setroslina(char roslina[]){
			strcpy(this->roslina, roslina);
		}
		void setfarmer(char farmer[]){
			strcpy(this->farmer, farmer);
		}
		void setPowierzchnia(int powierzchnia){
			this->powierzchnia, powierzchnia;
		}
		int getID_uprawa(){
            return ID_uprawa;
        }
		char* getroslina(){
			return roslina;
		}
		char* getfarmer(){
			return adres;
		}
		int getPowierzchnia(){
			return powierzchnia;
		}
};
class Farmer{
	private:												
		//deklaracje skladowych klasy Uprawa
		int ID_farmera;
	    char farmer[20];
		char farma[30];
	public:
		//dwa konstruktory klasy Uprawa
		Farmer(){
			ID_farmera = 0;
			strcpy(this->farmer, "");
			strcpy(this->farma, "");
	
		}
		Uprawa(int ID_farmera, char farmer[], char farma[]){
			this->ID_farmera = ID_farmera;
			strcpy(this->farmer, farmer);
			strcpy(this->farma, farma);
		
			
		}
		//deklaracje metod klasy Osoba
		void setID_farmera(int ID_farmera){
			this->ID_farmera, ID_farmera; 
		}
		void setfarmer(char farmer[]){
			strcpy(this->farmer, farmer);
		}
		void setfarma(char farma[]){
			strcpy(this->farma, farma);
		
		}
		int getID_farmera(){
            return ID_farmera;
        }
		char* getfarmer(){
			return farmer;
		}
		char* getfarma{
			return farma;
		}
		


void dodajRosline();
void dodajFarmera										/**/
void dodajUprawe();									//prototypy funkcji operujacych na danych								//
void wyswietlListeRoslin();								//
void wyswietlListeUpraw();							//
void podpunkt3();                                       /**/


int main(int argc, char *argv[]) {
	int wybor;										//zmienna w ktorej zapisuje indeks opcji wybranej przez uzytkownika
	bool wyjdz=true;
	while(wyjdz){								//petla wykonuje sie dopoki zmienna wyjdz ma wartosc true dzieki czemu mozemy wielokrotnie wybierac opcje w naszym programie 
		cout<<"---Menu---\n";				// znacznik \n oznacza przejscie do nowego wiersza w konsoli
		cout<<"1. Dodaj Rosline.\n";
		cout<<"2. Dodaj Farmera.\n";
		cout<<"3. Dodaj Uprawe.\n";
		cout<<"4. Wyswietl liste upraw.\n";
		cout<<"5. Wyswietl Całkowity koszt zasiania roslin poniesionego przez wskazanego farmea.\n";
		cout<<"6. Wyjdz z programu.\n";
		cin>>wybor;							//pobieram indeks opcji ktora chce wybrac uzytkownik
		switch(wybor){						//konstrukcja switch-case pozawala na wybor odpowiedniej opcji w zaleznosci od wartosci zmiennej wybor
			case 1: {
				dodajRosline();
				break;
			}
			case 2:{
				dodajFarmera();
				break;
			}
			case 3:{
				Dodaj Uprawe();
				break;
			}
			case 4:{
				wyswietlListeUpraw();
				break;
			}
		    case 5:{
				podpunkt3();
				break;
			}
			case 6:{
				wyjdz=false;					//ustawiam zmienna wyjdz na false aby wyjsc z petli i zakonczyc program
				break;
			}
			default:{							//wartosc domyslna, jezeli uzytkownik wybierze inna wartosc niz przy case'ach
				cout<<"\nPodano nieprawidlowa wartosc!\n\n";
				break;
			}
		}
	}
	
	return 0;
}


   //definicje funkcji operujacych na danych
void dodajRosline(){						//funkcja pobiera dane osoby od uzytkownika i pyta czy wpisac je do bazy
	int ID;						
	char nazwa[20];					//zmienne tymczasowe na pojedyncze dane						//
	int cena;					
	cout<<"Podaj ID rosliny: ";			
	cin>>ID;							//
	cout<<"Podaj nazwe rosliny: ";		//
	cin>>nazwa;						//pobieram dane
																	//zmienna tymczasowa do sprawdzania wyboru typu dzialki
						//
	cout<<"Podaj cene worka ";		//
	cin>>cena;						
	Roslina roslina(ID_roslina, nazwa, cena);//tworze obiekt klasy Osoba, przekazujac do konstruktora dane pobrane z klawiatury
	cout<<"Podane informacje:\nID:\t\t"<<roslina.getID_roslina()<<"\nNazwa:\t"<<roslina.getNazwa()<<"\nCena worka:\t"<<roslina.getCena()<<"\n"; //wyswietla dane zeby sprawdzic poprawnosc
	char z;								//zmienna tymczasowa do sprawdzenia wyboru uzytkownika
	do{
		cout<<"Czy chcesz wpisac rosline do bazy danych? (t/n)";
		cin>>z;
		if (z=='t'){					//jesli zmienna z przyjmie wartosc znaku t, zapisze do pliku
			ofstream wyjscie;			//tworze obiekt strumienia wyjsciowego
			wyjscie.open("Rośliny.txt", ios_base::out | ios_base::app);	//otwieram plik rosliny.txt i lacze go z obiektem wyjscia w trybie dopisywanie na koniec pliku
			wyjscie<<roslina.getID_roslina()<<" "<<roslina.getNazwa()<<" "<<roslina.getCena()<<"\n"; //wysylam dane z obiektu osoby do pliku roslina.txt
			wyjscie.close();			//zamykam plik
		}
	}while (z!='t' && z!='n');			//petla zapewnia ze uzytkownik wybierze odpowiednia opcje. gdy wcisnie n, petla zakonczy sie, gdy wcisnie t zapisze dane do pliku
}							
void dodajUprawe(){					//cala funkcja jest kopia poprzedniej funkcji, zmienilem tylko wszystkie nazwy z osoby na dzialke
	int ID_uprawa;
    char farmer[20];					
   	char roslina[30];				//
    int powierzchnia;
	cout<<"Podaj ID uprawy: ";								
	cin>>ID_uprawa;																//
	cout<<"Podaj  farmera: ";										//
	cin>>farmer;													//
	cout<<"Podaj rosline";												//
	cin>>roslina;															//
	cout<<"Podaj powierzchnie uprawy: ";												//
	cin>>powierzchnia;																	
	Uprawa uprawa(ID_uprawa, farmer, roslina, powierzchnia);		//tworze obiekt klasy dzialka, przekazujac do konstruktora dane pobrane z klawiatury
	cout<<"Podane informacje:\nID uprawy:\t\t"<<uprawa.getID_uprawa()<<"\nNazwisko farmera:\t\t"<<uprawa.getfarmera()<<"\nroslina :\t\t\t"<<uprawa.getroslina()<<"\nPowiechnia uprawy:\t\t\t"<<uprawa.getPowierzchnia()<<"\n"; //wyswietla dane zeby sprawdzic poprawnosc
	char z;								//zmienna tymczasowa do sprawdzenia wyboru uzytkownika
	do{
		cout<<"Czy chcesz dodac uprawe do bazy danych? (t/n)";
		cin>>z;
		if (z=='t'){					//jesli zmienna z przyjmie wartosc znaku t, zapisze do pliku
			ofstream wyjscie;			//tworze obiekt strumienia wyjsciowego
			wyjscie.open("Uprawy.txt", ios_base::out | ios_base::app);	//otwieram plik uprawa.txt i lacze go z obiektem wyjscia w trybie dopisywanie na koniec pliku
			wyjscie<<uprawa.getID_uprawa()<<" "<<uprawa.getfarmer()<<" "<<uprawa.getroslina()<<" "<<uprawa.getPowierzchnia()<<"\n";
            wyjscie.close();			//zamykam plik
		}
	}while (z!='t' && z!='n');			//petla zapewnia ze uzytkownik wybierze odpowiednia opcje. gdy wcisnie n, petla zakonczy sie, gdy wcisnie t zapisze dane do pliku
}													
		
void wyswietlListeUpraw(){							//kopia funkcji wyswietlListeUpraw, tyle ze dla pliku Uprawa.txt
	ifstream wejscie;									//tworze obiekt strumienia wejsciowego
	wejscie.open("Uprawy.txt");							//otwieram plik Uprawy.txt i kojarze go ze zmienna wejsciowa wejscie
	char cbuff[21];										//buffor do wczytywania lancuchow znakowych
	while(wejscie.eof()==false){						//wczytuj dopoki nie trafisz na koniec pliku, eof to wlasnie znak konca pliku
		for (int i=0;i<4;i++){
			strcpy(cbuff, "");							//czyszczenie zmiennej bufforowej
			wejscie>>cbuff;								//wczytuje slowo do buffora
			cout.width(15);								//do pozycjonowania tekstu, wyswietla nastepna zmienna na 15 polach
			cout<<cbuff;							//wyswietlam buffor
		}	
		cout<<"\n";
	}
	wejscie.close();									//zamykam plik
}				
void podpunkt3(){
	char cbuffer[20];									//bufor do wczytania lancucha znakow
	int buffer;											//bufor do wczytania liczby
	Uprawa tab_uprawy[20];								//tymczasowa tablica obiektow osoba
	Roslina tab_roslin[20];							//tymczasowa tablica obiektow dzialka
	    
	ifstream wejscie;										//otwieram strumien do wczytania osob
	wejscie.open("Rosliny.txt");							//lacze strumien z plikiem Osoby.txt
	
    int i=0;											//iterator do tablicy osob
   	do{							//wykonuje dopoki nie trafie na koniec pliku
        //cout<<"asdf";
        strcpy(cbuffer, "");
		wejscie>>buffer;									
		tab_roslin[i].setID_roslina(buffer);					//
		wejscie>>cbuffer;									//
		tab_roslin[i].setNazwa(cbuffer);				//zapisuje pobrane z pliku dane osoby, do tablicy osob
		wejscie>>cbuffer;									//
										//
  		tab_roslin[i].setCena(buffer);				
		i++;											//zwiekszam iterator zeby zapisac nastepna osobe
	}while(wejscie.eof());

	wejscie.close();									//zamykam plik
	wejscie.clear();									//czyszcze obiekt wejscia
	wejscie.open("Uprawy.txt");							//otwieram strumien do wczytania upraw
	int j=0;											//iterator do tablicy upraw
    do{				//wykonuje do napotkania konca pliku
		//cout<<"ASDF";
        strcpy(cbuffer, "");
		wejscie>>buffer;								
		tab_uprawy[j].setID_uprawa(buffer);			//
		wejscie>>cbuffer;								//
		tab_uprawy[j].setFarmer(cbuffer);			//zapisuje pobrane z pliku dane  uprawy, do tablicy uprawy
		wejscie>>cbuffer;								//
		tab_uprawy[j].setRoslina(cbuffer);					//
		wejscie>>buffer;								//
		tab_uprawy[j].setPowierzchnia(buffer);			//				
		j++;											//zwiekszam iterator zeby zapisac nastepna osobe
	}while(wejscie.eof());
	wejscie.close();									//zamykam plik
	

     for(int k=0;k<(i-1);k++){
          for(int m=0;m<(j-1);m++){
                  if(tab_uprawy[m].getID_uprawy() == tab_roslin[k].getID_roslina()){
                          int koszt = tab_uprawy[m].getPowierzchnia() * tab_roslin[k].getCena();
                          if(koszt < 2000)
                                   cout<<tab_uprawy[m].getfarmer(); 
                }
                                     
          }   
             
     }
}

mogl by ktos ocenic ? ewentualnie poprawic kod programu

0

Wywal to wszystko, poczytaj o programowaniu obiektowym i napisz raz jeszcze.

0

poprawione

#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

class Roslina
{
	private:
        int identyfikator_Rosliny;
		int cena_worka;
        char nazwa[20];
 
public:
        void wpisz_Roslina(int id_Rosliny, int cena, char* nazwa_rosliny)
        {
                identyfikator_Rosliny = id_Rosliny;
				cena_worka = cena;
				strcpy_s(nazwa, nazwa_rosliny);
        }
 
        void wypisz_Roslina()
        {
			cout << "ID_rosliny :  "<< identyfikator_Rosliny << ",  Cena :  "<< cena_worka << ", nazwa_rosliny : " << nazwa << endl;
        }
       
        int daj_id_Rosliny(){return identyfikator_Rosliny; }
		int daj_cena(){return cena_worka; }

};

class Farmer
{
private:
        int identyfikator_Farmera;
        char nazwa[50];
 
public:
	void wpisz_Farmer(int id_Farmera,char* nazwa_farmy)
        {
                identyfikator_Farmera = id_Farmera;
				strcpy_s(nazwa, nazwa_farmy);
        }
 
        void wypisz_Farmer()
        {
                cout << "ID_Farmera :  "<< identyfikator_Farmera << ",  nazwa_farmy :  "<< nazwa <<endl;
        }
       
        int daj_id_Farmera(){return identyfikator_Farmera; }
       
};
class Uprawa
{
private:
        int identyfikator_Rosliny;
        int identyfikator_Farmera;
        int powierzchnia;
 
public:
 
        void wpisz_Uprawa(int id_Rosliny,int id_Farmera,int powierzchnia_uprawy)
        {
                identyfikator_Rosliny = id_Rosliny;
                identyfikator_Farmera = id_Farmera;
				powierzchnia = powierzchnia_uprawy;
        }
       
 
        void wypisz_Uprawa()
        {
			cout << "ID_Rosliny :  "<< identyfikator_Rosliny << ", ID_Farmera :  "<< identyfikator_Farmera << ", powierzchnia_uprawy : " << powierzchnia << endl;
        }
       
        int daj_id_Rosliny(){return identyfikator_Rosliny; }
        int daj_id_Farmera(){return identyfikator_Farmera; }
        int daj_powierzchnia_uprawy(){return powierzchnia; }
};

int main(){
		int wybor_opcji, liczba_roslin, liczba_upraw, liczba_farmer;
        int r, f, u;
		int id_Farmer;
        int id_Roslina;
        char nazwa_farmy[50];
        char nazwa_rosliny[20];
        int cena_worka;
		int ktory_zakup;
		int powierzchnia_uprawy;
        char koniec;

		Roslina * ros;
        Farmer * far;
        Uprawa * upra;
 
        koniec = 'b';
 
        ros = new Roslina [100];
        far = new Farmer [100];
        upra = new Uprawa [100];
 


        ifstream zplikRoslina("Roslina.dat", ios_base::binary);
        if(zplikRoslina.is_open())
                {
					liczba_roslin=0;
					while(zplikRoslina.read((char*)&ros[liczba_roslin],sizeof(ros[liczba_roslin]))){
						liczba_roslin++;
                        }
                }
                zplikRoslina.close();
 
        ifstream zplikFarmer("Farmer.dat", ios_base::binary);
        if(zplikFarmer.is_open())
                {
					liczba_farmer=0;
					while(zplikFarmer.read((char*)&far[liczba_farmer],sizeof(far[liczba_farmer]))){
						liczba_farmer++;
                        }
                }
				zplikFarmer.close();

		ifstream zplikUprawa("Uprawa.dat", ios_base::binary);
        if(zplikUprawa.is_open())
                {
					liczba_upraw=0;
					while(zplikUprawa.read((char*)&upra[liczba_upraw],sizeof(upra[liczba_upraw]))){
						liczba_upraw++;
                        }
                }
                zplikUprawa.close();
	do{


                cout << "1) Dodaj nowa baze Roslin                                                                            " << endl;
                cout << "2) Dodaj nowa baze Farmera                                                                           " << endl;
                cout << "3) Dodaj nowa baze Upraw                                                                             " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
                cout << "4) Wypisz baze Roslin                                                                                " << endl;
                cout << "5) Wypisz baze Farmera                                                                               " << endl;
                cout << "6) Wypisz baze Upraw                                                                                 " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
                cout << "7) Calkowity koszt zasiania roslin poniesionego przez wskazanego farmera                             " << endl;
                cout << "8) Nazwa rosliny, ktorej uprawy zajmuja najwieksza powierzchnie                                      " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
                cout << "9) Wyjscie                                                                                           " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;

				cin >> wybor_opcji;
 
 
                switch(wybor_opcji) // Wybieranie opcji itd
                {
		case 1:
                                        {
 
                cout<<"     Wybrales opcje dodawania nowej bazy Roslin \n"<<endl;
                cout<<"         Ile roslin chcesz dodac ?"<<endl;
                cin >> r;
 
                               
 
                for(int i=0;i<r;i++)
                     {
                 cout << "Podaj ID rosliny : " <<endl;
                                 cin >> id_Roslina;
                 cout << "Podaj nazwe rosliny : " <<endl;
								 cin >> nazwa_rosliny;
				 cout << "Podaj cene worka : " <<endl;
								 cin >> cena_worka;
 
								 ros[i].wpisz_Roslina(id_Roslina, char * nazwa_rosliny, cena_worka);
 
                    }
                               
 
                for(int i=0;i<r;i++)
                                        {
                ros[i].wypisz_Roslina(); // Wypisywanie osoby
                                        }
                getchar();
                getchar();
               
 
 
                ofstream doplikRoslina("Roslina.dat",ios_base::app | ios_base::binary);
                for(int i =0;i<r;i++)
                {
                        doplikRoslina.write((char*)&ros[i],sizeof ros[i] );
                }
                doplikRoslina.close();
 
                ifstream zplikRoslina("Roslina.dat", ios_base::binary);
                if(zplikRoslina.is_open())
                {
					liczba_roslin=0;
					while(zplikRoslina.read((char*)&ros[liczba_roslin],sizeof(ros[liczba_roslin]))){
						liczba_roslin++;
                        }
                }
                zplikRoslina.close();
 
                                break;
										}
               
		 case 2:
                        {
 
                 cout<<"     Wybrales opcje dodawania Farm do bazy \n"<<endl;
                 cout<<"         Ile farm chcesz dodac ?"<<endl;
                 cin >> f;
 
                               
 
                 for(int i=0;i<f;i++)
                         {
                 cout << "Podaj ID farmera : " <<endl;
                 cin >> id_Farmer;
                 cout << "Podaj nazwe farmy : " <<endl;
				 cin >> nazwa_farmy;
 
				 far[i].wpisz_Farmer(id_Farmer, nazwa_farmy);
 
                         }
 
                 for(int i=0;i<f;i++)
 
                                        {
                        far[i].wypisz_Farmer(); // Wypisywanie zakupow
                                        }
                getchar();
                getchar();
 
 
 
                ofstream doplikFarmer("Farmer.dat",ios_base::app | ios_base::binary);
                for(int i =0;i<f;i++)
                {
					doplikFarmer.write((char*)&far[i],sizeof far[liczba_farmer] );
                }
                doplikFarmer.close();
 
                ifstream zplikFarmer("Farmer.dat", ios_base::binary);
                if(zplikFarmer.is_open())
                {
					liczba_farmer=0;
					while(zplikFarmer.read((char*)&far[liczba_farmer],sizeof(far[liczba_farmer]))){
						liczba_farmer++;
                        }
                }
                zplikFarmer.close();
                                break;
                                                }
		
		case 3:
                        {
 
                 cout<<"     Wybrales opcje dodawania upraw do bazy \n"<<endl;
                 cout<<"Ile upraw chcesz dodac ?"<<endl;
                 cin >> u;
 
                               
 
                 for(int i=0;i<u;i++)
                       {
                 cout << "Podaj ID rosliny : " <<endl;
				 cin >> id_Roslina;
                 cout << "Podaj ID farmera : " <<endl;
				 cin >> id_Farmer;
				 cout << "Podaj powierzchnie uprawy : " <<endl;
				 cin >> powierzchnia_uprawy;
 
				 upra[i].wpisz_Uprawa(id_Roslina, id_Farmer, powierzchnia_uprawy);
 
                                }
 
                 for(int i=0;i<u;i++)
                {
                        upra[i].wypisz_Uprawa(); // Wypisywanie produktow
                }
                getchar();
                getchar();
 
 
 
                ofstream doplikUprawa("Uprawa.dat",ios_base::app | ios_base::binary);
                for(int i =0;i<u;i++)
                {
					doplikUprawa.write((char*)&upra[i],sizeof upra[liczba_upraw] );
                }
                doplikUprawa.close();
 
                ifstream zplikUprawa("Uprawa.dat", ios_base::binary);
                if(zplikUprawa.is_open())
                {
					liczba_upraw=0;
					while(zplikUprawa.read((char*)&upra[liczba_upraw],sizeof(upra[liczba_upraw]))){
						liczba_upraw++;
                        }
                }
                zplikUprawa.close();
 
 
                                break;
                                                }
		
		case 4:
                        {
							for(int i=0;i<liczba_roslin;i++)
                                {
                                        printf("\n");
                                        ros[i].wypisz_Roslina();
                                }
                                getchar();
                                getchar();
                                break;
                        }
		
		
		
		case 5:
                        {
							for(int i=0;i<liczba_farmer;i++)
                                {
                                        printf("\n");
                                        far[i].wypisz_Farmer();
                                }
                                getchar();
                                getchar();
                                break;
                        }
 
        case 6:
                        {
							for(int i=0;i<liczba_upraw;i++)
                                {
                                        printf("\n");
                                        upra[i].wypisz_Uprawa();
                                }
                                getchar();
                                getchar();
                                break;
                        }
		
		case 7:
		
		
		
		
		
		
		
		case 8:
			
			
			
			
			
			
		case 9:
                     {
                   koniec = 't';
							break;
					}
		
		
		
		
		
		
		default :
                        {
                        cout <<" Wybrales zla opcje !"<<endl;
                        cout <<"   Sproboj ponownie"<<endl;
                        getchar();
                        getchar();
                        }
 
                }
        system("cls");
                }
                while(koniec!='t');
               
        cout <<"Do zobaczenia pozniej !"<<endl;
 
                return 0;
				} 

brak mi tylko 3 pkt z polecenia .
Wie ktos moze jak to zrobic ?

0

Zamień te pola:

        int identyfikator_Rosliny;
        int identyfikator_Farmera;

na wskaźniki.

0

udalo mi sie zrobic pkt a
lecz nie wiem jak napisac b. mogby ktos lekko nakierowac jak to ruszyc ?

 #include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
class Roslina
{
        private:
        int identyfikator_Rosliny;
                int cena_worka;
        char nazwa[20];
 
public:
        void wpisz_Roslina(int id_Rosliny, int cena, char* nazwa_rosliny)
        {
                identyfikator_Rosliny = id_Rosliny;
                                cena_worka = cena;
                                strcpy_s(nazwa, nazwa_rosliny);
        }
 
        void wypisz_Roslina()
        {
                        cout << "ID_rosliny :  "<< identyfikator_Rosliny << ",  Cena :  "<< cena_worka << ", nazwa_rosliny : " << nazwa << endl;
        }
       
        int daj_id_Rosliny(){return identyfikator_Rosliny; }
                int daj_cena(){return cena_worka; }
 
};
 
class Farmer
{
private:
        int identyfikator_Farmera;
        char nazwa[50];
 
public:
        void wpisz_Farmer(int id_Farmera,char* nazwa_farmy)
        {
                identyfikator_Farmera = id_Farmera;
                                strcpy_s(nazwa, nazwa_farmy);
        }
 
        void wypisz_Farmer()
        {
                cout << "ID_Farmera :  "<< identyfikator_Farmera << ",  nazwa_farmy :  "<< nazwa <<endl;
        }
       
                int porownaj_farmera(char *imie_farmera)
                {
                        if(strcmp(nazwa,imie_farmera) == 0)
                        {
                                return 1;
                        }
                        else
                        {
                                return 0;
                        }
                }
 
        int daj_id_Farmera(){return identyfikator_Farmera; }
       
};
class Uprawa
{
private:
        int identyfikator_Rosliny;
        int identyfikator_Farmera;
        int powierzchnia;
 
public:
 
        void wpisz_Uprawa(int id_Rosliny,int id_Farmera,int powierzchnia_uprawy)
        {
                identyfikator_Rosliny = id_Rosliny;
                identyfikator_Farmera = id_Farmera;
                                powierzchnia = powierzchnia_uprawy;
        }
       
 
        void wypisz_Uprawa()
        {
                        cout << "ID_Rosliny :  "<< identyfikator_Rosliny << ", ID_Farmera :  "<< identyfikator_Farmera << ", powierzchnia_uprawy : " << powierzchnia << endl;
        }
       
        int daj_id_Rosliny(){return identyfikator_Rosliny; }
        int daj_id_Farmera(){return identyfikator_Farmera; }
        int daj_powierzchnia_uprawy(){return powierzchnia; }
};
 
int main(){
                int wybor_opcji, liczba_roslin, liczba_upraw, liczba_farmer;
        int r, f, u;
                int id_Farmer;
        int id_Roslina;
        char nazwa_farmy[50];
        char nazwa_rosliny[20];
        int cena_worka;
                int ktory_zakup;
                int powierzchnia_uprawy;
        char koniec;
                char imie_farmera[50];
                int koszt;
                Roslina * ros;
        Farmer * far;
        Uprawa * upra;
 
        koniec = 'b';
 
        ros = new Roslina [100];
        far = new Farmer [100];
        upra = new Uprawa [100];
 
 
 
        ifstream zplikRoslina("Roslina.dat", ios_base::binary);
        if(zplikRoslina.is_open())
                {
                                        liczba_roslin=0;
                                        while(zplikRoslina.read((char*)&ros[liczba_roslin],sizeof(ros[liczba_roslin]))){
                                                liczba_roslin++;
                        }
                }
                zplikRoslina.close();
 
        ifstream zplikFarmer("Farmer.dat", ios_base::binary);
        if(zplikFarmer.is_open())
                {
                                        liczba_farmer=0;
                                        while(zplikFarmer.read((char*)&far[liczba_farmer],sizeof(far[liczba_farmer]))){
                                                liczba_farmer++;
                        }
                }
                                zplikFarmer.close();
 
                ifstream zplikUprawa("Uprawa.dat", ios_base::binary);
        if(zplikUprawa.is_open())
                {
                                        liczba_upraw=0;
                                        while(zplikUprawa.read((char*)&upra[liczba_upraw],sizeof(upra[liczba_upraw]))){
                                                liczba_upraw++;
                        }
                }
                zplikUprawa.close();
        do{
 
 
                cout << "1) Dodaj nowa baze Roslin                                                                            " << endl;
                cout << "2) Dodaj nowa baze Farmera                                                                           " << endl;
                cout << "3) Dodaj nowa baze Upraw                                                                             " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
                cout << "4) Wypisz baze Roslin                                                                                " << endl;
                cout << "5) Wypisz baze Farmera                                                                               " << endl;
                cout << "6) Wypisz baze Upraw                                                                                 " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
                cout << "7) Calkowity koszt zasiania roslin poniesionego przez wskazanego farmera                             " << endl;
                cout << "8) Nazwa rosliny, ktorej uprawy zajmuja najwieksza powierzchnie                                      " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
                cout << "9) Wyjscie                                                                                           " << endl;
                cout << "-----------------------------------------------------------------------------" << endl;
 
                                cin >> wybor_opcji;
 
 
                switch(wybor_opcji) // Wybieranie opcji itd
                {
                case 1:
                                        {
 
                cout<<"     Wybrales opcje dodawania nowej bazy Roslin \n"<<endl;
                cout<<"         Ile roslin chcesz dodac ?"<<endl;
                cin >> r;
 
                               
 
                for(int i=0;i<r;i++)
                     {
                 cout << "Podaj ID rosliny : " <<endl;
                                 cin >> id_Roslina;
                 cout << "Podaj nazwe rosliny : " <<endl;
                                                                 cin >> nazwa_rosliny;
                                 cout << "Podaj cene worka : " <<endl;
                                                                 cin >> cena_worka;
 
                                                                 ros[i].wpisz_Roslina(id_Roslina,cena_worka,nazwa_rosliny);
 
                    }
                               
 
                for(int i=0;i<r;i++)
                                        {
                ros[i].wypisz_Roslina(); // Wypisywanie osoby
                                        }
                getchar();
                getchar();
               
 
 
                ofstream doplikRoslina("Roslina.dat",ios_base::app | ios_base::binary);
                for(int i =0;i<r;i++)
                {
                        doplikRoslina.write((char*)&ros[i],sizeof ros[i] );
                }
                doplikRoslina.close();
 
                ifstream zplikRoslina("Roslina.dat", ios_base::binary);
                if(zplikRoslina.is_open())
                {
                                        liczba_roslin=0;
                                        while(zplikRoslina.read((char*)&ros[liczba_roslin],sizeof(ros[liczba_roslin]))){
                                                liczba_roslin++;
                        }
                }
                zplikRoslina.close();
 
                                break;
                                                                                }
               
                 case 2:
                        {
 
                 cout<<"     Wybrales opcje dodawania Farm do bazy \n"<<endl;
                 cout<<"         Ile farm chcesz dodac ?"<<endl;
                 cin >> f;
 
                               
 
                 for(int i=0;i<f;i++)
                         {
                 cout << "Podaj ID farmera : " <<endl;
                 cin >> id_Farmer;
                 cout << "Podaj nazwe farmy : " <<endl;
                                 cin >> nazwa_farmy;
 
                                 far[i].wpisz_Farmer(id_Farmer, nazwa_farmy);
 
                         }
 
                 for(int i=0;i<f;i++)
 
                                        {
                        far[i].wypisz_Farmer(); // Wypisywanie zakupow
                                        }
                getchar();
                getchar();
 
 
 
                ofstream doplikFarmer("Farmer.dat",ios_base::app | ios_base::binary);
                for(int i =0;i<f;i++)
                {
                                        doplikFarmer.write((char*)&far[i],sizeof far[liczba_farmer] );
                }
                doplikFarmer.close();
 
                ifstream zplikFarmer("Farmer.dat", ios_base::binary);
                if(zplikFarmer.is_open())
                {
                                        liczba_farmer=0;
                                        while(zplikFarmer.read((char*)&far[liczba_farmer],sizeof(far[liczba_farmer]))){
                                                liczba_farmer++;
                        }
                }
                zplikFarmer.close();
                                break;
                                                }
               
                case 3:
                        {
 
                 cout<<"     Wybrales opcje dodawania upraw do bazy \n"<<endl;
                 cout<<"Ile upraw chcesz dodac ?"<<endl;
                 cin >> u;
 
                               
 
                 for(int i=0;i<u;i++)
                       {
                 cout << "Podaj ID rosliny : " <<endl;
                                 cin >> id_Roslina;
                 cout << "Podaj ID farmera : " <<endl;
                                 cin >> id_Farmer;
                                 cout << "Podaj powierzchnie uprawy : " <<endl;
                                 cin >> powierzchnia_uprawy;
 
                                 upra[i].wpisz_Uprawa(id_Roslina, id_Farmer, powierzchnia_uprawy);
 
                                }
 
                 for(int i=0;i<u;i++)
                {
                        upra[i].wypisz_Uprawa(); // Wypisywanie produktow
                }
                getchar();
                getchar();
 
 
 
                ofstream doplikUprawa("Uprawa.dat",ios_base::app | ios_base::binary);
                for(int i =0;i<u;i++)
                {
                                        doplikUprawa.write((char*)&upra[i],sizeof upra[liczba_upraw] );
                }
                doplikUprawa.close();
 
                ifstream zplikUprawa("Uprawa.dat", ios_base::binary);
                if(zplikUprawa.is_open())
                {
                                        liczba_upraw=0;
                                        while(zplikUprawa.read((char*)&upra[liczba_upraw],sizeof(upra[liczba_upraw]))){
                                                liczba_upraw++;
                        }
                }
                zplikUprawa.close();
 
 
                                break;
                                                }
               
                case 4:
                        {
                                                        for(int i=0;i<liczba_roslin;i++)
                                {
                                        printf("\n");
                                        ros[i].wypisz_Roslina();
                                }
                                getchar();
                                getchar();
                                break;
                        }
               
               
               
                case 5:
                        {
                                                        for(int i=0;i<liczba_farmer;i++)
                                {
                                        printf("\n");
                                        far[i].wypisz_Farmer();
                                }
                                getchar();
                                getchar();
                                break;
                        }
 
        case 6:
                        {
                                                        for(int i=0;i<liczba_upraw;i++)
                                {
                                        printf("\n");
                                        upra[i].wypisz_Uprawa();
                                }
                                getchar();
                                getchar();
                                break;
                        }
               
                case 7:
               
                        {
                                cout <<"Podaj imie farmera : " <<endl;
                                cin >> imie_farmera;
                                koszt = 0;
                                for(int i=0;i<liczba_farmer;i++)
                                {
                                        if(far[i].porownaj_farmera(imie_farmera))
                                        {
                                                for(int j = 0; j<liczba_upraw;j++)
                                                {
                                                        if(far[i].daj_id_Farmera() == upra[j].daj_id_Farmera())
                                                        {
                                                                for(int k = 0;k<liczba_roslin;k++)
                                                                {
                                                                        if(upra[j].daj_id_Rosliny() == ros[k].daj_id_Rosliny())
                                                                        {
                                                                                koszt = koszt + ros[k].daj_cena() * upra[j].daj_powierzchnia_uprawy();
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                }
 
 
                                cout <<"Calkowity koszt zasiania upraw farmera '"<<imie_farmera<<"' wyniesie : "<<koszt <<endl;
                                getchar();
                                getchar();
 
                                break;
                        }
               
               
               
               
               
                case 8:
                       
                        {
                                break;
                        }
                       
                       
                       
                       
                case 9:
                     {
                   koniec = 't';
                                                        break;
                                        }
               
               
               
               
               
               
                default :
                        {
                        cout <<" Wybrales zla opcje !"<<endl;
                        cout <<"   Sproboj ponownie"<<endl;
                        getchar();
                        getchar();
                        }
 
                }
        system("cls");
                }
                while(koniec!='t');
               
        cout <<"Do zobaczenia pozniej !"<<endl;
 
                return 0;
                                }
0

Przecież ignorujesz wszystko co ci dotychczas powiedziano.

0

jak mi powierz co mi wniosą wskaźniki do podpunktu b to przerobie a pÓÓÓÓki co program kompiluje sie i chodzi bez nich

0

To wniosą wskaźniki:

for(int i=0;i<liczba_farmer;++i) far[i].koszt=0;
for(int i=0;i<liczba_upraw;++i) upra[j].farmer.koszt+=upra[j].roslina.daj_cena()*upra[j].daj_powierzchnia_uprawy();

To jest zamiast trzech for'ów z trzema if'ami

1 użytkowników online, w tym zalogowanych: 0, gości: 1