Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int cleanDrivers(PoliceDatabase * database, Driver ** arr){
- int dirty = 0;
- int index = 0;
- //printf("begin\n");
- for (int i = 0; i < database->numDrivers; i++){
- //printf("driver index = %d\n", i);
- for (int j = 0; j < database->numInfractions; j++){
- if(strcmp(database->infractions[j].driver->license, database->drivers[i].license) == 0){
- dirty++;
- break;
- }
- }
- }
- //printf("after dirty count\n");
- int count = (database->numDrivers)-dirty;
- //printf("count = %d\n", count);
- if (count != 0){
- Driver** drivers = (Driver **)malloc((count)*sizeof(Driver *));
- if (drivers == NULL){ return 0;}
- /*
- for (int i = 0; i < count; i++){
- drivers[i] = (Driver *)malloc(sizeof(Driver));
- if(drivers[i] == NULL) return 0;
- }
- */
- //printf("after alloc\n");
- for (int i = 0; i < database->numDrivers; i++){
- char flag = 0;
- //printf("current driver license = %s\n", database->drivers[i].license);
- for (int j = 0; j < database->numInfractions; j++){
- if(strcmp(database->infractions[j].driver->license, database->drivers[i].license) == 0){
- printf("found dirty\n");
- flag = 1;
- break;
- }
- }
- //printf("checking before add driver index = %d\n", i);
- //printf("checking initial cleans = %d\n", index);
- if (flag == 0){
- //printf("%d\n", index);
- printf("license of driver being added = %s\n", database->drivers[i].license);
- drivers[index++] = &database->drivers[i];
- //printf("%s\n", drivers[index-1]->name);
- if(index >= count){
- //printf("breaking\n");
- break;
- }
- }
- //printf("current number of cleans = %d\n", index);
- }
- //printf("before setting param\n");
- printf("last clean driver = %s\n", drivers[index-1]->license);
- *arr = *drivers;
- }
- //printf("before returning\n");
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement