Skip to content
Merged
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
efe02da
Add binary search in C
2Clutch Oct 27, 2024
d4c3e22
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Oct 27, 2024
7251534
Add code
2Clutch Oct 27, 2024
ea9c9ff
Handle errors and potential edge cases
2Clutch Oct 27, 2024
b428138
Clean Up + Refactor + Request Input from Command Line
2Clutch Oct 27, 2024
bca6b20
Follow documentation to the letter
2Clutch Oct 27, 2024
6a1105c
for the win? (e.g. check that array is not empty)
2Clutch Oct 28, 2024
7e838d0
Clean Up & Refactor
2Clutch Oct 28, 2024
9f66116
Merge remote-tracking branch 'refs/remotes/origin/master'
2Clutch Oct 28, 2024
e6816cb
Clean Up & Refactor
2Clutch Oct 28, 2024
7028097
Fix error message
2Clutch Oct 28, 2024
de08b32
Update error message handling
2Clutch Oct 28, 2024
8b8d41b
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Oct 28, 2024
29511a4
Add Convex Hull
2Clutch Oct 28, 2024
ee12a88
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Oct 29, 2024
643eb70
Update test handling
2Clutch Oct 29, 2024
8c310de
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Oct 29, 2024
d0f8213
Clean Up & Refactor
2Clutch Oct 29, 2024
51f982e
for the win?
2Clutch Oct 29, 2024
5dfa5c5
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Oct 29, 2024
fddbd64
Merge remote-tracking branch 'refs/remotes/origin/master'
2Clutch Oct 29, 2024
fe4f138
Fix input validation and output format for convex hull calculation + …
2Clutch Oct 29, 2024
793dc0a
Add command line argument handling for x and y coordinates + Implemen…
2Clutch Oct 29, 2024
aa58d24
brand new implementation
2Clutch Oct 29, 2024
bd69cb4
Refactor error handling to eliminate code repetition for usage messages
2Clutch Oct 29, 2024
54d6812
Use same error message everywhere
2Clutch Oct 29, 2024
db2fd2e
Handle negative numbers
2Clutch Oct 29, 2024
6314765
Fix convex hull logic to correctly output hull points
2Clutch Oct 31, 2024
1afd977
Merge branch 'main' into master
rzuckerm Nov 3, 2024
b67e744
Merge branch 'main' into master
rzuckerm Nov 16, 2024
9f03c2b
Fix Convex Hull in C
Nov 16, 2024
6e64781
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Jan 18, 2025
13b1aab
Add job-sequencing.c
2Clutch Jan 18, 2025
fe0426a
Update solution
2Clutch Jan 18, 2025
17073e3
Merge branch 'TheRenegadeCoder:main' into master
2Clutch Jan 18, 2025
1d17029
Add fraction-math.c
2Clutch Jan 18, 2025
bca9bd6
Update solution
2Clutch Jan 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions archive/c/c/fraction-math.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
int numerator;
int denominator;
} Fraction;

int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}

Fraction simplify(Fraction f) {
int g = gcd(abs(f.numerator), abs(f.denominator));
f.numerator /= g;
f.denominator /= g;
if (f.denominator < 0) {
f.numerator = -f.numerator;
f.denominator = -f.denominator;
}
return f;
}

Fraction parse_fraction(const char* str) {
Fraction f;
sscanf(str, "%d/%d", &f.numerator, &f.denominator);
return simplify(f);
}

Fraction add(Fraction a, Fraction b) {
Fraction result = {
a.numerator * b.denominator + b.numerator * a.denominator,
a.denominator * b.denominator
};
return simplify(result);
}

Fraction subtract(Fraction a, Fraction b) {
Fraction result = {
a.numerator * b.denominator - b.numerator * a.denominator,
a.denominator * b.denominator
};
return simplify(result);
}

Fraction multiply(Fraction a, Fraction b) {
Fraction result = {
a.numerator * b.numerator,
a.denominator * b.denominator
};
return simplify(result);
}

Fraction divide(Fraction a, Fraction b) {
Fraction result = {
a.numerator * b.denominator,
a.denominator * b.numerator
};
return simplify(result);
}

int compare(Fraction a, Fraction b) {
int lhs = a.numerator * b.denominator;
int rhs = b.numerator * a.denominator;
if (lhs < rhs) return -1;
if (lhs > rhs) return 1;
return 0;
}

void print_fraction(Fraction f) {
printf("%d/%d\n", f.numerator, f.denominator);
}

int main(int argc, char* argv[]) {
if (argc != 4) {
printf("Usage: ./fraction-math operand1 operator operand2\n");
return 1;
}

Fraction a = parse_fraction(argv[1]);
Fraction b = parse_fraction(argv[3]);
char* op = argv[2];

Fraction result;
int cmp;

if (strcmp(op, "+") == 0) {
result = add(a, b);
print_fraction(result);
} else if (strcmp(op, "-") == 0) {
result = subtract(a, b);
print_fraction(result);
} else if (strcmp(op, "*") == 0) {
result = multiply(a, b);
print_fraction(result);
} else if (strcmp(op, "/") == 0) {
result = divide(a, b);
print_fraction(result);
} else if (strcmp(op, "==") == 0) {
cmp = compare(a, b);
printf("%d\n", cmp == 0);
} else if (strcmp(op, ">") == 0) {
cmp = compare(a, b);
printf("%d\n", cmp > 0);
} else if (strcmp(op, "<") == 0) {
cmp = compare(a, b);
printf("%d\n", cmp < 0);
} else if (strcmp(op, ">=") == 0) {
cmp = compare(a, b);
printf("%d\n", cmp >= 0);
} else if (strcmp(op, "<=") == 0) {
cmp = compare(a, b);
printf("%d\n", cmp <= 0);
} else if (strcmp(op, "!=") == 0) {
cmp = compare(a, b);
printf("%d\n", cmp != 0);
} else {
printf("Invalid operator\n");
return 1;
}

return 0;
}
Loading