[C++] struktura a klasy

zuzka_kotek
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 23 lut 2016, o 20:45
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 4 razy

[C++] struktura a klasy

Post autor: zuzka_kotek »

Dzień Dobry
Mam za zadanie stworzyć program zawierający funkcje: WCZYTAJ_dane,
WYPISZ_dane, umożliwiający:
- Stworzenie tablicy struktur w której będą przechowywane dane
książek zgromadzonych w bibliotece: imię autora, nazwisko autora,
tytuł, rok wydania, nr wydania
- Wpisanie danych do tablicy
- Wyświetlenie danych
A następnie przerobić program na klasy. Pierwszą część zadania zrobiłam, lecz przy drugiej, wyskakują mi 3 błędy:
1) Przy wersie 68: expected type-specifier before 'ksiazka' "
2)Przy obu funkcjach: " 'wpisz'/'drukuj' was not declared in this scope"

Oto oba kody:
Struktury:

Kod: Zaznacz cały

#include <iostream>

using namespace std;

struct ksiazka
{char imie_autora[15];
char nazwisko_autora[50];
char tytul[30];
int rok_wydania;
int nr_wydania;
};
void wpisz(ksiazka * ksiegozbior, int n)
{   cout<<endl;
    cout<<endl;
    cout << "---WPISYWANIE DANYCH KSIAZKI---"<< endl;
	for (int i = 0; i < n; i++){

        cout<<endl<<endl<<" Podaj dane ksiazki nr: "<<i+1<<" : "<<endl;
        cout<<"_______________________________________"<< endl<<endl;
		cout<<endl<< " Imie autora: ";
		cin >> ksiegozbior[i].imie_autora;
		cout<<endl;
		cout<< " Nazwisko autora: ";
		cin >> ksiegozbior[i].nazwisko_autora;
		cout<<endl;
		cout<<"Tytul ksiazki: ";
		cin>>ksiegozbior[i].tytul;
		cout<<endl;
		cout << " Rok wydania: ";
		cin >> ksiegozbior[i].rok_wydania;
		cout << " Nr wydania: ";
		cin >> ksiegozbior[i].nr_wydania;

	}
}

void drukuj(ksiazka * ksiegozbior, int nr) {
     int l,k;
     int x;
    cout<<endl;
        cout << "---DRUKOWANIE DANYCH KSIAZKI---"<< endl;
        cout << "__________________________________________________________________________ " << endl;

		cout << " Podaj nr ksiazki: ";
		cin >> nr;


    cout<<endl <<endl;
	cout << " Imie autora: " << ksiegozbior[nr-1].imie_autora << endl;
	cout << " Nazwisko autora: " <<ksiegozbior[nr-1].nazwisko_autora<< endl;
	cout << " Tytul ksiaki: " << ksiegozbior[nr-1].tytul << endl;
	cout << " Rok wydania: " << (ksiegozbior[nr-1].rok_wydania) << endl;
	cout << " Nr wydania: " << ksiegozbior[nr-1].nr_wydania << endl;
	cout<<endl<<endl;

    //}
}
int main()
{
    int a;
    int b;
    cout<<"                                  ---WITAJ!---                                       "<<endl;
	cout << "                   Ilu ksiazek chcesz wpisac ? "<<endl;
	cin >> a;

	ksiazka * ksiegozbior = new ksiazka[a];
	wpisz(ksiegozbior,a);
	drukuj(ksiegozbior,b);
	return 0;
}
Oraz klasy :

Kod: Zaznacz cały

#include <iostream>

using namespace std;

class Ksiazka
{
    char imie_autora[15];
    char nazwisko_autora[50];
    char tytul[30];
    int rok_wydania;
    int nr_wydania;
public:
    void wpisz(Ksiazka * ksiegozbior, int n)
{   int i;
    cout<<endl;
    cout<<endl;
    cout << "---WPISYWANIE DANYCH KSIAZKI---"<< endl;

        cout<<endl<<endl<<" Podaj dane ksiazki nr: "<<i+1<<" : "<<endl;
        cout<<"_______________________________________"<< endl<<endl;
        cout<<endl<< " Imie autora: ";
        cin >> imie_autora;
        cout<<endl;
        cout<< " Nazwisko autora: ";
        cin >> nazwisko_autora;
        cout<<endl;
        cout<<"Tytul ksiazki: ";
        cin>> tytul;
        cout<<endl;
        cout << " Rok wydania: ";
        cin >> rok_wydania;
        cout << " Nr wydania: ";
        cin >> nr_wydania;
}
void drukuj(Ksiazka * ksiegozbior, int nr) {

    cout<<endl;
        cout << "---DRUKOWANIE DANYCH KSIAZKI---"<< endl;
        cout << "__________________________________________________________________________ " << endl;

        cout << " Podaj nr ksiazki: ";
        cin >> nr;


    cout<<endl <<endl;
    cout << " Imie autora: " << imie_autora << endl;
    cout << " Nazwisko autora: " <<nazwisko_autora<< endl;
    cout << " Tytul ksiaki: " << tytul << endl;
    cout << " Rok wydania: " << rok_wydania << endl;
    cout << " Nr wydania: " << nr_wydania << endl;
    cout<<endl<<endl;

    //}
}
};

int main()
{
    int a;
    int b = 0;
    cout<<"                                  ---WITAJ!---                                       "<<endl;
    cout << "                   Ilu ksiazek chcesz wpisac ? "<<endl;
    cin >> a;

    Ksiazka * ksiegozbior = new Ksiazka[a];

    for(int i = 0; i < a; ++i)
          ksiegozbior[i] -> wpisz();

    ksiegozbior[b] -> drukuj();

    return 0;
}
Będę wdzięczna za jakąkolwiek pomoc
Pozdrawiam
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++] struktura a klasy

Post autor: bartek118 »

Przede wszystkim - klasa Ksiazka nie posiada konstruktora.
Po drugie - wywołujesz metody bez parametrów, które nie istnieją, bo Twoje przyjmują parametry (zresztą błędnie).
zuzka_kotek
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 23 lut 2016, o 20:45
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 4 razy

[C++] struktura a klasy

Post autor: zuzka_kotek »

Znaczy jeżeli chodzi o konstruktor to specjalnie nie dałam, profesor z którym mam zajęcia powiedział, że mamy robić bez nich.Na potrzeby tego zadania. A jeżeli chodzi o drugi problem to jak powinnam go naprawić wskaźniki to moja pięta
Awatar użytkownika
morsisko
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 10 lut 2015, o 17:46
Płeć: Mężczyzna
Lokalizacja: Antarktyda

[C++] struktura a klasy

Post autor: morsisko »

Kod: Zaznacz cały

void wpisz(Ksiazka * ksiegozbior, int n)
Zlikwidować parametry w tej metodzie, i w metodzie drukuj skoro i tak ich nie używasz wewnątrz metody.
Radzę popracować nad formatowaniem kodu, bo mieszasz style i odstępy przez co kod jest nieczytelny.
Ostatnio zmieniony 9 kwie 2016, o 22:00 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
ODPOWIEDZ