ok i sorted an array of structures and now i need help placing them in boxes
so that the number of boxes required is optimal
i have an idea of what i could do
- find the biggest item possible, and switch it with the first element of the array
-decrease my box' size by the item chosen and search another item
-With the new item, you switch it with the 2nd element of the array
-You repeat it until all the items have been switched
here is my code so far that sorts my array...i just dont know how to use the binary search
i attached the input file im using
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int size;
char name[21];
int boxnumber;
int used;
}item;
void swap(item *a, item *b){
item tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void bubbleSort(item a[], int size){
int i, j;
for (i=0; i<size-1; i++){
for (j=size-1; j>i; j--)
if (a[j].size > a[j-1].size)
swap(&a[j], &a[j-1]);
}
}
int bfind(item a[],int val, int size){
int left = 0;
int right = size;
int middle;
do {
middle = (left + right) / 2;
if(a[middle].size < val)
left = middle + 1;
else if(a[middle].size > val)
right = middle - 1;
else
return middle;
} while(left <= right);
return middle-1;
}
int main(void) {
int s,n;
int i;
int newboxsize;
item *array;
FILE *iFile;
iFile = fopen ("inputzou.txt","r");
fscanf (iFile, "%d, %d", &s, &n);
printf (" \n");
array = calloc (n, sizeof(item));
for (i=0;i<n;i++){
array[i].boxnumber=0;
array[i].used=0;
fscanf(iFile, "%s %d", array[i].name, &array[i].size);
}
bubbleSort(array, n);
free(array);
fclose(iFile);
return 0;
}