diff --git a/.gitignore b/.gitignore index e46264a..170c003 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ tests.out +test_prg \ No newline at end of file diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..83cf61b --- /dev/null +++ b/src/Makefile @@ -0,0 +1,12 @@ +output: main.o isogram.o + gcc main.o isogram.o -o isogram + +main.o: main.c + gcc -c main.c -o main.o + +isogram.o: isogram.c isogram.h + gcc -c isogram.c + +clean: + rm -rf main.o isogram.o isogram + diff --git a/src/isogram.c b/src/isogram.c index c4078c4..b5dca2b 100644 --- a/src/isogram.c +++ b/src/isogram.c @@ -6,9 +6,23 @@ bool is_isogram(const char phrase[]){ - // this is the documentation - if (false) { - printf("hello world\n"); + int i = 0; + int freq[256] = {0}; + while (phrase[i] != '\0'){ + char c = phrase[i]; + freq[c]++; + i++; + } + int max = 0; + for (int i = 0; i < 256 ; i++){ + if (freq[i] != 0) { + // first time? + if (max == 0){ + max = freq[i]; // keep track of the real frequenz + } else if (freq[i] != max){ + return false; + } + } } return true; } diff --git a/src/isogram.h.gch b/src/isogram.h.gch new file mode 100644 index 0000000..83bd06f Binary files /dev/null and b/src/isogram.h.gch differ diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..d66d5af --- /dev/null +++ b/src/main.c @@ -0,0 +1,11 @@ +#include "isogram.h" +#include + +int main(int arg, char *argv[]){ + if (is_isogram(argv[1])){ + printf("The Pharse is an isogram.\n"); + }else { + printf("The pharse is not an isogram.\n"); + } + return 0; +} \ No newline at end of file diff --git a/src/test.c b/src/test.c new file mode 100644 index 0000000..5decb62 --- /dev/null +++ b/src/test.c @@ -0,0 +1,31 @@ +#define UNITY_OUTPUT_COLOR + +#include "isogram.h" +#include +#include + + +bool is_isogram(const char phrase[]){ + + int i = 0; + int freq[256] = {0}; + + while(phrase[i] != '\0'){ + char c = phrase[i]; + freq[c]++; + i++; + } + int max = 0; + for (int i = 0; i<256; i++) { + if (freq[i] != 0) { + //first time + if(max == 0) { + max = freq[i]; + } else if(freq[i] != max) { + return false; + } + } +} + + return true; +} \ No newline at end of file diff --git a/test_prg b/test_prg new file mode 100755 index 0000000..6c289ea Binary files /dev/null and b/test_prg differ