Witam, moja zmienna 'tory_ekwipunek[i].punkty_toru[pod_tory-1].y' gdzie 'tory_ekwipunek[]' jest tablicą zmiennych klasy 'Tory',a 'punkty_toru[]' to tablica dynamiczna zmiennej Vector2i (SFML) która należy oczywiście do klasy Tory.
Oto cały kod, chociaż kluczowe w tym problemie linie to 82 - 88:
#include <SFML/Graphics.hpp>
#include <iostream>
#include <math.h>
#include <fstream>
using namespace std;
using namespace sf;
class Tor
{
public:
int ile_torow;
Vector2i *punkty_toru;///punkty wierzcholka
string *polaczenia_punkty_toru;
RectangleShape *R_pod_tor;
};
string intToStr(int n)
{
string tmp, ret;
if(n < 0) {
ret = "-";
n = -n;
}
do {
tmp += n % 10 + 48;
n -= n % 10;
}
while(n /= 10);
for(int i = tmp.size()-1; i >= 0; i--)
ret += tmp[i];
return ret;
}
int ile_fraz(string tekst, string fraza)
{
int wsk=0;
int ile_fraz=0;
while(tekst.find(fraza,wsk) != string::npos)
{
wsk = tekst.find(fraza,wsk)+1;
ile_fraz++;
}
return ile_fraz;
}
int main()
{
string linia_plik;
int ile_linii = 0;
fstream plik;
plik.open("tory.txt", ios::in);
if(plik.good())
{
while(getline(plik, linia_plik))
++ile_linii;
plik.close();
}
plik.open("tory.txt", ios::in);
string tory[ile_linii];
Tor tory_ekwipunek[ile_linii];
if(plik.good())
{
for(int i=0;getline(plik,linia_plik);i++)///i = <licznik> ile_jest_wszystkich_linii_w_notatniku?
{
cout<<"i = >"<<i<<"<"<<endl;
tory[i] = linia_plik;
int pod_tory = ile_fraz(linia_plik,"(");
tory_ekwipunek[i].ile_torow = pod_tory-1;
tory_ekwipunek[i].punkty_toru = new Vector2i[pod_tory-1];
for(int j=0;j<pod_tory;j++) ///j = <licznik> ile_jest_wierzchlkow?
{///w tej petli sa wpisywane punkty z nawiasow (_,_) do tory_ekwipunek[].punkty_toru[]
cout<<"j = >"<<j<<"<"<<endl;
tory_ekwipunek[i].punkty_toru[j].x = atoi(linia_plik.substr(linia_plik.find('(')+1,linia_plik.find(',')-linia_plik.find('(')-1).c_str());
tory_ekwipunek[i].punkty_toru[j].y = atoi(linia_plik.substr(linia_plik.find(',')+1,linia_plik.find(')')-linia_plik.find(',')-1).c_str());
cout<<"Wpisano do tory_eq[i].pkt_toru[j] (x)"<<tory_ekwipunek[i].punkty_toru[j].x<<", (y)"<<tory_ekwipunek[i].punkty_toru[j].y<<"<"<<endl;
linia_plik.erase(0,linia_plik.find(')')+1);
}
cout<<"<kontrola zmiennej tory_ekwipunek[i].punkty_toru[j].y gdzie y="<<pod_tory-1<<endl;
cout<<"kontrola nr. 1. >"<<tory_ekwipunek[i].punkty_toru[pod_tory-1].y<<"<"<<endl;
int polaczenia_torow = ile_fraz(linia_plik,"-")+1;
string polaczenia_torow_nawiasy = linia_plik.substr(linia_plik.find('[')+1,linia_plik.find(']')-linia_plik.find('[')-1);
tory_ekwipunek[i].polaczenia_punkty_toru = new string[polaczenia_torow];
cout<<"Polaczen torow jest "<<polaczenia_torow<<endl;
tory_ekwipunek[i].R_pod_tor = new RectangleShape[polaczenia_torow];
cout<<"kontrola nr. 2. >"<<tory_ekwipunek[i].punkty_toru[pod_tory-1].y<<"<"<<endl;
for(int j=0;j<polaczenia_torow;j++) ///ile_polaczen_miedzy_punktami
{
cout<<"j = >"<<j<<"<"<<endl;
cout<<"kontrola nr. 3. >"<<tory_ekwipunek[i].punkty_toru[pod_tory-1].y<<"<"<<endl;
cout<<"wpisano do p_t_n: "<<polaczenia_torow_nawiasy.substr(j*3,2)<<endl;
tory_ekwipunek[i].polaczenia_punkty_toru[j] = polaczenia_torow_nawiasy.substr(j*3,2);
for(int z=0;z<2;z++)
{
if(tory_ekwipunek[i].polaczenia_punkty_toru[j][z] == 'A')
tory_ekwipunek[i].polaczenia_punkty_toru[j][z] = '0';
if(tory_ekwipunek[i].polaczenia_punkty_toru[j][z] == 'B')
tory_ekwipunek[i].polaczenia_punkty_toru[j][z] = '1';
if(tory_ekwipunek[i].polaczenia_punkty_toru[j][z] == 'C')
tory_ekwipunek[i].polaczenia_punkty_toru[j][z] = '2';
if(tory_ekwipunek[i].polaczenia_punkty_toru[j][z] == 'D')
tory_ekwipunek[i].polaczenia_punkty_toru[j][z] = '3';
}
Vector2i punkty_do_toru[2];
cout<<"szukam dla: "<<tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(0,1)<<" i "<<
tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(1,1)<<"<"<<endl;
cout<<tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(0,1).c_str())].x<<","<<
tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(0,1).c_str())].y<<","<<
tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(1,1).c_str())].x<<","<<
tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(1,1).c_str())].y<<"."<<endl;
punkty_do_toru[0].x = tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(0,1).c_str())].x;
punkty_do_toru[0].y = tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(0,1).c_str())].y;
punkty_do_toru[1].x = tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(1,1).c_str())].x;
punkty_do_toru[1].y = tory_ekwipunek[i].punkty_toru[atoi(tory_ekwipunek[i].polaczenia_punkty_toru[j].substr(1,1).c_str())].y;
cout<<"Punkty do toru: i="<<i<<"/j="<<j<<" "<<punkty_do_toru[0].x<<"/"<<punkty_do_toru[0].y<<" i "<<punkty_do_toru[1].x<<"/"<<(int)punkty_do_toru[1].y<<"<"<<endl;
}
cout<<endl<<"----------------------"<<endl;
}
plik.close();
}
return 0;
}
(kod specjalnie uprościłem do tego stopnia, żeby jak najlepiej było widać ten błąd)
Z tego kodu, w konsoli pokazuje się coś takiego:
Miejsce gdzie kod wypisuje to na ekranie jest tutaj:
I tutaj chciałem się zapytać, czy ktoś jest mi w stanie powiedzieć co się dzieje z moją zmienną zaznaczoną na zdjęciach między linią kodu 82 a 88? Co dziwne, w głównej pętli for (czyli int=1;i<.... ) ta zmienna tak się resetuje co ileś iteracji, a nie w każdej, chociaż pobranie informacji z pliku i kod jest taki sam.
W folderze projektu jest tory.txt, zawartość:
A01{A(0,0)B(0,4)[AB]}
A02{A(0,0)B(4,0)[AB]}
A03{A(0,0)B(4,-4)[AB]}
A04{A(0,0)B(4,-2)[AB]}
A05{A(0,0)B(4,2)[AB]}
A06{A(0,0)B(4,4)[AB]}
A07{A(0,0)B(-2,-4)[AB]}
A08{A(0,0)B(2,4)[AB]}
B01{A(0,0)B(4,-4)C(4,0)[AB-AC]}
B02{A(0,0)B(4,-2)C(4,0)[AB-AC]}
B03{A(0,0)B(4,2)C(4,0)[AB-AC]}
B04{A(0,0)B(4,4)C(4,0)[AB-AC]}
B05{A(0,0)B(-4,-4)C(0,-4)[AB-AC]}
B06{A(0,0)B(-2,-4)C(0,-4)[AB-AC]}
B07{A(0,0)B(2,-4)C(0,-4)[AB-AC]}
B08{A(0,0)B(4,-4)C(0,-4)[AB-AC]}
B09{A(0,0)B(-4,4)C(-4,0)[AB-AC]}
B10{A(0,0)B(-4,2)C(-4,0)[AB-AC]}
B11{A(0,0)B(-4,-2)C(-4,0)[AB-AC]}
B12{A(0,0)B(-4,-4)C(-4,0)[AB-AC]}
B13{A(0,0)B(-4,-4)C(0,-4)[AB-AC]}
B14{A(0,0)B(-2,-4)C(0,-4)[AB-AC]}
B15{A(0,0)B(2,-4)C(0,-4)[AB-AC]}
B16{A(0,0)B(2,-4)C(0,-4)[AB-AC]}
C01{A(0,0)B(4,-4)C(4,4)[AB-AC]}
C02{A(0,0)B(4,-2)C(4,2)[AB-AC]}
C03{A(0,0)B(-4,2)C(-4,-2)[AB-AC]}
C04{A(0,0)B(-4,4)C(-4,-4)[AB-AC]}
C05{A(0,0)B(-4,4)C(4,4)[AB-AC]}
C06{A(0,0)B(-2,4)C(2,4)[AB-AC]}
C07{A(0,0)B(4,-4)C(-4,-4)[AB-AC]}
D01{A(0,0)B(4,0)C(4,2)D(2,0)[AB-AC-BD-CD]}