Witam, mam do poprawienia program odnośnie zadania: http://s20.postimg.org/bsrclkvu5/scr_56.png (rozszerzone do trzech ocen).
Problem polega na tym, że przy niektórych danych wyświetlany wynik jest niepoprawny. W informacji zwrotnej dostałem wiadomość: "Zły punkt podziału." Proszę o pomoc w rozwiązaniu problemu, który zapewne jest jakiś trywialny, lecz nie mogę go dostrzec. Pozdrawiam
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct student
{
int nr;
int ocena1;
int ocena2;
int ocena3;
};
int n,i;
printf("Ilosc studentow: ");
scanf("%d",&n);
struct student a[n];
for(i=0;i<n;i++)
{
printf("Numer indeksu studenta: ");
scanf("%d",&a[i].nr);
printf("Pierwsza ocene: ");
scanf("%d",&a[i].ocena1);
printf("Druga ocene: ");
scanf("%d",&a[i].ocena2);
printf("Trzecia ocene: ");
scanf("%d",&a[i].ocena3);
}
int p=n-1, l=0,x=0;
struct student t;
while (p>l)
{
while (a[l].ocena1 >2 && a[l].ocena2 >2 && a[l].ocena3 >2 && l<p)
{
l=l+1;
x=x+1;
}
while ((a[p].ocena1 < 3 || a[p].ocena2 < 3 || a[p].ocena3 < 3) && l<p)
{
p=p-1;
}
if (p>l)
{
t=a[l];
a[l]=a[p];
a[p]=t;
l=l+1;
p=p-1;
}
}
printf("\nZdali egzamin:\n\n");
for(i=0;i<=x;i++)
{
printf("Nr indeksu_%d\n",a[i].nr);
}
printf("\nNie zdali egzaminu:\n\n");
for(i=x+1;i<n;i++)
{
printf("Nr indeksu_%d\n",a[i].nr);
}
return 0;
}
Tutaj przykład, że wyświetla źle: http://s20.postimg.org/9cpj7qdrh/scr_57.png