diff --git a/debugging/dividearrays.cpp b/debugging/dividearrays.cpp index a674586d3cf8a98c873b49ccf52db3ba17429ed6..47fc1a61c3bd79f6a5f7bedd5cb6d4f253226fda 100755 --- a/debugging/dividearrays.cpp +++ b/debugging/dividearrays.cpp @@ -1,5 +1,5 @@ #include <random> - +//using namespace std; int main(int argc, char **argv) { std::random_device generator; @@ -8,7 +8,11 @@ int main(int argc, char **argv) for (int i=0; i<1024; i++) { int nom = intdist(generator); - int denom = intdist(generator); + int denom = intdist(generator); + while(denom == 0) + { + denom = intdist(generator); + } res[i] = nom / denom; } return 0; diff --git a/debugging/dividearrays.exe b/debugging/dividearrays.exe new file mode 100755 index 0000000000000000000000000000000000000000..d0cbf7a76abb968b6ac59024208c1543bde45a28 Binary files /dev/null and b/debugging/dividearrays.exe differ diff --git a/debugging/fileutil.cpp b/debugging/fileutil.cpp index f4dcc731bcc869e38495d5b36afd60b2aba20bb9..58147664ded49ab71958f704d51f0379e553e3e7 100755 --- a/debugging/fileutil.cpp +++ b/debugging/fileutil.cpp @@ -1,40 +1,38 @@ -#include <stdio.h> -#include <string.h> -#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#define BUFFSIZE 1024 +using namespace std; + +int main(int argc, char **argv) +{ + int ret = 0; + char *buff; + // Fix num lines, num columns, strdup-1 + FILE *fin = fopen("bible.txt", "r"); + FILE *fout = fopen("copy.txt", "w"); + + buff = (char*)malloc(BUFFSIZE); + if (NULL == buff) + { + fprintf(stderr, "molloc failed\n"); + } + + + while (!feof(fin)) { + ret = fread(buff, 1, BUFFSIZE, fin); + if (ret != BUFFSIZE) + { + fwrite(buff, ret, 1, fout); + } + else + { + fwrite(buff, BUFFSIZE, 1, fout); + } + } + fclose(fin); + fclose(fout); + free(buff); + return 0; +} -namespace std { - -static void getline(char *line, FILE *fin) -{ - int c = '\0', cur = 0; - while (c != '\n' && (c = fgetc(fin)) != EOF) { - line[cur++] = c; - } - line[cur] = '\0'; -} - -} - -using namespace std; - -int main(int argc, char **argv) -{ - int cur = 0; - char *lines[16536]; - char line[80]; - // Fix num lines, num columns, strdup-1 - FILE *fin = fopen("bible.txt", "r"); - while (!feof(fin)) { - getline(line, fin); - lines[cur] = (char*) malloc(strlen(line)); - strcpy(lines[cur], line); - cur++; - } - fclose(fin); - FILE *fout = fopen("copy.txt", "w"); - for (int i=0; i<cur; i++) { - fputs(lines[i], fout); - } - fclose(fout); - return 0; -} diff --git a/debugging/fileutil.exe b/debugging/fileutil.exe new file mode 100755 index 0000000000000000000000000000000000000000..2f52a5c65a0ac58f1570d789b3eff63b891511cb Binary files /dev/null and b/debugging/fileutil.exe differ diff --git a/debugging/fileutil.o b/debugging/fileutil.o new file mode 100755 index 0000000000000000000000000000000000000000..2ba64852c59cd38982910c6a032e1e87c6894099 Binary files /dev/null and b/debugging/fileutil.o differ diff --git a/debugging/gdb.txt b/debugging/gdb.txt new file mode 100755 index 0000000000000000000000000000000000000000..56fad2c7509986e97b893b9e0bb5f100b746a8a6 --- /dev/null +++ b/debugging/gdb.txt @@ -0,0 +1,11 @@ +$2 = 0 +Starting program: C:\Users\54550\Desktop\Courses Resouces\Software design and constraction\Lab\Lab5\lab5-metaprogramming-and-debugging-lab-master\debugging\dividearrays.exe +[New Thread 9152.0x75d0] +[New Thread 9152.0x7538] +[New Thread 9152.0x8378] +[New Thread 9152.0xbe8] + +Thread 1 received signal SIGFPE, Arithmetic exception. +0x000000000040164b in main (argc=1, argv=0xe74510) at dividearrays.cpp:12 +12 res[i] = nom / denom; +$3 = 0 diff --git a/debugging/workitem.exe b/debugging/workitem.exe new file mode 100755 index 0000000000000000000000000000000000000000..6a62a5c463c133dd37aad828a1cec7c4012f1572 Binary files /dev/null and b/debugging/workitem.exe differ diff --git a/debugging/workitems.c b/debugging/workitems.c index 0728aead0cd005a2e4cb6fe084d6e437a441fa79..83fdbbcca3fbf35f1c9a58ddb01448b7fa9ad090 100755 --- a/debugging/workitems.c +++ b/debugging/workitems.c @@ -3,7 +3,9 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> - + +ptread_mutex_t mut; +int flag = 0; typedef struct workitem { void (*fn)(double *); int current; @@ -14,6 +16,15 @@ typedef struct workitem { static void* launchThread(void *in) { + pthread_mutex_lock(&mut); + if(flag == 1){ + pthread_mutex_unlock(&mut); + return NULL; + } + else{ + flag = 1; + } + pthread_mutex_unlock(&mut); int n; workitem *data = (workitem*) in; volatile int started = 0; diff --git a/debugging/workitems.o b/debugging/workitems.o new file mode 100755 index 0000000000000000000000000000000000000000..0705d486b1b8b4911deb1da42fc93212f2ab959d Binary files /dev/null and b/debugging/workitems.o differ