Witam,
Piszę zadanie do szkoły i mam drobny problem. Zadanie polega na posortowaniu tablicy, według określonego schematu, a później użytkownik podaje jakąś cyfrę będącą numerem wiersza tablicy i jeżeli jest to cyfra z pierwszej połowy tablicy (po posortowaniu) to wyświetla się T, w innym wypadku N.
Przykład
Wejście
4
4 5
12 4
3 0
12 1
2
1
2
Wyjście
N
T
Napisałem taki kod jak poniżej, tablica jest poprawnie posortowana raczej bo sprawdzałem dziesiątki razy i wygląda dobrze, natomiast mam problem z poprawnym wyświetleniem tego T,N. Czy mógłby mi ktoś coś doradzić ? :)
#include <stdio.h>
#include <stdlib.h>
void b_sort(int **tablica, int programisci);
int main()
{
int programisci,polowa;
int **tablica;
int i;
int ile_pytam, *pytam_sie;
scanf("%d", &programisci);
tablica = (int**)malloc(programisci * sizeof(int*));
for(i=0;i<programisci;i++) {
tablica[i] = (int*)malloc(3 * sizeof(int));
tablica[i][0] = i+1;
scanf("%d %d",&tablica[i][1],&tablica[i][2]); }
scanf("%d",&ile_pytam);
pytam_sie = (int*)malloc(ile_pytam * sizeof(int));
for(i=0;i<ile_pytam;i++) { scanf("%d",&pytam_sie[i]); }
for(i=0;i<programisci;i++) { tablica[i][3] = i+1; }
b_sort(tablica,programisci);
polowa=(programisci/2);
for(i=0;i<ile_pytam;i++) { if(tablica[pytam_sie[i]][3] < polowa)
{ printf("T\n"); } else { printf("N\n"); } }
return 0;
}
void b_sort(int **tablica, int programisci)
{
int temp,temp2,temp3,i,zmiana;
do
{
zmiana=0;
i=programisci-1;
do
{
i--;
if (tablica[i+1][1]< tablica[i][1])
{
temp=tablica[i][1]; temp2=tablica[i][2]; temp3=tablica[i][0];
tablica[i][1]=tablica[i+1][1]; tablica[i][2]=tablica[i+1][2]; tablica[i][0]=tablica[i+1][0];
tablica[i+1][1]=temp; tablica[i+1][2]=temp2; tablica[i+1][0]=temp3;
zmiana=1;
}
if (tablica[i+1][1] == tablica[i][1] && tablica[i+1][2] > tablica[i][2])
{
temp=tablica[i][1]; temp2=tablica[i][2]; temp3=tablica[i][0];
tablica[i][1]=tablica[i+1][1]; tablica[i][2]=tablica[i+1][2]; tablica[i][0]=tablica[i+1][0];
tablica[i+1][1]=temp; tablica[i+1][2]=temp2; tablica[i+1][0]=temp3;
zmiana=1;
}
}
while (i!=0);
}
while (zmiana!=0);
printf("\nTablica po posortowaniu:");
for(i=0; i<programisci; i++) printf("\n%d %d %d %d\n",tablica[i][0],tablica[i][1],tablica[i][2],tablica[i][3]);
}
Pozdrawiam