Witam
Dawno już nie kodowałem i muszę przyznać trochę pozapominałem. Trochę sobie przypomniałem, ale nad tym problem siedzę już kilka godzin i nic.
Sytuacja wygląda tak:
struct st
{
string a;
int b;
};
void przesun(st *s, int i)
{
s[i].a = s[i+1].a;
s[i].b = s[i+1].b;
}
int main()
{
int n = 10;
st s[n];
for(int i = 0; i < n; i++)
{
if(s[i].b < 18)
{
n--;
for(int j = i; j < n; j++)
{
przesun(s, j);
}
i--;
}
}
}
Po wyjściu z pętli dane w tablicy są niepoprawne;
Ale gdy zapiszę to w ten sposób, wszystko działa pięknie:
struct st
{
string a;
int b;
};
int main()
{
int n = 10;
st s[n];
for(int i = 0; i < n; i++)
{
if(s[i].b < 18)
{
n--;
for(int j = i; j < n; j++)
{
s[i].a = s[i+1].a;
s[i].b = s[i+1].b;
}
i--;
}
}
}
Może ktoś mi powiedzieć co jest nie tak w pierwszym kodzie?
Oczywiście jest to wycinek programu, należy przyjąć, że tablica jest wypełniana w funkcji main.