Witam.
Mam problem z moim kodem, którego zadaniem jest pobranie od użytkownika dowolnej ilości liczb dużych całkowitych, następnie użytkownik podaje drugi zbiór liczb i względem tego drugiego zbioru(każdego elementu z tego zbioru) ma zostać wypisana ilość liczb mniejszych. Przy próbie wyszukania zgodnie z kluczem konsola zamiera
Oto kod
#include <stdio.h>
#include<stdlib.h>
int komp(long long *TAB, long long *TAb){
return (*(long long *)TAB - *(int *)TAb);
}
int *Wczytaj(int n)
{
int i;
int k = n;
int *buff = (int *)malloc(n * sizeof(int));
if(buff == NULL) {
printf("Nie działa!\n");
exit(0);
}
for( i=0; i<k; i++)
{ printf("Tab[%d] = ", i);
scanf("%d", (buff + i));
}
return buff;
}
int binarne(int l, int *pierwszy, unsigned int ile)
{
int sr;
int prawo = ile;
int lewo = 0;
int i;
int wart;
while(lewo <= prawo)
{
sr = (lewo + prawo) / 2;
wart = pierwszy[sr];
if((wart == l) || (wart < l && pierwszy[sr + 1] > l) || (wart < l && pierwszy[sr-1] > l)){
printf("loo = %d a s = %d\n", pierwszy[sr - 1], sr);
if(pierwszy[sr-1] == l) {
printf("lowering; %d\n", sr);
while(pierwszy[sr-1] == l) sr--;
return sr;
} else
return sr+1;
}
if (wart<l)
lewo = sr-1;
else
prawo = sr + 1;
}
}
int main(void)
{
int arg;
int kr;
int *ks;
int index;
int *Tab;
int *Tab1;
int i;
printf("Podaj elementy tablicy dynamicznej:\n");
scanf("%d",&arg);
Tab = Wczytaj(arg);
qsort(Tab,arg,sizeof(int),komp);
for(i = 0; i < arg; i++)
printf("%d ", *(Tab + i));
printf("Podaj kryterium:\n");
scanf("%d",&kr);
Tab1 = Wczytaj(kr);
for(i=0;i<kr;i++)
{ks = binarne(*(Tab1+i),Tab,arg-1);
printf("wynik = %d\n", ks);
}
free(Tab);
free(Tab1);
return 0;
}