Jeszcze takie pytanie - co wpisac, zeby kod wyświetlał się w okienku kodu z sytaxem c++ ?
Witam, mam problem. Otóż piszę sobie pogram i moja klasa Klasyfikator musi mieć dostęp do rzeczy znajdujących się w public klasy Dane.
Nie wiem co zrobić, aby funkcje z maina działały (mogą być trochę inne, chodzi o to, żeby po utworzeniu obiektu Klasyfikator klasyfikator móc posługując się nim dotrzeć do pól obiektu Dane dane) UWAGA! Proszę o wyrozumiałość, bo dopiero się uczę :/
ogólnie chodzi o to -> będę miał jeszcze potem klasę 1-R, która będzie
dziedziczyć po klasie klasyfikator. Chodzi o to, żebym mógł wywołać
funkcję "pobierz dane" a później "konwertuj" i dostać do klasy 1-R
element vector <int> liczby, wyskosc i szerkosc; :/
bo na nim mam zamiar operować :/ ważne, żebym miał jakoś dostęp do
tego elementu :/
Main
#include "Dane.cpp"
#include "Klasyfikator.cpp"
using namespace std;
int main()
{
Klasyfikator klasyfikator;
klasyfikator.dane.liczSzerokosc( dane.szerokosc );
klasyfikator.dane.liczWysokosc( dane.wysokosc );
klasyfikator.dane.pobierzDane( dane.nazwy );
klasyfikator.dane.konwertujDane( dane.nazwy, dane.liczby, dane.widzianeNazwy );
return 0;
}
Klasyfikator.cpp
#include "Klasyfikator.h"
Klasyfikator.h
#ifndef KLASYFIKATOR_H
#define KLASYFIKATOR_H
#include "Dane.h"
using namespace std;
class Klasyfikator
{
public:
Dane dane;
};
#endif
Dane.h
#ifndef DANE_H
#define DANE_H
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <cstring>
using namespace std;
class Dane
{
public:
vector < string > nazwy;
vector < string > widzianeNazwy;
vector < unsigned int > liczby;
int wysokosc;
int szerokosc;
void liczSzerokosc( int & szerokosc );
void liczWysokosc( int & wysokosc );
void pobierzDane( vector < string > & nazwy );
void konwertujDane( vector < string > & nazwy,
vector < unsigned int > & liczby,
vector < string > & widzianeNazwy );
};
#endif
Dane.cpp (tego to chyba nawet czytac nie trzeba)
#include "Dane.h"
void Dane::pobierzDane( vector < string > & nazwy )
{
fstream plik;
plik.open( "dane.txt", ios::in );
string klucz;
while( !plik.eof() )
{
string linia;
getline( plik, linia );
linia += ",";
for( int i = 0; linia[ i ] >= 32; ++i )
{
if( linia[ i ] != 44 ) { klucz += linia[ i ]; }
else { nazwy.push_back( klucz );
klucz.clear(); }
}
}
plik.close();
return;
};
void Dane::liczWysokosc( int & wysokosc )
{
fstream plik;
plik.open( "dane.txt", ios::in );
if( plik.good() )
{
wysokosc = 0;
string linia;
while( !plik.eof() )
{
getline( plik, linia );
if( linia[ 0 ] ) wysokosc++;
}
plik.close();
}
else cout << "Error! Nie udalo sie otworzyc pliku podczas liczenia wysokosci!" << endl;
};
void Dane::liczSzerokosc( int & szerokosc )
{
fstream plik;
plik.open( "dane.txt", ios::in );
if( plik.good() )
{
szerokosc = 1;
string linia;
getline( plik, linia );
for( int i = 0; linia[ i ] >= ' '; i++ )
if( linia[ i ] == ',' ) szerokosc++;
}
else cout << "Error! Nie udalo sie otworzyc pliku podczas liczenia szerokosci!" << endl;
};
void Dane::konwertujDane( vector < string > & nazwy,
vector < unsigned int > & liczby,
vector < string > & widzianeNazwy )
{
for( unsigned int i = 0; i < nazwy.size(); i++ )
{ bool znaleziono = false;
unsigned int j = 0;
for(; j < widzianeNazwy.size(); j++ )
{
if( nazwy[ i ] == widzianeNazwy[ j ] ) { znaleziono = true; liczby.push_back( j ); break; }
}
if( !znaleziono )
{
widzianeNazwy.push_back( nazwy[ i ] );
liczby.push_back( j );
}
}
};
PS dziekuje za edycje posta, teraz juz bede wiedzial jak formatowac