#define _GNU_SOURCE // Behövs när man använder getline i C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sortArray(int* array, int size);
void swap(int* first, int* second);
int main(int argc, char *argv[])
{
int n = 0;
int i = 0;
char* line = NULL;
size_t length = 90;
size_t characters = 0;
int numbers[21];
char number[4];
int j = 0;
int Kattis = 0;
int KattisKitten = 0;
do {
characters = getline(&line, &length, stdin);
printf("String: %s length: %zu\n", line, characters);
while(*line) {
number[i] = *line;
if(*line == ' ' && (*line+1)) {
numbers[j++] = atoi(number);
i = 0;
} else {
i++;
}
printf("Char: [%c] Pos: [%d]\n", *line, i);
*line++;
}
numbers[j++] = atoi(number);
sortArray(numbers, j);
for(int ik = 0; ik < j;ik++){
printf("#%d: %d\n", ik, numbers[ik]);
if(Kattis <= KattisKitten){
Kattis += numbers[ik];
} else {
KattisKitten += numbers[ik];
}
}
printf("Weight of Kattie backpack: %d\n", Kattis);
printf("Weight of the Kitten's backpack: %d", KattisKitten);
n++;
} while(n <= 20 && line[0] != '0');
for(int i = 0; i<n; i++) {
}
printf("done!");
return 0;
}
/**
* @brief Sorts a int array descending order
* @details Uses selective sort algorithm
* @param array The array of integer to be sorted
* @param size The number of elements in the array
*/
void sortArray(int* array, int size)
{
for(int i = 0; i<size-1; i++) {
int jmin = i;
for(int j=i+1; j<size; j++) {
if(array[j] > array[jmin]) {
jmin = j;
}
}
if(jmin != i) {
swap(&array[i], &array[jmin]);
}
}
}
void swap(int* first, int* second)
{
int temp = *first;
*first = *second;
*second = temp;
}
Comments