I got error message about "undefined reference to function". How can i solve this? Error message is in the image. We are trying to make a multi-thread sorting program.
First, a series of 800 elements and a random distribution of distributions should be created. The values of the elements are unique. Three scheduled threads will be created. The first thread lists the first 300 elements, while the second thread lists the other 500 threads. After the two workpieces have finished their work, they have not found the third workpiece sequence and the second-row sequences. We have a new set for merging. So it must be joined. In the last step, the listed elements should be taken to the file named "son.txt" which will be created in the working directory.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_THREADS 3
int sayilar[800];
void *Sirala(void *param);
void quickSort(int[], int, int);
int partition(int[], int, int);
int kontrol=0;
int main(int argc, char *argv[]){
int i,j;
srand(time(NULL));
for(i=0; i<800; i++){
sayilar[i] = 1+ (rand() % 800);
for(j=0; j<1; j++){
if(sayilar[j]== sayilar[i]){
i--;
break;
}
}
}
pthread_t threads[NUM_THREADS];
int rc;
long t;
for(t=0; t<3; t++){
rc = threadcreate(&threads[t], NULL, Sirala, (void *)t);
if(rc){
printf("Hata, thread oluşturulamadı. Thread: %d\n", rc);
exit(-1);
}
pthread_join(threads[t], NULL);
printf("\n\n");
}
printf("SON\n");
for(i=0; i<800; i++)
printf("%d\n", sayilar[i]);
printf("/n/n");
FILE *yaz; //dosya göstericisi
yaz = fopen("son.txt", "w+");
if(yaz == NULL){
puts("Dosya acilmiyor");
exit(1);
}
for(i=0; i<800; i++){
fprintf(yaz, "%d\n", sayilar[i]);
}
fclose(yaz);
pthread_exit(NULL);
void *Sirala(void *param){
int i, baslangic, bitis;
if((long)param ==0){
baslangic = 0;
bitis= 300;
kontrol =1;
printf("Dizinin ilk 300 elemanının sırasız hali:\n\n");
for(i=baslangic; i<bitis; i++){
printf("%d - ", sayilar[i]);
}
printf("/n/n");
}
else if((long)param ==1){
baslangic = 300;
bitis= 800;
kontrol =2;
printf("Dizinin diğer 500 elemanının sırasız hali:\n\n");
for(i=baslangic; i<bitis; i++){
printf("%d - ", sayilar[i]);
}
printf("/n/n");
}
else {
baslangic = 0;
bitis= 800;
kontrol =0;
}
for(i= baslangic; i<bitis; i++){
quicksort(sayilar, baslangic, bitis-1);
}
if(kontrol ==1){
printf("Dizinin 300 elemanının sıralı hali:\n\n");
for(i = baslangic; i<bitis; i++){
printf("%d - ", sayilar[i]);
}
}
else if(kontrol ==2){
printf("Dizinin diğer 500 elemanının sıralı hali:\n\n");
for(i = baslangic; i<bitis; i++){
printf("%d - ", sayilar[i]);
}
}
printf("\n\n");
pthread_exit(0);
}
void quickSort(int a[], int sol, int sag){
int j;
if(sol<sag){
j=partition(a,sol, sag);
quickSort(a, sol, j-1);
quickSort(a, j+1, sag);
}
}
int partition(int a[], int sol, int sag){
int pivot, i, j, t;
pivot = a[sol];
i= sol;
j= sag+1;
}
}
Error message: