This commit is contained in:
Christoph J. Scherr 2023-10-30 10:31:25 +01:00
commit 5532922411
6 changed files with 50 additions and 15 deletions

2
.gitignore vendored
View File

@ -62,3 +62,5 @@ build
CMakeCache.txt CMakeCache.txt
Makefile Makefile
src/huffman/testfiles src/huffman/testfiles
data
cmake_install.cmake

View File

@ -21,6 +21,7 @@ add_executable( echochar src/echochar.c )
add_executable( euler src/euler.c ) add_executable( euler src/euler.c )
add_executable( factorial src/factorial.c ) add_executable( factorial src/factorial.c )
add_executable( fail src/fail.c ) add_executable( fail src/fail.c )
add_executable( fib src/fib.c )
add_executable( fread src/fread.c ) add_executable( fread src/fread.c )
add_executable( hello-world src/hello-world.c ) add_executable( hello-world src/hello-world.c )
add_executable( options src/options.c ) add_executable( options src/options.c )

View File

@ -20,7 +20,7 @@ double factorial(double i) {
// someone said i need 2 for loops. Totally wrong? // someone said i need 2 for loops. Totally wrong?
for(int j=1;j<given;j++){ for(int j=1;j<given;j++){
p *= j; p *= j;
//printf("[DEBUG]p is %f, j is %d\n", p, j); //printf("[DEBUG]p is %f, j is %d\n", p, j);
} }
@ -35,16 +35,15 @@ int main(int argc, char *argv[]){
int k = 0; int k = 0;
int end = 0; int end = 0;
while(!end){ while(!end){
res += euler(k); res += euler(k);
printf("%f, %f\n", res, lres); printf("%f, %f\n", res, lres);
if(res==lres) if(res==lres)
end = 1; end = 1;
else { else {
lres = res; lres = res;
} }
k++; k++;
} }
printf("calculated eulers number as %f\n", res); printf("calculated eulers number as %f\n", res);
return 0; return 0;
} }

29
src/fib.c Normal file
View File

@ -0,0 +1,29 @@
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
const int START_VALUES[2] = {0, 1};
const int LIMIT = 90;
int main(int argc, char** argv) {
if (argc != 2) {
printf("usage: %s MAX_NUMBER\n", argv[0]);
exit(1);
}
int max = atoi(argv[1]);
if (max > LIMIT) {
printf("C does not provide a datatype large enough to compute fibonacci numbers > %d. (%d)\n", LIMIT, max);
exit(1);
}
uintmax_t* nums = malloc(max * sizeof(uintmax_t));
nums[0] = START_VALUES[0];
nums[1] = START_VALUES[1];
for(int i = 2; i < max+1; i++) {
nums[i] = nums[i-2] + nums[i-1];
}
for(int i = 0; i < max+1; i++) {
printf("%02d. %ju\n", i, nums[i]);
}
}

View File

@ -2,9 +2,9 @@
#include <string.h> #include <string.h>
int my_strlen(const char *s) { int my_strlen(const char *s) {
int len = 0; register int len = 0; // try to use a register instead of a stack variable
while (s[len] != 0) { while (s[len]) {
len++; len++;
} }
return len; return len;
} }

View File

@ -1,9 +1,13 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
int main(void) int main(int argc, char** argv)
{ {
char filename[] = "file.txt"; if (argc != 2) {
printf("usage: %s FILE", argv[0]);
exit(1);
}
char* filename = argv[1];
char buf[2]; char buf[2];
FILE *fp; FILE *fp;