From 2960058ed918c5a7c759dbb6c092790c9df7dfbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Babi=C4=8D?= Date: Sun, 3 May 2020 18:07:52 +0200 Subject: [PATCH] initial commit --- 02_C_Fundamentals/Debug/02_C_Fundamentals | Bin 0 -> 37295 bytes 02_C_Fundamentals/Debug/main.o | Bin 0 -> 59064 bytes 02_C_Fundamentals/Debug/makefile | 43 + 02_C_Fundamentals/Debug/sources.mk | 17 + 02_C_Fundamentals/Debug/subdir.mk | 24 + 02_C_Fundamentals/main.c | 227 +++++ 03_Formatted_IO/Debug/03_Formatted_IO | Bin 0 -> 36349 bytes 03_Formatted_IO/Debug/main.o | Bin 0 -> 55888 bytes 03_Formatted_IO/Debug/makefile | 43 + 03_Formatted_IO/main.c | 171 ++++ 04_Expressions/Debug/04_Expressions | Bin 0 -> 37635 bytes 04_Expressions/Debug/main.o | Bin 0 -> 58272 bytes 04_Expressions/Debug/makefile | 43 + 04_Expressions/main.c | 248 ++++++ .../Debug/05_Selection_Statements | Bin 0 -> 43801 bytes 05_Selection_Statements/Debug/main.o | Bin 0 -> 75016 bytes 05_Selection_Statements/Debug/makefile | 43 + 05_Selection_Statements/main.c | 619 +++++++++++++ 06_Loops/Debug/06_Loops | Bin 0 -> 52239 bytes 06_Loops/Debug/main.o | Bin 0 -> 89728 bytes 06_Loops/Debug/makefile | 43 + 06_Loops/main.c | 523 +++++++++++ 07_Basic_Types/Debug/makefile | 43 + 07_Basic_Types/main.c | 637 +++++++++++++ 08_Arrays/Debug/makefile | 43 + 08_Arrays/main.c | 834 ++++++++++++++++++ .../Debug/Examples/countdown/subdir.mk | 24 + 09_Functions/Debug/Examples/subdir.mk | 24 + 09_Functions/Debug/Exercises/subdir.mk | 24 + 09_Functions/Debug/Program/subdir.mk | 24 + 09_Functions/Debug/Projects/subdir.mk | 24 + 09_Functions/Debug/average/subdir.mk | 24 + 09_Functions/Debug/countdown/subdir.mk | 24 + 09_Functions/Debug/makefile | 44 + 09_Functions/Debug/sources.mk | 17 + 09_Functions/Examples/average.c | 17 + 09_Functions/Examples/countdown.c | 14 + 09_Functions/Examples/prime.c | 26 + 09_Functions/Examples/pun2.c | 11 + 09_Functions/Examples/qsort.c | 51 ++ 09_Functions/Exercises/main.c | 241 +++++ 09_Functions/Exercises/swap.c | 18 + 09_Functions/Projects/pr_01.c | 46 + 09_Functions/Projects/pr_02.c | 37 + 09_Functions/Projects/pr_03.c | 84 ++ 09_Functions/Projects/pr_04.c | 52 ++ 09_Functions/Projects/pr_05.c | 62 ++ 09_Functions/Projects/pr_06.c | 30 + 09_Functions/Projects/pr_07.c | 28 + 09_Functions/Projects/pr_08.c | 79 ++ .../Debug/10_Program_Organization | Bin 0 -> 35160 bytes .../Debug/Examples/subdir.mk | 24 + .../Debug/Projects/pr_07.d | 1 + .../Debug/Projects/pr_07.o | Bin 0 -> 58200 bytes .../Debug/Projects/subdir.mk | 24 + 10_Program_Organization/Debug/makefile | 44 + 10_Program_Organization/Examples/guess.c | 83 ++ 10_Program_Organization/Examples/poker.c | 163 ++++ 10_Program_Organization/Examples/stack.c | 35 + 10_Program_Organization/Projects/pr_01.c | 80 ++ 10_Program_Organization/Projects/pr_02.c | 164 ++++ 10_Program_Organization/Projects/pr_03.c | 191 ++++ 10_Program_Organization/Projects/pr_04.c | 169 ++++ 10_Program_Organization/Projects/pr_05.c | 173 ++++ 10_Program_Organization/Projects/pr_06.c | 96 ++ 10_Program_Organization/Projects/pr_07 | Bin 0 -> 8872 bytes 10_Program_Organization/Projects/pr_07.c | 87 ++ .../org.eclipse.cdt.codan.core.prefs | 65 ++ 11_Pointers/Debug/11_Pointers | Bin 0 -> 29550 bytes 11_Pointers/Debug/Examples/subdir.mk | 24 + 11_Pointers/Debug/Projects/pr_01.d | 1 + 11_Pointers/Debug/Projects/pr_01.o | Bin 0 -> 46800 bytes 11_Pointers/Debug/Projects/subdir.mk | 24 + 11_Pointers/Debug/makefile | 44 + 11_Pointers/Examples/maxmin.c | 41 + 11_Pointers/Exercises/main.c | 106 +++ 11_Pointers/Exercises/main.c~ | 106 +++ 11_Pointers/Projects/pr_01.c | 26 + 11_Pointers/Projects/pr_02.c | 101 +++ 11_Pointers/Projects/pr_03.c | 46 + 11_Pointers/Projects/pr_04.c | 169 ++++ .../Debug/Examples/subdir.mk | 24 + 12_Pointers_And_Arrays/Debug/makefile | 44 + 12_Pointers_And_Arrays/Examples/reverse3.c | 26 + 12_Pointers_And_Arrays/Exercises/main.c | 75 ++ 12_Pointers_And_Arrays/Exercises/ptr_stack.c | 53 ++ 12_Pointers_And_Arrays/Projects/pr_01.c | 26 + 12_Pointers_And_Arrays/Projects/pr_02.c | 33 + 12_Pointers_And_Arrays/Projects/pr_05.c | 41 + 12_Pointers_And_Arrays/Projects/pr_06.c | 59 ++ 12_Pointers_And_Arrays/Projects/pr_07.c | 43 + 13_Strings/Debug/13_Strings | Bin 0 -> 29259 bytes 13_Strings/Debug/Examples/subdir.mk | 24 + 13_Strings/Debug/Projects/pr_18.d | 1 + 13_Strings/Debug/Projects/pr_18.o | Bin 0 -> 46392 bytes 13_Strings/Debug/Projects/subdir.mk | 24 + 13_Strings/Debug/makefile | 44 + 13_Strings/Examples/planet.c | 32 + 13_Strings/Examples/remind.c | 64 ++ 13_Strings/Exercises/main.c | 223 +++++ 13_Strings/Projects/pr_01.c | 32 + 13_Strings/Projects/pr_02.c | 67 ++ 13_Strings/Projects/pr_03.c | 47 + 13_Strings/Projects/pr_04.c | 17 + 13_Strings/Projects/pr_05.c | 19 + 13_Strings/Projects/pr_06.c | 46 + 13_Strings/Projects/pr_07.c | 34 + 13_Strings/Projects/pr_08.c | 47 + 13_Strings/Projects/pr_09.c | 47 + 13_Strings/Projects/pr_10.c | 66 ++ 13_Strings/Projects/pr_11.c | 50 ++ 13_Strings/Projects/pr_12.c | 38 + 13_Strings/Projects/pr_13.c | 49 + 13_Strings/Projects/pr_14.c | 53 ++ 13_Strings/Projects/pr_15.c | 122 +++ 13_Strings/Projects/pr_16.c | 47 + 13_Strings/Projects/pr_17.c | 58 ++ 13_Strings/Projects/pr_18.c | 20 + 14_The_Preprocessor/Debug/14_The_Preprocessor | Bin 0 -> 35156 bytes 14_The_Preprocessor/Debug/main.o | Bin 0 -> 58840 bytes 14_The_Preprocessor/Debug/makefile | 43 + 14_The_Preprocessor/main.c | 123 +++ .../Debug/15_Writing_Large_Programs | Bin 0 -> 42973 bytes .../Debug/Projects/pr_01/subdir.mk | 30 + .../Debug/Projects/pr_02/subdir.mk | 30 + .../Debug/Projects/pr_04/subdir.mk | 27 + .../Debug/Projects/pr_05/rpn.d | 3 + .../Debug/Projects/pr_05/rpn.o | Bin 0 -> 73144 bytes .../Debug/Projects/pr_05/stack.d | 4 + .../Debug/Projects/pr_05/stack.o | Bin 0 -> 69632 bytes .../Debug/Projects/pr_05/subdir.mk | 27 + 15_Writing_Large_Programs/Debug/input.txt | 11 + .../Debug/justify/subdir.mk | 30 + 15_Writing_Large_Programs/Debug/output.txt | 0 15_Writing_Large_Programs/Debug/sources.mk | 17 + .../Examples/justify/input.txt | 10 + .../Examples/justify/justify.c | 34 + .../Examples/justify/line.c | 61 ++ .../Examples/justify/line.h | 29 + .../Examples/justify/word.c | 32 + .../Examples/justify/word.h | 17 + .../Projects/pr_01/line.c | 66 ++ .../Projects/pr_02/justify.c | 32 + .../Projects/pr_02/line.c | 61 ++ .../Projects/pr_02/line.h | 31 + .../Projects/pr_02/word.c | 34 + .../Projects/pr_02/word.h | 19 + .../Projects/pr_03/qsort.c | 33 + .../Projects/pr_03/quicksort.c | 34 + .../Projects/pr_03/quicksort.h | 15 + .../Projects/pr_04/readline.c | 17 + .../Projects/pr_04/readline.h | 13 + .../Projects/pr_04/remind.c | 57 ++ .../Projects/pr_05/rpn.c | 54 ++ .../Projects/pr_05/stack.c | 52 ++ .../Projects/pr_05/stack.h | 24 + .../Debug/16_Structures_Unions_Enumerations | Bin 0 -> 30035 bytes .../Debug/Examples/subdir.mk | 27 + .../Debug/Exercises/subdir.mk | 24 + .../Debug/Projects/pr_01/subdir.mk | 24 + .../Debug/Projects/pr_02/subdir.mk | 30 + .../Debug/Projects/pr_03/subdir.mk | 27 + .../Debug/Projects/pr_04/subdir.mk | 27 + .../Debug/Projects/pr_05/subdir.mk | 24 + .../Debug/Projects/pr_06/sooner_date.d | 1 + .../Debug/Projects/pr_06/sooner_date.o | Bin 0 -> 47992 bytes .../Debug/Projects/pr_06/subdir.mk | 24 + .../Debug/makefile | 44 + .../Debug/sources.mk | 17 + .../Examples/inventory.c | 132 +++ .../Examples/readline.c | 25 + .../Examples/readline.h | 13 + .../Exercises/ex_01_06.c | 120 +++ .../Exercises/ex_07.c | 88 ++ .../Exercises/ex_08.c | 14 + .../Projects/pr_01/main.c | 52 ++ .../Projects/pr_02/inventory.c | 167 ++++ .../Projects/pr_03/inventory.c | 165 ++++ .../Projects/pr_04/inventory.c | 141 +++ .../Projects/pr_05/departures.c | 56 ++ .../Projects/pr_06/sooner_date.c | 61 ++ .../Debug/17_Advanced_Uses_of_Pointers | Bin 0 -> 37840 bytes .../Debug/Projects/pr_06/subdir.mk | 24 + .../Debug/Projects/pr_07/remind2.d | 1 + .../Debug/Projects/pr_07/remind2.o | Bin 0 -> 69456 bytes .../Debug/Projects/pr_07/subdir.mk | 24 + 17_Advanced_Uses_of_Pointers/Debug/makefile | 44 + 17_Advanced_Uses_of_Pointers/Debug/objects.mk | 8 + 17_Advanced_Uses_of_Pointers/Debug/sources.mk | 17 + .../Examples/inventory2/inventory2.c | 149 ++++ .../Examples/remind2.c | 72 ++ .../Examples/tabulate.c | 53 ++ .../Exercises/ex_01_05.c | 88 ++ .../Exercises/ex_08.c/stack.c | 63 ++ .../Exercises/ex_09.c | 34 + .../Exercises/ex_15.c | 34 + .../Exercises/ex_16.c | 30 + .../Exercises/ex_19.c | 90 ++ .../Exercises/linked_exercises.c | 176 ++++ .../Projects/pr_01/inventory.c | 147 +++ .../Projects/pr_02/inventory.c | 169 ++++ .../Projects/pr_03/inventory2.c | 173 ++++ .../Projects/pr_04/NOTE | 8 + .../Projects/pr_04/line.c | 62 ++ .../Projects/pr_05/NOTE | 1 + .../Projects/pr_06/words_sort.c | 90 ++ .../Projects/pr_07/remind2.c | 89 ++ 18_Declarations/Debug/18_Declarations | Bin 0 -> 17136 bytes 18_Declarations/Debug/Exercises/ex_01_15.d | 1 + 18_Declarations/Debug/Exercises/ex_01_15.o | Bin 0 -> 16448 bytes 18_Declarations/Debug/Exercises/subdir.mk | 24 + 18_Declarations/Debug/sources.mk | 17 + 18_Declarations/Exercises/ex_01_15.c | 44 + .../Debug/20_Bitwise_Operators | Bin 0 -> 29121 bytes 20_Bitwise_Operators/Debug/Examples/subdir.mk | 24 + 20_Bitwise_Operators/Debug/Exercises/ex_01.d | 1 + 20_Bitwise_Operators/Debug/Exercises/ex_01.o | Bin 0 -> 45856 bytes .../Debug/Exercises/subdir.mk | 24 + 20_Bitwise_Operators/Debug/makefile | 44 + 20_Bitwise_Operators/Examples/msg | 3 + 20_Bitwise_Operators/Examples/newmsg | 3 + 20_Bitwise_Operators/Examples/viewmemory.c | 52 ++ 20_Bitwise_Operators/Examples/xor.c | 26 + 20_Bitwise_Operators/Exercises/ex_01.c | 28 + 224 files changed, 12718 insertions(+) create mode 100644 02_C_Fundamentals/Debug/02_C_Fundamentals create mode 100644 02_C_Fundamentals/Debug/main.o create mode 100644 02_C_Fundamentals/Debug/makefile create mode 100644 02_C_Fundamentals/Debug/sources.mk create mode 100644 02_C_Fundamentals/Debug/subdir.mk create mode 100644 02_C_Fundamentals/main.c create mode 100644 03_Formatted_IO/Debug/03_Formatted_IO create mode 100644 03_Formatted_IO/Debug/main.o create mode 100644 03_Formatted_IO/Debug/makefile create mode 100644 03_Formatted_IO/main.c create mode 100644 04_Expressions/Debug/04_Expressions create mode 100644 04_Expressions/Debug/main.o create mode 100644 04_Expressions/Debug/makefile create mode 100644 04_Expressions/main.c create mode 100644 05_Selection_Statements/Debug/05_Selection_Statements create mode 100644 05_Selection_Statements/Debug/main.o create mode 100644 05_Selection_Statements/Debug/makefile create mode 100644 05_Selection_Statements/main.c create mode 100644 06_Loops/Debug/06_Loops create mode 100644 06_Loops/Debug/main.o create mode 100644 06_Loops/Debug/makefile create mode 100644 06_Loops/main.c create mode 100644 07_Basic_Types/Debug/makefile create mode 100644 07_Basic_Types/main.c create mode 100644 08_Arrays/Debug/makefile create mode 100644 08_Arrays/main.c create mode 100644 09_Functions/Debug/Examples/countdown/subdir.mk create mode 100644 09_Functions/Debug/Examples/subdir.mk create mode 100644 09_Functions/Debug/Exercises/subdir.mk create mode 100644 09_Functions/Debug/Program/subdir.mk create mode 100644 09_Functions/Debug/Projects/subdir.mk create mode 100644 09_Functions/Debug/average/subdir.mk create mode 100644 09_Functions/Debug/countdown/subdir.mk create mode 100644 09_Functions/Debug/makefile create mode 100644 09_Functions/Debug/sources.mk create mode 100644 09_Functions/Examples/average.c create mode 100644 09_Functions/Examples/countdown.c create mode 100644 09_Functions/Examples/prime.c create mode 100644 09_Functions/Examples/pun2.c create mode 100644 09_Functions/Examples/qsort.c create mode 100644 09_Functions/Exercises/main.c create mode 100644 09_Functions/Exercises/swap.c create mode 100644 09_Functions/Projects/pr_01.c create mode 100644 09_Functions/Projects/pr_02.c create mode 100644 09_Functions/Projects/pr_03.c create mode 100644 09_Functions/Projects/pr_04.c create mode 100644 09_Functions/Projects/pr_05.c create mode 100644 09_Functions/Projects/pr_06.c create mode 100644 09_Functions/Projects/pr_07.c create mode 100644 09_Functions/Projects/pr_08.c create mode 100644 10_Program_Organization/Debug/10_Program_Organization create mode 100644 10_Program_Organization/Debug/Examples/subdir.mk create mode 100644 10_Program_Organization/Debug/Projects/pr_07.d create mode 100644 10_Program_Organization/Debug/Projects/pr_07.o create mode 100644 10_Program_Organization/Debug/Projects/subdir.mk create mode 100644 10_Program_Organization/Debug/makefile create mode 100644 10_Program_Organization/Examples/guess.c create mode 100644 10_Program_Organization/Examples/poker.c create mode 100644 10_Program_Organization/Examples/stack.c create mode 100644 10_Program_Organization/Projects/pr_01.c create mode 100644 10_Program_Organization/Projects/pr_02.c create mode 100644 10_Program_Organization/Projects/pr_03.c create mode 100644 10_Program_Organization/Projects/pr_04.c create mode 100644 10_Program_Organization/Projects/pr_05.c create mode 100644 10_Program_Organization/Projects/pr_06.c create mode 100644 10_Program_Organization/Projects/pr_07 create mode 100644 10_Program_Organization/Projects/pr_07.c create mode 100644 11_Pointers/.settings/org.eclipse.cdt.codan.core.prefs create mode 100644 11_Pointers/Debug/11_Pointers create mode 100644 11_Pointers/Debug/Examples/subdir.mk create mode 100644 11_Pointers/Debug/Projects/pr_01.d create mode 100644 11_Pointers/Debug/Projects/pr_01.o create mode 100644 11_Pointers/Debug/Projects/subdir.mk create mode 100644 11_Pointers/Debug/makefile create mode 100644 11_Pointers/Examples/maxmin.c create mode 100644 11_Pointers/Exercises/main.c create mode 100644 11_Pointers/Exercises/main.c~ create mode 100644 11_Pointers/Projects/pr_01.c create mode 100644 11_Pointers/Projects/pr_02.c create mode 100644 11_Pointers/Projects/pr_03.c create mode 100644 11_Pointers/Projects/pr_04.c create mode 100644 12_Pointers_And_Arrays/Debug/Examples/subdir.mk create mode 100644 12_Pointers_And_Arrays/Debug/makefile create mode 100644 12_Pointers_And_Arrays/Examples/reverse3.c create mode 100644 12_Pointers_And_Arrays/Exercises/main.c create mode 100644 12_Pointers_And_Arrays/Exercises/ptr_stack.c create mode 100644 12_Pointers_And_Arrays/Projects/pr_01.c create mode 100644 12_Pointers_And_Arrays/Projects/pr_02.c create mode 100644 12_Pointers_And_Arrays/Projects/pr_05.c create mode 100644 12_Pointers_And_Arrays/Projects/pr_06.c create mode 100644 12_Pointers_And_Arrays/Projects/pr_07.c create mode 100644 13_Strings/Debug/13_Strings create mode 100644 13_Strings/Debug/Examples/subdir.mk create mode 100644 13_Strings/Debug/Projects/pr_18.d create mode 100644 13_Strings/Debug/Projects/pr_18.o create mode 100644 13_Strings/Debug/Projects/subdir.mk create mode 100644 13_Strings/Debug/makefile create mode 100644 13_Strings/Examples/planet.c create mode 100644 13_Strings/Examples/remind.c create mode 100644 13_Strings/Exercises/main.c create mode 100644 13_Strings/Projects/pr_01.c create mode 100644 13_Strings/Projects/pr_02.c create mode 100644 13_Strings/Projects/pr_03.c create mode 100644 13_Strings/Projects/pr_04.c create mode 100644 13_Strings/Projects/pr_05.c create mode 100644 13_Strings/Projects/pr_06.c create mode 100644 13_Strings/Projects/pr_07.c create mode 100644 13_Strings/Projects/pr_08.c create mode 100644 13_Strings/Projects/pr_09.c create mode 100644 13_Strings/Projects/pr_10.c create mode 100644 13_Strings/Projects/pr_11.c create mode 100644 13_Strings/Projects/pr_12.c create mode 100644 13_Strings/Projects/pr_13.c create mode 100644 13_Strings/Projects/pr_14.c create mode 100644 13_Strings/Projects/pr_15.c create mode 100644 13_Strings/Projects/pr_16.c create mode 100644 13_Strings/Projects/pr_17.c create mode 100644 13_Strings/Projects/pr_18.c create mode 100644 14_The_Preprocessor/Debug/14_The_Preprocessor create mode 100644 14_The_Preprocessor/Debug/main.o create mode 100644 14_The_Preprocessor/Debug/makefile create mode 100644 14_The_Preprocessor/main.c create mode 100644 15_Writing_Large_Programs/Debug/15_Writing_Large_Programs create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_01/subdir.mk create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_02/subdir.mk create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_04/subdir.mk create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.d create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.o create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_05/stack.d create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_05/stack.o create mode 100644 15_Writing_Large_Programs/Debug/Projects/pr_05/subdir.mk create mode 100644 15_Writing_Large_Programs/Debug/input.txt create mode 100644 15_Writing_Large_Programs/Debug/justify/subdir.mk create mode 100644 15_Writing_Large_Programs/Debug/output.txt create mode 100644 15_Writing_Large_Programs/Debug/sources.mk create mode 100644 15_Writing_Large_Programs/Examples/justify/input.txt create mode 100644 15_Writing_Large_Programs/Examples/justify/justify.c create mode 100644 15_Writing_Large_Programs/Examples/justify/line.c create mode 100644 15_Writing_Large_Programs/Examples/justify/line.h create mode 100644 15_Writing_Large_Programs/Examples/justify/word.c create mode 100644 15_Writing_Large_Programs/Examples/justify/word.h create mode 100644 15_Writing_Large_Programs/Projects/pr_01/line.c create mode 100644 15_Writing_Large_Programs/Projects/pr_02/justify.c create mode 100644 15_Writing_Large_Programs/Projects/pr_02/line.c create mode 100644 15_Writing_Large_Programs/Projects/pr_02/line.h create mode 100644 15_Writing_Large_Programs/Projects/pr_02/word.c create mode 100644 15_Writing_Large_Programs/Projects/pr_02/word.h create mode 100644 15_Writing_Large_Programs/Projects/pr_03/qsort.c create mode 100644 15_Writing_Large_Programs/Projects/pr_03/quicksort.c create mode 100644 15_Writing_Large_Programs/Projects/pr_03/quicksort.h create mode 100644 15_Writing_Large_Programs/Projects/pr_04/readline.c create mode 100644 15_Writing_Large_Programs/Projects/pr_04/readline.h create mode 100644 15_Writing_Large_Programs/Projects/pr_04/remind.c create mode 100644 15_Writing_Large_Programs/Projects/pr_05/rpn.c create mode 100644 15_Writing_Large_Programs/Projects/pr_05/stack.c create mode 100644 15_Writing_Large_Programs/Projects/pr_05/stack.h create mode 100644 16_Structures_Unions_Enumerations/Debug/16_Structures_Unions_Enumerations create mode 100644 16_Structures_Unions_Enumerations/Debug/Examples/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Exercises/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_01/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_02/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_03/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_04/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_05/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.d create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.o create mode 100644 16_Structures_Unions_Enumerations/Debug/Projects/pr_06/subdir.mk create mode 100644 16_Structures_Unions_Enumerations/Debug/makefile create mode 100644 16_Structures_Unions_Enumerations/Debug/sources.mk create mode 100644 16_Structures_Unions_Enumerations/Examples/inventory.c create mode 100644 16_Structures_Unions_Enumerations/Examples/readline.c create mode 100644 16_Structures_Unions_Enumerations/Examples/readline.h create mode 100644 16_Structures_Unions_Enumerations/Exercises/ex_01_06.c create mode 100644 16_Structures_Unions_Enumerations/Exercises/ex_07.c create mode 100644 16_Structures_Unions_Enumerations/Exercises/ex_08.c create mode 100644 16_Structures_Unions_Enumerations/Projects/pr_01/main.c create mode 100644 16_Structures_Unions_Enumerations/Projects/pr_02/inventory.c create mode 100644 16_Structures_Unions_Enumerations/Projects/pr_03/inventory.c create mode 100644 16_Structures_Unions_Enumerations/Projects/pr_04/inventory.c create mode 100644 16_Structures_Unions_Enumerations/Projects/pr_05/departures.c create mode 100644 16_Structures_Unions_Enumerations/Projects/pr_06/sooner_date.c create mode 100644 17_Advanced_Uses_of_Pointers/Debug/17_Advanced_Uses_of_Pointers create mode 100644 17_Advanced_Uses_of_Pointers/Debug/Projects/pr_06/subdir.mk create mode 100644 17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.d create mode 100644 17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.o create mode 100644 17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/subdir.mk create mode 100644 17_Advanced_Uses_of_Pointers/Debug/makefile create mode 100644 17_Advanced_Uses_of_Pointers/Debug/objects.mk create mode 100644 17_Advanced_Uses_of_Pointers/Debug/sources.mk create mode 100644 17_Advanced_Uses_of_Pointers/Examples/inventory2/inventory2.c create mode 100644 17_Advanced_Uses_of_Pointers/Examples/remind2.c create mode 100644 17_Advanced_Uses_of_Pointers/Examples/tabulate.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/ex_01_05.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/ex_08.c/stack.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/ex_09.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/ex_15.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/ex_16.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/ex_19.c create mode 100644 17_Advanced_Uses_of_Pointers/Exercises/linked_exercises.c create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_01/inventory.c create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_02/inventory.c create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_03/inventory2.c create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_04/NOTE create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_04/line.c create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_05/NOTE create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_06/words_sort.c create mode 100644 17_Advanced_Uses_of_Pointers/Projects/pr_07/remind2.c create mode 100644 18_Declarations/Debug/18_Declarations create mode 100644 18_Declarations/Debug/Exercises/ex_01_15.d create mode 100644 18_Declarations/Debug/Exercises/ex_01_15.o create mode 100644 18_Declarations/Debug/Exercises/subdir.mk create mode 100644 18_Declarations/Debug/sources.mk create mode 100644 18_Declarations/Exercises/ex_01_15.c create mode 100644 20_Bitwise_Operators/Debug/20_Bitwise_Operators create mode 100644 20_Bitwise_Operators/Debug/Examples/subdir.mk create mode 100644 20_Bitwise_Operators/Debug/Exercises/ex_01.d create mode 100644 20_Bitwise_Operators/Debug/Exercises/ex_01.o create mode 100644 20_Bitwise_Operators/Debug/Exercises/subdir.mk create mode 100644 20_Bitwise_Operators/Debug/makefile create mode 100644 20_Bitwise_Operators/Examples/msg create mode 100644 20_Bitwise_Operators/Examples/newmsg create mode 100644 20_Bitwise_Operators/Examples/viewmemory.c create mode 100644 20_Bitwise_Operators/Examples/xor.c create mode 100644 20_Bitwise_Operators/Exercises/ex_01.c diff --git a/02_C_Fundamentals/Debug/02_C_Fundamentals b/02_C_Fundamentals/Debug/02_C_Fundamentals new file mode 100644 index 0000000000000000000000000000000000000000..07a89addeec5592a1161d118088b1bd1af2d853a GIT binary patch literal 37295 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 literal 0 HcmV?d00001 diff --git a/02_C_Fundamentals/Debug/makefile b/02_C_Fundamentals/Debug/makefile new file mode 100644 index 0000000..b131d89 --- /dev/null +++ b/02_C_Fundamentals/Debug/makefile @@ -0,0 +1,43 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 02_C_Fundamentals + +# Tool invocations +02_C_Fundamentals: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "02_C_Fundamentals" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 02_C_Fundamentals + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/02_C_Fundamentals/Debug/sources.mk b/02_C_Fundamentals/Debug/sources.mk new file mode 100644 index 0000000..df1db10 --- /dev/null +++ b/02_C_Fundamentals/Debug/sources.mk @@ -0,0 +1,17 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ + diff --git a/02_C_Fundamentals/Debug/subdir.mk b/02_C_Fundamentals/Debug/subdir.mk new file mode 100644 index 0000000..726e710 --- /dev/null +++ b/02_C_Fundamentals/Debug/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../main.c + +OBJS += \ +./main.o + +C_DEPS += \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/02_C_Fundamentals/main.c b/02_C_Fundamentals/main.c new file mode 100644 index 0000000..cea17dc --- /dev/null +++ b/02_C_Fundamentals/main.c @@ -0,0 +1,227 @@ +#include + +#define INCHES_PER_POUND 166 + +#define FREEZING_PT 32.0f +#define SCALE_FACTOR (5.0f / 9.0f) + +#define PI 3.141592f + +void dweight(void); +void dweight2(void); + +void celsius(void); + +void ex_01(void); +void ex_02(void); +void ex_03(void); +void ex_04(void); +void ex_05(void); +void ex_06(void); +void ex_07(void); +void pr_01(void); +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); +void pr_07(void); +void pr_08(void); + + +int main(void) { +// dweight(); +// dweight2(); + +// celsius(); + +// ex_04(); + + pr_08(); + + return 0; +} + +/* Calculates the dimensional weight of the box, + * constant size */ +void dweight(void) { + int height, lenght, width, volume, weight; + + height = 8; + lenght = 12; + width = 10; + volume = height * lenght * width; + weight = (volume + INCHES_PER_POUND - 1) / INCHES_PER_POUND; + + printf("Dimensions: %dx%dx%d\n", lenght, width, height); + printf("Volume (cubic inches): %d\n", volume); + printf("Dimensional weight (pounds): %d\n", weight); +} + +/* Calculates the dimensional weight of the box, + * user defined size */ +void dweight2(void) { + int height, lenght, width, volume, weight; + + printf("enter height: "); + scanf("%d", &height); + printf("enter lenght: "); + scanf("%d", &lenght); + printf("enter widht: "); + scanf("%d", &width); + volume = height * lenght * width; + weight = (volume + INCHES_PER_POUND - 1) / INCHES_PER_POUND; + + printf("Dimensions: %dx%dx%d\n", lenght, width, height); + printf("Volume (cubic inches): %d\n", volume); + printf("Dimensional weight (pounds): %d\n", weight); +} + +/* Converts tempereture from Fahrenheit to Celsius */ +void celsius(void) { + float fahrenheit, celsius; + + printf("Enter Fahrenheit temperature: "); + scanf("%f", &fahrenheit); + + celsius = (fahrenheit - FREEZING_PT) * SCALE_FACTOR; + + printf("Celsius equivalent: %.1f\n", celsius); +} + +/* EXERCISES */ +void ex_01(void) { + printf("Hello world\n"); +} + +void ex_02(void) { + printf("Parkinson's Law:\nWork expands so as to "); + printf("fill the time\n"); + printf("available for its completion.\n"); +} + +void ex_03(void) { + int height = 8, lenght = 12, width = 10, volume; + + volume = height * lenght * width; + + printf("Dimensions: %dx%dx%d\n", lenght, width, height); + printf("Volume (cubic inches): %d\n", volume); + printf("Dimensional weight (pounds): %d\n", + (volume + INCHES_PER_POUND - 1) / INCHES_PER_POUND); +} + +void ex_04(void) { + int a, b, c; + float d, e, f; + + printf("%d %d %d %f %f %f", a, b, c, d, e, f); +} + +void ex_05(void) { + int _100_bot, bott_by_hun; +} + +void ex_06(void) { + // Reserved +} + +void ex_07(void) { + // for +} + +/* PROJECTS */ +void pr_01(void) { + printf("%8c\n", '*'); + printf("%7c\n", '*'); + printf("%6c\n", '*'); + printf("%1c%4c\n", '*', '*'); + printf("%2c%2c\n", '*', '*'); + printf("%3c\n", '*'); +} + +void pr_02(void) { + int r = 10; + + printf("Volume of sphere of radius %dm is %fm^3.", r, + (4.0f / 3.0f) * PI * (r * r * r)); +} + +void pr_03(void) { + int r = 0; + printf("Please enter radius of the sphere (m): "); + scanf("%d", &r); + printf("Volume of sphere of radius %dm is %fm^3.", r, + (4.0f / 3.0f) * PI * (r * r * r)); +} + +void pr_04(void) { + float amount; + + printf("Enter an amount: "); + scanf("%f", &amount); + printf("With tax added: $%.2f", amount * 1.05f); +} + +void pr_05(void) { + float x; + + printf("Enter x: "); + scanf("%f", &x); + printf("3x^5 + 2x^4 - 5x^3 -x^2 - 6 = %f", + + 3 * (x * x * x * x * x) + + 2 * (x * x * x * x) + - 5 * (x * x * x) + - 1 * (x * x) + + 7 * (x) + - 6 * (1)); +} + +void pr_06(void) { + float x; + + printf("Enter x: "); + scanf("%f", &x); + printf("3x^5 + 2x^4 - 5x^3 -x^2 - 6 = %f", + ((((3 * x + 2) * x - 5) * x - 1) * x + 7) * x - 6); +} + +void pr_07(void) { + int amount, b20, b10, b5; + + printf("Enter a dollar amount: "); + scanf("%d", &amount); + + b20 = amount / 20; + amount -= b20 * 20; + b10 = amount / 10; + amount -= b10 * 10; + b5 = amount / 5; + amount -= b5 * 5; + + printf("\n$20 bills: %d\n$10 bills: %d\n $5 bills: %d\n $1 bills: %d", + b20, b10, b5, amount); +} + +void pr_08(void) { + float balance, interest, payment; + + printf("Enter amount of loan: "); + scanf("%f", &balance); + printf("Enter amount of interest: "); + scanf("%f", &interest); + printf("Enter amount of payment: "); + scanf("%f", &payment); + + float monthly = interest / 100 / 12; + + balance -= payment; + balance += (balance * monthly); + printf("\nBalance remaining after fist payment: $%.2f", balance); + balance -= payment; + balance += (balance * monthly); + printf("\nBalance remaining after second payment: $%.2f", balance); + balance -= payment; + balance += (balance * monthly); + printf("\nBalance remaining after third payment: $%.2f", balance); +} diff --git a/03_Formatted_IO/Debug/03_Formatted_IO b/03_Formatted_IO/Debug/03_Formatted_IO new file mode 100644 index 0000000000000000000000000000000000000000..fd94acb74e263bc8471bf98cdcd4e553ea3a7009 GIT binary patch literal 36349 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⁡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 literal 0 HcmV?d00001 diff --git a/03_Formatted_IO/Debug/makefile b/03_Formatted_IO/Debug/makefile new file mode 100644 index 0000000..0c07459 --- /dev/null +++ b/03_Formatted_IO/Debug/makefile @@ -0,0 +1,43 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 03_Formatted_IO + +# Tool invocations +03_Formatted_IO: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "03_Formatted_IO" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 03_Formatted_IO + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/03_Formatted_IO/main.c b/03_Formatted_IO/main.c new file mode 100644 index 0000000..d92b245 --- /dev/null +++ b/03_Formatted_IO/main.c @@ -0,0 +1,171 @@ +/* CHAPTER 3 */ + +#include + +void tprintf(void); + +void ex_01(void); +void ex_02(void); +void ex_04(void); +void ex_05(void); + +void pr_01(void); +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); + +int main(void) { +// tprintf(); +// addfrac(); + +// ex_06(); + + pr_06(); + + return 0; +} + +/* Ilustrates the use of printf */ +void tprintf(void) { + int i; + float x; + + i = 40; + x = 839.21f; + + printf("|%d|%5d|%-5d|%5.3d|\n", i, i, i, i); + printf("|%10.3f|%10.3e|%-10g|\n", x, x, x); +} + +/* Adds two fractions */ +void addfrac(void) { + int num1, denom1, num2, denom2, result_num, result_denom; + + printf("Enter first fraction: "); + scanf("%d / %d", &num1, &denom1); + + printf("Enter second fraction: "); + scanf("%d / %d", &num2, &denom2); + + result_num = num1 * denom2 + num2 * denom1; + result_denom = denom1 * denom2; + + printf("The sum is %d/%d\n", result_num, result_denom); + +} + +/* EXERCISES */ +void ex_01(void) { + printf("%6d,%4d\n", 86, 1040); + printf("%12.5e\n", 30.253); + printf("%.4f\n", 83.162); + printf("%-6.2g\n", .0000009979); +} + +void ex_02(void) { + +// a) %-8.1e +// b) %10.6e +// c) %-8.3f +// d) %6.0f +} + +void ex_04(void) { +// Enter 10.3 5 6 + int i, j; + float x; + + scanf("%d%f%d", &i, &x, &j); + printf("i = %d, x = %.1f, j = %d", i, x, j); +} + +void ex_05(void) { + // Enter 12.3 45.6 789 + int i; + float x, y; + + scanf("%f%d%f", &x, &i, &y); + printf("x = %f, i = %d, y = %f", x, i, y); +} + +/* PROJECTS */ +void pr_01(void) { + int dd, mm, yyyy; + + printf("Enter a date (dd/mm/yyyy): "); + scanf("%d/%d/%d", &dd, &mm, &yyyy); + printf("You entered date: %.4d%.2d%.2d", yyyy, mm, dd); +} + +void pr_02(void) { + int number, dd, mm, yyyy; + float price; + + printf("Enter item number: "); + scanf("%d", &number); + printf("Enter item price: "); + scanf("%f", &price); + printf("Enter purchase date (dd, mm, yyyy): "); + scanf("%d/%d/%d", &dd, &mm, &yyyy); + + printf("\nItem\t\tUnit\t\tPurchase\n"); + printf(" \t\tPrice\t\tDate\n"); + printf("%d\t\t$ %.2f\t%.2d/%.2d/%.4d\n", + number, price, dd, mm, yyyy); +} + +void pr_03(void) { + int prefix, groupID, publisher, number, check; + + printf("Enter ISBN: "); + scanf("%d-%d-%d-%d-%d", &prefix, &groupID, + &publisher, &number, &check); + + printf("GS1 prefix: %d\n", prefix); + printf("Group identifier: %d\n", groupID); + printf("Publisher code: %d\n", publisher); + printf("Item number: %d\n", number); + printf("Check digit: %d\n", check); +} + +void pr_04(void) { + int a, b, c; + + printf("Enter phone number [(xxx) xxx-xxxx]: "); + scanf("(%d) %d-%d", &a, &b, &c); + printf("You entered: %d.%d.%d", a, b, c); +} + +void pr_05(void) { + int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16; + + // Enter 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 for Magic Square + printf("Enter numbers from 1 to 16 in any order:\n"); + scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", + &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8, &i9, &i10, &i11, &i12, &i13, &i14, &i15, &i16); + printf("\n"); + printf("%6d %2d %2d %2d |%2d\n", i1, i2, i3, i4, (i1 + i2 + i3 + i4)); + printf("%6d %2d %2d %2d |%2d\n", i5, i6, i7, i8, (i5 + i6 + i7 + i8)); + printf("%6d %2d %2d %2d |%2d\n", i9, i10, i11, i12, (i9 + i10 + i11 + i12)); + printf("%6d %2d %2d %2d |%2d\n", i13, i14, i15, i16, (i13 + i14 + i15 + i16)); + printf("--------------- | --\n"); + printf("%2d |%2d %2d %2d %2d |%2d\n", (i4 + i7 + i10 + i13), (i1 + i5 + i9 + i13), (i2 + i6 + i10 + i14), + (i3 + i7 + i11 + i15), (i4 + i8 + i12 + i16), (i1 + i6 + i11 + i16)); + + printf("\n"); +} + +void pr_06(void) { + int num1, denom1, num2, denom2, result_num, result_denom; + + printf("Enter two fractions separated by a plus sign: "); + scanf("%d / %d + %d / %d", &num1, &denom1, &num2, &denom2); + + + result_num = num1 * denom2 + num2 * denom1; + result_denom = denom1 * denom2; + + printf("The sum is %d/%d\n", result_num, result_denom); +} diff --git a/04_Expressions/Debug/04_Expressions b/04_Expressions/Debug/04_Expressions new file mode 100644 index 0000000000000000000000000000000000000000..d87a3c7b681b0809d1687841d32f14ac74265aa2 GIT binary patch literal 37635 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 literal 0 HcmV?d00001 diff --git a/04_Expressions/Debug/main.o b/04_Expressions/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..805d46b734ce1c29f74be763e4f50daac9e087d2 GIT binary patch literal 58272 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 + +void upc(void); + +void ex_01(void); +void ex_02(void); +void ex_09(void); +void ex_10(void); +void ex_11(void); +void ex_12(void); +void ex_13(void); +void ex_14(void); +void ex_15(void); + +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); + +int main(void) { +// upc(); + +// ex_12(); + + pr_06(); + + return 0; +} + +/* Computes a universal product code check digit */ +void upc(void) { + int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, + first_sum, second_sum, total; + + printf("Enter the first (single) digit: "); + scanf("%1d", &d); + printf("Enter first group of five digits: "); + scanf("%1d%1d%1d%1d%1d", &i1, &i2, &i3, &i4, &i5); + printf("Enter second group of five digits: "); + scanf("%1d%1d%1d%1d%1d", &j1, &j2, &j3, &j4, &j5); + + first_sum = d + i2 + i4 + j1 + j3 + j5; + second_sum = i1 + i3 + i5 + j2 + j4; + total = 3 * first_sum + second_sum; + + printf("Check digit: %d\n", 9 - ((total - 1) % 10)); +} + +/* EXERCISES */ +void ex_01(void) { + int i, j, k; + + i = 5; j = 3; + printf("%d %d\n", i / j, i % j); + i = 2; j = 3; + printf("%d\n", (i + 10) % j); + i = 7; j = 8; k = 9; + printf("%d\n", (i + 10) % k / j); + i = 1; j = 2; k = 3; + printf("%d\n", (i + 5) % (j + 2) / k); +} + +void ex_02(void) { + int i = 9, j = 1; + + printf("%d\n", (-i) / j); + printf("%d\n", -(i / j)); +} + +void ex_09(void) { + int i, j, k; + + i = 7; j = 8; + i *= j + 1; + printf("%d %d\n", i, j); + + i = j = k = 1; + i += j += k; + printf("%d %d %d\n", i, j, k); + + i = 1; j = 2; k = 3; + i -= j -= k; + printf("%d %d %d\n", i, j, k); + + i = 2; j = 1; k = 0; + i *= j *= k; + printf("%d %d %d\n", i, j, k); + +} + +void ex_10(void) { + int i, j; + + i = 6; + j = i += i; + printf("%d %d\n", i, j); + + i = 5; + j = (i -= 2) + 1; + printf("%d %d\n", i, j); + + i = 7; + j = 6 + (i = 2.5); + printf("%d %d\n", i, j); + + i = 2; j = 8; + j = (i = 6) + (j = 3); + printf("%d %d\n", i, j); +} + +void ex_11(void) { + int i, j, k; + + i = 1; + printf("%d ", i++ - 1); + printf("%d\n", i); + + i = 10; j = 5; + printf("%d ", i++ - ++j); + printf("%d %d\n", i, j); + + i = 7; j = 8; + printf("%d ", i++ - --j); + printf("%d %d\n", i, j); + + i = 3; j = 4; k = 5; + printf("%d ", i++ - j++ + --k); + printf("%d %d %d\n", i, j, k); + +} + +void ex_12(void) { + int i, j; + + i = 5; + j = ++i * 3 - 2; + printf("%d %d\n", i, j); + + i = 5; + j = 3 - 2 * i++; + printf("%d %d\n", i, j); + + i = 7; + j = 3 * i-- + 2; + printf("%d %d\n", i, j); + + i = 7; + j = 3 + --i * 2; + printf("%d %d\n", i, j); +} + +void ex_13(void) { + // ++i == (i += 1) +} + +void ex_14(void) { +// (a * b) - (c * d) + e +// ((a / b) % c) / d +// (((- a) - b) + c) - (+d) +// ((a * (- b)) / c) - d +} + +void ex_15(void) { +//= 1, 2 +//a 3, 2 +//b 0, 2 +//c 1, 2 +//d 1, 3 +} + +/* PROJECTS */ +void pr_01(void) { + int n; + + printf("Enter two-digit number: "); + scanf("%d", &n); + + printf("The reversal is: %d%d\n", + (n % 10), (n / 10)); +} + +// Reverse +void pr_02(void) { + int n; + + printf("Enter three-digit n: "); + scanf("%d", &n); + + printf("The reversal is: %d%d%d\n", + (n % 10), (n / 10) % 10, n / 100); +} + +// Reverse +void pr_03(void) { + int hundreds, tens, ones; + + printf("Enter three-digit number: "); + scanf("%1d%1d%1d", &hundreds, &tens, &ones); + printf("The reversal is: %d%d%d\n", ones, tens, hundreds); +} + +// Octal +void pr_04(void) { + int n; + + printf("Enter a number between 0 and 32767: "); + scanf("%d", &n); + printf("In octal, your number is: %d%d%d%d%d", + (n / 4096 % 8), (n / 512 % 8), + (n / 64 % 8), (n / 8 % 8), (n % 8)); + +} + +// UPC rewritten +void pr_05(void) { + int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, + first_sum, second_sum, total; + + printf("Enter the first 11 digits of UPC: "); + scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d", + &d, &i1, &i2, &i3, &i4, &i5, &j1, &j2, &j3, &j4, &j5); + + first_sum = d + i2 + i4 + j1 + j3 + j5; + second_sum = i1 + i3 + i5 + j2 + j4; + total = 3 * first_sum + second_sum; + + printf("Check digit: %d\n", 9 - ((total - 1) % 10)); +} + +// EAN +void pr_06(void) { + int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, + first_sum, second_sum, total; + + printf("Enter the first 12 digits of EAN: "); + scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d", + &i1, &i2, &i3, &i4, &i5, &i6, + &i7, &i8, &i9, &i10, &i11, &i12); + + first_sum = i2 + i4 + i6 + i8 + i10 + i12; + second_sum = i1 + i3 + i5 + i7 + i9 + i11; + total = 3 * first_sum + second_sum; + + printf("Check digit: %d\n", 9 - ((total - 1) % 10)); +} diff --git a/05_Selection_Statements/Debug/05_Selection_Statements b/05_Selection_Statements/Debug/05_Selection_Statements new file mode 100644 index 0000000000000000000000000000000000000000..acc1eb80bc25c6f85bcab0d2fe0e74e7c111340a GIT binary patch literal 43801 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%0DPI>g6g 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 literal 0 HcmV?d00001 diff --git a/05_Selection_Statements/Debug/main.o b/05_Selection_Statements/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..58a6b1673f0176fb6f333cc0a4c8d4acbc102dc5 GIT binary patch literal 75016 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 ae@)?{pZ4!?A&Ii-Kei@!Pm literal 0 HcmV?d00001 diff --git a/05_Selection_Statements/Debug/makefile b/05_Selection_Statements/Debug/makefile new file mode 100644 index 0000000..3c61224 --- /dev/null +++ b/05_Selection_Statements/Debug/makefile @@ -0,0 +1,43 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 05_Selection_Statements + +# Tool invocations +05_Selection_Statements: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "05_Selection_Statements" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 05_Selection_Statements + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/05_Selection_Statements/main.c b/05_Selection_Statements/main.c new file mode 100644 index 0000000..b6aaad7 --- /dev/null +++ b/05_Selection_Statements/main.c @@ -0,0 +1,619 @@ +/* CHAPTER 5 */ + +#include +#include + +void broker(void); +void date(void); + +void ex_01(void); +void ex_02(void); +void ex_03(void); +void ex_04(void); +void ex_05(void); +void ex_06(void); +void ex_07(void); +void ex_08(void); +void ex_09(void); +void ex_10(void); +void pr_01(void); +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); +void pr_07(void); +void pr_08(void); +void pr_09(void); +void pr_10(void); +void pr_11(void); + +int main(void) { +// broker(); +// date(); + +// ex_08(); + + pr_08(); + + return 0; +} + +// Calculates a broker's commission +void broker(void) { + float commision, value; + printf("Enter value of trade: "); + scanf("%f", &value); + + if (value < 2500.00f) + commision = 30.00f + .017f * value; + else if (value < 6250.00f) + commision = 56.00f + .0066f * value; + else if (value < 20000.00f) + commision = 76.00f + .0034f * value; + else if (value < 50000.00f) + commision = 100.00f + .0022f * value; + else if (value < 500000.00f) + commision = 155.00f + .0011f * value; + else + commision = 255.00f + .0009f * value; + + if (commision < 39.00f) + commision = 39.00f; + + printf("Commission: $%.2f\n", commision); +} + +// Prints date in legal form +void date(void) { + int month, day, year; + + printf("Enter date (dd/mm/yyyy): "); + scanf("%d /%d /%d", &day, &month, &year ); + + printf("Dated this %d", day); + switch (day) { + case 1: case 21: case 31: + printf("st"); break; + case 2: case 22: + printf("nd"); break; + case 3: case 23: + printf("rd"); break; + default: + printf("th"); break; + } + printf(" of "); + + switch (month) { + case 1: printf("January"); break; + case 2: printf("February"); break; + case 3: printf("March"); break; + case 4: printf("April"); break; + case 5: printf("May"); break; + case 6: printf("June"); break; + case 7: printf("July"); break; + case 8: printf("August"); break; + case 9: printf("September"); break; + case 10: printf("October"); break; + case 11: printf("November"); break; + case 12: printf("December"); break; + } + + printf(", %.4d.\n", year); + +} + +/* EXERCISES */ +void ex_01(void) { + int i, j, k; + + i = 2; j = 3; + k = i * j == 6; + printf("%d\n", k); + + i = 5; j = 10; k = 1; + printf("%d\n", k > j < j); + + i = 3; j = 2; k = 1; + printf("%d\n", i < j == j < k); + + i = 3; j = 2; k = 1; + printf("%d\n", i % j + i < k); +} + +void ex_02(void) { + int i, j, k; + + i = 10; j = 5; + printf("%d\n", !i < j); + + i = 2; j = 1; + printf("%d\n", !!i + !j); + + i = 5; j = 0; k = -5; + printf("%d\n", i && j || k); + + i = 1; j = 2; k = 3; + printf("%d\n", i < j || k); +} + +void ex_03(void) { + int i, j, k; + + i = 3; j = 4; k = 5; + printf("%d, ", i < j || ++j < k); + printf("%d %d %d\n", i, j, k); + + i = 7; j = 8; k = 9; + printf("%d, ", i - 7 && j++ < k); + printf("%d %d %d\n", i, j, k); + + i = 7; j = 8; k = 9; + printf("%d, ", (i = j) || (j = k)); + printf("%d %d %d\n", i, j, k); + + i = 1; j = 1; k = 1; + printf("%d, ", ++i || ++j && ++k); + printf("%d %d %d\n", i, j, k); + + +} + +// Short -1, 0, 1 return +void ex_04(void) { + int i = 5, j = 5; + printf("%d", (i > j) - (i < j)); +} + +void ex_05(void) { + int n = -5; + if (n >= 1 <= 10) + printf("n is between 1 and 10\n"); +} + +void ex_06(void) { + int n = -9; + if (n == 1-10) + printf("n is between 1 and 10\n"); +} + +void ex_07(void) { + int i = -17; + printf("%d\n", i >= 0 ? i : -i); +} + +void ex_08(void) { + int age = 22; + bool teenager = (age >= 13 && age <= 19); + printf("Folk of age %d is teenager: %d", age, teenager); +} + +void ex_09(void) { + // they seems both equivalent to me +} + +void ex_10(void) { + int i = 1; + switch (i % 3) { + case 0: printf("zero"); + case 1: printf("one"); + case 2: printf("two"); + } +} + +void ex_11(void) { + int area_code = 404; + + switch (area_code) { + case 229: + printf("Albany"); + break; + case 404: case 470: case 678: case 770: + printf("Atlanta"); + break; + case 478: + printf("Macon"); + break; + case 706: case 762: + printf("Columbus"); + break; + case 912: + printf("Savannah"); + break; + default: + printf("Area code not recognized"); + } +} + +/* PROJECTS */ +void pr_01(void) { + int n, digits = 0; + + printf("Enter a number: "); + scanf("%d", &n); + printf("The number %d has ", n); + + if (n > 0) + digits++; + if (n > 9) + digits++; + if (n > 99) + digits++; + if (n > 999) + digits++; + + printf("%d digits.", digits); +} + +// Convert 24h date to 12h +void pr_02(void) { + int hh, mm; + bool flag; + + printf("Enter a 24-hour time: "); + scanf("%2d:%2d", &hh, &mm); + + flag = hh / 12; + hh %= 12; + + printf("Equivalent 12-hour time: %.2d:%.2d ", hh, mm); + + if (flag) + printf("PM"); + else + printf("AM"); +} + +// Broker modified +void pr_03(void) { + float commision, pricePerShare, value; + int shares; + + printf("Enter number shares: "); + scanf("%d", &shares); + printf("Enter price per share: "); + scanf("%f", &pricePerShare); + + value = (float)shares * pricePerShare; + + if (value < 2500.00f) + commision = 30.00f + .017f * value; + else if (value < 6250.00f) + commision = 56.00f + .0066f * value; + else if (value < 20000.00f) + commision = 76.00f + .0034f * value; + else if (value < 50000.00f) + commision = 100.00f + .0022f * value; + else if (value < 500000.00f) + commision = 155.00f + .0011f * value; + else + commision = 255.00f + .0009f * value; + + if (commision < 39.00f) + commision = 39.00f; + + printf("\nCommission of broker #1: $%.2f\n", commision); + + + if (shares < 2000) + commision = 33.00f + .03f * shares; + else + commision = 33.00f + .02f * shares; + + printf("Commission of broker #2: $%.2f\n", commision); +} + +// Beaufort scale +void pr_04(void) { + int speed; + + printf("Enter wind speed in knots: "); + scanf("%d", &speed); + + if (speed < 1) + printf("Calm\n"); + else if (speed <= 3) + printf("Light air\n"); + else if (speed <= 27) + printf("Breeze\n"); + else if (speed <= 47) + printf("Gale\n"); + else if (speed <= 63) + printf("Storm\n"); + else + printf("Hurricane\n"); +} + +// Tax +void pr_05(void) { + float income, tax; + + printf("Enter income: "); + scanf("%f", &income); + + if (income <= 750.0f) + tax = income * .01f; + else if (income <= 2250.0f) + tax = income * .02f + 7.50f; + else if (income <= 3750.0f) + tax = income * .03f + 37.50f; + else if (income <= 5250.0f) + tax = income * .04f + 82.50f; + else if (income <= 7000.0f) + tax = income * .05f + 142.50f; + else + tax = income * .06f + 230.00f; + + printf("Tax due is: %.2f", tax); +} + +// upc modified +void pr_06(void) { + int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, + first_sum, second_sum, total, check_digit; + + printf("Enter the first (single) digit: "); + scanf("%1d", &d); + printf("Enter first group of five digits: "); + scanf("%1d%1d%1d%1d%1d", &i1, &i2, &i3, &i4, &i5); + printf("Enter second group of five digits: "); + scanf("%1d%1d%1d%1d%1d", &j1, &j2, &j3, &j4, &j5); + printf("Enter the last (single) digit: "); + scanf("%1d", &check_digit); + + first_sum = d + i2 + i4 + j1 + j3 + j5; + second_sum = i1 + i3 + i5 + j2 + j4; + total = 3 * first_sum + second_sum; + + if (check_digit == (9 - ((total - 1) % 10))) + printf("VALID\n"); + else + printf("NOT VALID\n"); +} + +// Smallest and largest out of 4 numbers +void pr_07(void) { + int i1, i2, i3, i4, smal1, smal2, larg1, larg2; + + printf("Enter four integers: "); + scanf("%d %d %d %d", &i1, &i2, &i3, &i4); + + if (i1 < i2) { + smal1 = i1; + larg1 = i2; + } + else { + smal1 = i2; + larg1 = i1; + } + + if (i3 < i4) { + smal2 = i3; + larg2 = i4; + } + else { + smal2 = i4; + larg2 = i3; + } + + printf("Smallest: %d\n", (smal1 < smal2) ? smal1 : smal2); + printf("Largest: %d\n", (larg1 > larg2) ? larg1 : larg2); + +} + +// Flight departures +void pr_08(void) { + int hh, mm, entered, closestToken = 0, + closestDistance, distance; + + printf("Enter a 24-hour time: "); + scanf("%2d:%2d", &hh, &mm); + + entered = hh * 60 + mm; + + distance = 480 - entered; + distance = distance >= 0 ? distance : -distance; + closestDistance = distance; + closestToken = 480; + + distance = 583 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 583; + } + + distance = 679 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 679; + } + + distance = 767- entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 767; + } + + distance = 840 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 840; + } + + distance = 945 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 945; + } + + distance = 1140 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 1140; + } + + distance = 1305 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 1305; + } + + switch (closestToken) { + case 480: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + 8, 0, 10, 16); break; + case 583: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + 9, 43, 11, 52); break; + case 679: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d p.m.", + 11, 19, 1, 31); break; + case 767: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 12, 47, 3, 0); break; + case 840: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 2, 0, 4, 8); break; + case 945: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 3, 45, 5, 55); break; + case 1140: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 7, 0, 9, 20); break; + case 1305: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 9, 45, 11, 58); break; + } + +} + +// Which date is sooner +void pr_09(void) { + int d1, d2, m1, m2, y1, y2, daysFromBeginning1, daysFromBeginning2; + + printf("Enter first date: "); + scanf("%d/%d/%d", &d1, &m1, &y1); + printf("Enter second date: "); + scanf("%d/%d/%d", &d2, &m2, &y2); + + daysFromBeginning1 = d1 + 30 * m1 + 365 * y1; + daysFromBeginning2 = d2 + 30 * m2 + 365 * y2; + + if (daysFromBeginning1 < daysFromBeginning2) + printf("%d/%d/%d is earlier than %d/%d/%d", d1, m1, y1, d2, m2, y2); + else + printf("%d/%d/%d is earlier than %d/%d/%d", d2, m2, y2, d1, m1, y1); +} + +// Grades +void pr_10(void) { + int grade; + + printf("Enter numerical grade: "); + scanf("%d", &grade); + + if (grade < 0 || grade > 100) + printf("Illegal grade!\n"); + + printf("Letter grade: "); + switch (grade / 10) { + case 9: + printf("A"); + break; + case 8: + printf("B"); + break; + case 7: + printf("C"); + break; + case 6: + printf("D"); + break; + case 5: + printf("E"); + break; + default: + printf("FX"); + break; + } +} + +void pr_11(void) { + int tens, ones; + + printf("Enter a two-digit number: "); + scanf("%1d%1d", &tens, &ones); + + printf("You entered the number "); + if (tens == 1) { + switch(ones) { + case 1: + printf("eleven"); break; + case 2: + printf("twelve"); break; + case 3: + printf("thirteen"); break; + case 4: + printf("fourteen"); break; + case 5: + printf("fifteen"); break; + case 6: + printf("sixteen"); break; + case 7: + printf("seventeen"); break; + case 8: + printf("eighteen"); break; + case 9: + printf("nineteen"); break; + } + } + else { + switch(tens) { + case 2: + printf("twenty"); break; + case 3: + printf("thirty"); break; + case 4: + printf("forty"); break; + case 5: + printf("fifty"); break; + case 6: + printf("seventy"); break; + case 7: + printf("seventy"); break; + case 8: + printf("eighty"); break; + case 9: + printf("ninety"); break; + } + printf("-"); + switch(ones) { + case 1: + printf("one"); break; + case 2: + printf("two"); break; + case 3: + printf("three"); break; + case 4: + printf("four"); break; + case 5: + printf("five"); break; + case 6: + printf("six"); break; + case 7: + printf("seven"); break; + case 8: + printf("eight"); break; + case 9: + printf("nine"); break; + } + } + printf("."); +} diff --git a/06_Loops/Debug/06_Loops b/06_Loops/Debug/06_Loops new file mode 100644 index 0000000000000000000000000000000000000000..5085c4e2aa2b6a0d54e2af0a687ca1b15f846b7d GIT binary patch literal 52239 zcmeHwd3;>OmF~SQwImxaZOme9mWz>%WXrO4OBjQ;mL*#oTD-8eWp!)8+K^hZ%?>t; zVju>R5Hgd%Og3gh0y7~AfiPwZ5RyquCIM%%F=2^~VIBmBIEg2I-*>9&-rLF@s_N9KQ>V7u*M=MG0=8|LCt#gtF;p3>6p(sbR^PWIsA1*SG^^5DWG%EZ z014u+Qex;TpK%Xs(#FlwcxiCc@mC&Dfbu}4c#M0h0$av4C8W#zyr)uomHUjNg2uHh z1zv(SW6Ig4^E(z_-qHCPR|l=-1O1!J zN|p~qmksm}jc;4Ft-NemSxNrbaDI{0JA{G|cXe~86v^;$9zrbh3HYN7Fn<5Mm1qCv zor$A0Uw{1Ir=R{r?ROS`ZV}U(KX^a#a|SSvp8}igoC<#SG2m?OsqiZSckq||90$Nu z_!juoO}3O-kx2j8aCb#TWURYusK*)^kB{-y-Pbj0jg0mW#e0B4^vGDeYcw7i?CKu^ zq<3(5NJApl>c)oZnn+Rp3fEVZU&^us^gqQ_@-86!V>|FUxxarV<67V+YzBO>k(~p3j zROrwpdl+@}mDy)pN7y3_8T=;?rvbly@~QeK-#owG-djKUZ2gOW8%O#_iCcf;Pva*2 z?{xa>R$actL37XPM9Tfwpdgn#8@v=C`@N@Gp86fD=H&n(zQ8TQoX$NCv>fn{?!Dx| zl}K`60jcGyTbb?!*A^h zADImA-*NSRYy1_&s|0Ak(4MT5z?IAYcJ%0;0{Dd7{!s+$ZwntrrS`PD&|3k0E_{UT zb?{6Qd}{WCq<;ih>s+idVC?|buJGZC@R4g?{(+Q@Ss^V8yJr(~Jo-P#akrbwnli`v zfF3**la68stoHXVMnx2LCP^7%i# z`Q%>$lg~eS_>9RHbDx}ielmPm*Xzb7uHENRR~%f9v_1|NOqszNKtG&=hmIVJgDR_M z5bw+C`v{^g?<6+XZvlNSe29(pT=+2ikjZ$_E;ibsghsnwvOL5_1FLt04+nOI->C>6 zy5>K;dhQC|J;$;p!$)bC3F{{2XG^p#z~e3j7w#_ZYXlKSOeh14O|bkv3Z5zzN$hr);OYC7`X>3ZP2J(xsBiCPjUwLef4?@gk3m}(NuyJNqNCS?CT3@&=*x)%651`ksL6p9f0g(B9L zL`?ee!FkCATuB<}`bawMn&0i2PQGOVraOLWg6UHvcA-#o+K`{H4=mo$d2FQP)nPXF)+r$6{N4i-Lz4E=zzSO+1ihj+YUL!V~B z2R(4m-VIfN<~%&@npairUv>q#8M%1!zUP;2L@6Rtb!!WtC^ZN7gC|n>)ChHCaxYAW zlayk0N0h@APhIm%H{ZqB3=C5xPkmekC^g05+4oQr<%aFC&0GZI|jfh0pJx}409gPiL+hEJV4%?y%EYfG&3ZA zt@01hEOycUj2@Dh@E{;2;j7{|37><2xCwuhlJMVr3BR3?@OFQ~dv(HWm((4;gp>Y+ z2RFDl<0+|neW@Y|sTR7a*7|U2{5Ze}mH{9_Ic-;P3H(|vk8ntPfvq8;c(0|Jx`%$fux^D{4xL@P;IS{EXf z&(gX`<(*_{jZ5BQX&s!(wpxUEbQx_|?SM^|YFq7j$K~kze~=1_4)7`%Vo5@$7(Mr* zLP|2w4+3h2y19EQUF$WFB|s8pN>ygBk<{NCWmPEf63*nv!~w8;1nQ1ruHXVaK(V`iMU9I z-W8;`5|L&RX~aePi9(XL@KnhGK=)kdBK@;MO5)`+fTEX#-@ zCCCWo;!zB7dw%Se_Q*S|chi210uL0l~&=fBzGMD1p6Kbob$v;Um{(U=%+(juBOj7q7^i@U_YCJ2F2!bYKj{ z*}bdj(5_BE-a^jrx;aNtF0bgjg0H}o1mQh1=NoaXmXe31#XOn47|`d!vRZYp#hZ%= zhf#;a=%j~aQpFx|Xl3}FYuoFH`1AFt^@`M#Y?bav*zO<771ZmHOM3eRZB=HQu)9vvBGsFV5cE zh{*kolkx0#8Yi#HJ`78syfOFns>!1blke9*`9En5lRq!~<^E|PTYux*@%fyuH%`9U zIQf3<vvt8jb)L6>`>#bX!g8D_?*UF@$8(&T~}onV0ok* z1-g#qdGG0--N+})ESYefh)+jf|Clo}I@~+jH3%20QDaV*6YttQ5OaomoUzNtyGCPU z`Br!+9vgLr#s@dUK}2jQKH47}bNYuA@;Q#RC~7S#EQs=N`Z4H^#Uv5ZBcoVvY!sB$ zqv#u`lT+ZthaF@&*gw=2kL7}VM_hAOa^ zELq}I)ii~j?!H*}md(S%Tb6C^8t5A8?jP!P>kA~Ey;U zKhZzd&sN>M9qh~3V6^yP%miW+u_2Qje3iBaf$8M@K-Xw*Y%FdhU~3m!A-~AfDZX{s zFdq>h4q;e58bi||4Vg1Mq>3;+n%H_hqg~zc{^222(B&wa)iC4?3~yyZw!gIYa<5(! zT?6AHn(@)DXbj2Na{XgtLIZp&>H!;A;!#v*bgXMY1SUm(qg~rYcu}x;AE>BilLc5x z2%_0|anRWsi*0do3Rks{59K*4R<(DQ*pvdrj>nvwXmt7D;PUO;SBdKCfP4?2_r@iG+qs!HITtfoMV&6FhHd?W=v~7@;MbV5s7LqM%2UIiso8a| zWxZ2nwLTr*Tf1+iWo@dqD*wK2@~4-=|JiD*wPy7z%R=x!Uu|U{s()qK?sF__LCs&@ z-U9d98p}Gh+Oj@VYgyNwZ!bt&$-RxmsD0&|M~~hD|3h#$!2SD!M~^-P_W`(j;r<#f zHGTbCM~{Y}#-4;*0QZcyj~?Yd&L`lGz|H(`3^Q;`phzErdpX>_aG!?z4%`sNj1X3< zz6ZAe?o)7E;U0xM0=FHb;BL5g!F>qsf56=f_ZM*Aftw90A(U=e--TNMcMsfFxc?1z z1TIau-Eg0S`w-moVTWtm~}v=dWB+oV}1>(yYbbYoIH84OO#3Hw9{DW~@cV zIz9^bXNWI^Ynk`~FMcP$uOohoKR(bS2&Dfd{1re3wkO2L-S}q!pG5qn3Go}<_}2h` z4)MpLpAH#19xA_C-1O<`(9DRRn^3-4Zuzni{}^=FV+rZM?WV6q{5t5ghZEu- zbmO_9{U+k4YM*SR*@^glh@WKoH8*A48tj=>xg+zo^xM-u83=5cMLj}2^#JfHp)=8( zA3q;+;A0Ma%z=+N@G%EI=D^1s_?QD9bKqkRe9VE5Iq?6=fs9I_@Jdj*h8(Ace2k0Z z3i3RZUMVgPm&$Vp#~%5dB5$6z-Xy*SI&97z&)4C3I-ctQd`$cw|8{hk;m-yt>9}XU zH>Iht%q0PTB%s1-mE5vofbls_Io3Swo~T{pU`nhW9IxbK=9If7G6i@#T%!ycr#KO7d6a7cVOu7hqwo3R`(ds<^Ls$P=@C z@@9*Z@;VAMjcS-Z9FI;9VyWH=WCfqb!Zgyo3>rYWnkZSpql*Q26nUlFJ3!LTwJ!pO$@pAd z0A_3l?cVOFWuGG$CT37$Y$C=XyfTJ>LK=ZPF3upj@^8p&Z3V_k6&kRz?5{H1U>gGa zG@&O*XgP#vTEAtl(dg4aRQvm^={7dYEPK6el3b8kiA0v=AeGHiFGSyC=I;!!}9o)=4YT^7cx+m~^K~8f68vf77(#DA=e&eVJcJ%b5_XbIF+qf66xGo|&df zbRWrnhGe@3k^Iw&@TSaP1_@_G;EsXJO{HEan)w=3n2GCyJf*+V2=!%KCjtDJZ7AE* zRSr0MZ`nW61^=F|Gtlp!3-~j(L2K9On~45bjsATPJ%`l)-8N|VY4j(EUWOOh@?(YG zH|;Xl&#HfqIsMEwNg9t+1#{8?j_IT?nVgQZYnjvUZG+aP(XS(Vmc53t2Wg=s zvHz-xy=91H*{wuBWE-?sHF_o4`(GOUj~@CuqW_O=(9W8nTZ!l)WWieg&7jY)kFsXz zwr%jbH9jxy*j2!v3H+dRL^Pu{%RUua*`8_J2C-i!*u(^bNHF_{6unvpCuTCGG3D%fE-^|rDwO)|KMoBDg+lI(hAyu-*X@IW>u{i?`@Qv%b z4a_+MCV?C51BGp*aHnmXl*i9e6doXjTXb>m@-efd7!mi{wn3cG31&XtBBO2H2{CMZBvvs zZEU>7BE8BYp?-gHON9EFz^0kd$0iV+^Y}s}Fu}f=F{pdD<{|s!Wr&>?unl=*(=^Ti z+_LA`i)PI|E^XF=S##{;?NG)&)nIub+dA&J^8ke*qrE6kdcJl3jI>$j9Jlhgvu8BS zC4ObbXR1Lbm~SH{D>3Ho>KXQ2*d;+r#Wc(fKxQ&aEJZ>Evm~Xa=~866X+RW;3URtW ziv+~u{KZl+$Qt{6F6rReGZIqF)TD!o^sH1wUG~}2RbioxaH~;Q-lZnF%+dAHw5%I| z8?bJ`cx&5#oi!70xe`k|B|qOBU_2U22rS2~$4FU;z5>}hG`<|CgT_7t zWo-M0VStdLfy;o)d%L?+vweYEMh*LZ9aUG5gMfaBz*GjTi1S30 z;$CbZ*3BXSI%fPVUw`jdOczaKt5Oekb&n3SAV@G0@5A}0s38o5u7QE!?k-JQYP75e z$AvT@^r3*6P~eO~+O#znZY=(X0Wqz*@e#HPX$6JMX;r z^?!IhYh%{L9T(DBUZCDty+yCzyKrOS4wPsWvCsL`y#+hyncz#ovL5Tbw_qp2fvhv- zy^?Vm&u8@ATW}Krsz?gDCZq4ZsbIvhvsS)w-@OHm1ve&RoSSjiy{XWwM>F~pz+)tm z@mfY7*tR^2b+&(ZSwTzMjQkxFcieaV=@PvrV@uYmf*W7Yy6BFh8j!Vc;f}1GS?3|^ z9pm?Att#4a7nuI_-WRfZ3xRm&^7mBxTmkkooOR~Q`w(>#kg`t9Ix}$g+=N#)gV`qp z7M}3(omstUgB#LLaG2pnX7_u(0wr_lWIZ-c_=WImCaD^%$v9N7V;>vdi;-rN*J>t3 z+ukfRQ4bgCRULEF9a*aaMRWhoMMOzAn*SI1sV-+);Zz{&KV0-3X>)d`jXJMqy&#}? z#xJt=iSLGtUOati6C2WII9YcT?7S0Yl;(Ypgg&n+>2pULC3KtZQ$$&?zsh zC_=iuc((+9Dm1#+I73k-D~U*kS7a zp<#c)s83mR#GnwX)vKv$11MJ%6%`k+C@Lr}D=#fsv7)rRU`1o2)!fgst;q^CQc7wH+v1)~8P-y8u?Mq?Obh6w3w4@Wk%w1%6D z)|PK*Z?M|K;kA+WaECM|*w!40=QQUvwbX`lO*4|4@^{u*&CXe8MdD5*(iO*P;?3jn z7z&e<6NwBCN5v}%b90fAW_(Rcb9*OF^-?|>YpWY0ZQ( zRoli$geb_5OfD>lgg3MTtGJ*XU^N{0Xj94}6I~e4aKaK7`G>~4O;DnSdwQhS;tHfb zyum3bEMP069FV}K1}(J}rL}c{wzSoT+aj&Ct&wnZZ9^3!i%SYAbihX&vRJxI<)uQh zCqBBJwMK`Dp%qmFLcGh3bZgm`&k(F{?`Ual4cCeoqd$ZV(!ekdo+k7Ibs`)Yv#*p# zYI3@Boo)mXDl9X}#`=awrIA%cq%mC8-hpDWJEQ1ARdp(9L?yX}`Gw^bD~bzCDoTq> zR}>W&t|%)lD2gpDsVFX@uu37@8&>D2@jll9D7>MeqrIc5qqE&WfjB<28KT?+#^#zxO-oa2Ra-bx)m$5C zUtiT4DHLH`7jA2B5LL5KmOB?BySmy)xUnNAnhTl6YdNxNuB)v^i7C-gZ=l=K-Vv@v zDf|i#kz?ayF&IwKu>`S-)HQY((a0}cQCd<_Qe0Y4UQ|?6zM`~XMa7EPvf^@zOKT2n zD|7=bx;hGgl*2(57j#xB^^Uk`S2Q}BP*ZfE zp7Eg+`ISt?h>TDpYvF0`(7hJAA3TTpVFi$h7f@XSM&*AifAgf7gC^>~-q%h8(h#gW#wa9j9-oWZWk@^BMF<)vaG z&bjAe49#_xg1Q1hX`!n{oby(pOh}UJq2w?%rC#)PxTfO+H8v=AjSYelYF5?W)LaFP zpL3Q{>>$!10t&8BN=Am!M;wgg%7-kJuB?V0cXee+u_$yiP#WcmaZnotX!=B5=_N;D zya32k??J1y(@^-3KElzluAwnZ;YWjsX+l_QOMAlxkOJM+;r5P5Rb#{I=B6;{LJ{zT zG3{bsXzE2P08zt2f>yNxiT#6+kI+3jlx0cg zh;FN|YL8sd*?KZb@WFnn1+`0q3JABJfue5thU8J?6zAX$L zT-DJ5Q`RXJxdU;SSWqUOqTbkEgMmURDd9D%F3JIB5~l9_WD%~*SY%FoxXD|QO+`S z`64CRh;$0XuvS_YEoS(~-koHvxJ*=L%lJ_LHpzl=pU7^%U8P#9eO*JXAahtE=e4j$ zMEm=u71b>*jY(a=8^WBzf+Egs3=!RYO`RQKbP=bd04-2flF$O4y{N3k%^rf`b6JV- zS$}iN$81{jb+qi+p+ze}+j601hyxD%RBTIfa~9KI6e(135mEAf73uH1NlXOq64ga) z8#>=mq-$U+Zf9XSMGMVQKnFvD9}Gs+wO2Q;J+=~1hAK^D&+OaU1@hxVFs`DQ=8TOG z#L?=01Z4nDg~p1BT?AtzT+;{>u$J#TxZv28^U=*oBysfo0=bhcp%3pHC_P(dRL!d9MO7jZ~~E@%q3w_>tO8AhGBUn|O zl36N3kyi3u+tOK$K~E@fh>i{Sd{m~^ii5lb3#;(??NS;!M zi_1%DIiWDtOr*J^{{P;hLCZ-Cf}on?Z>Fe-;m7$+q`kAICfwdGb847aKFz0fv)FM) zH=8+vJ4?-3R=grt&CF{$+e8r&2Q~Cfcq@=Odw*R^8yK+>I&EDTA_3+YLs-Ut3!)8? z?`UZ54A;66EfVj7k7f1JK8;jw>}FNIe!G9+|*} zPCZaFh=m~;rFE3m(bOvXst6)bMBAD*ooW=txS2Gpfo!57j?`kV;3DbpmKgh)8u6<- zYU+hOknmza)nbq`hl&bIR+N+%mzAuLMeQL+G^X%TF9;yPc!VRdZv_jpQ%|?32^zCw z_s8l2rvQ;Y0MHmMHCS4Ks#lGLUR+aA;kGD?;I?`(Yv0<`kvJ1XqjO=5m}*4Cc&OG3 z(50%YYSwnPqMg-BgkExK4_^?eX@`Me#kNHXs87`_jD?E}OlDm*jcqwS(Y&50CLowq zi7g43L!hIfNNd(mRPHjQk*tUx#sduHYDIynv=jIv39B{$VCF-+yQ3c5=NPYTL@yN; znY*f>vnfM|wdAVr0QIxhbM5sIc91FJtWiy=l4~H)AYn6ma$SWL=LTD@UIq^i0h zqSr@Y#CRfPX15domI$+?RNW?hQt3A0vBRwmw>5`hk#@8-)X*}nvA(0Gs<|fID9eqS!^zg33bPdpDbsEj!+@bw zt(kcyWhE&JFF2EYOj)~X`VsS$2F z!@@C}tQaNOqO1M0qt2As5$8{+Sh-RbzUhb3hbdEVceg`LFcTN6T$A3nY9$JS8>3?* zv2Iqumj_0Ftaotj6q8zP#Dv#XHA|4)bvN`rd;Q|^PHlRT<8)nvY?=+htU#Qo*buQWodDWIL1mGh*A)^ zs;Xvf4NYMV!d$(Fl_AY3Qi2W!zO&F&z%&(W!&t^_QcaG^8TDrN3V{iwX-sriS+c1* zy+z!q`UQ-y2<1J}6z-^R;i^BaDR+D_bK#=WQZ6=ajw!YoZlcg?-6@H=WhKH~HB@28 z5?gni#isCDalD{ld|*I0TZ*;Yso0*3SAvE}#4`<~Fb%!bW@Nl-O8N}ml&$6=3L3|k z)Lco$AR4r(bM-I{-c+?vSc;~>16M?F)cmi#vzoHNCX*>=LB5xUK5i?Q7h@_oc6k@( z$Hmsb@bE|k=T0pBfflqcw*Rmb=xuBJ$E(tUGLb}#3{#tqBBEMAt2#tOs6_(RXZ3;s zWl!uRt?Si>HDq_3*0X~d2VK!ujo~`XASicgR{Vhmm%Hs+RfAQ?HreF{RZKzGw>3bM ztKADdlQLaRcHn_Eg74;Z`{wK51HBPrz~E#aHeZ~@ z+`{0N-YC}Tw_<`xVpuv6A?{l0bIc}fh^a?xZ3NJAiDusaod<`i<2kUJ)WTJi4 z${(P*$C?3K2V7z zdznZfMD@~EYU?CS^(jhfXVW#@Yu8t`)nO7<*T9_<2$y{S3ZD;xz;OP}<+yg=mY;7S zSXL5!qoB-oBPUNz`gbA2?RHug})w#a&}$jXGYqph}qW`4>>Fx6o42D00r zYA(U*%9OWMIt{w0?lfwaSAl&9wKc?*T&b;Ixc8 z9C_GMu3CyGB_vmt)32#}@ck+fk&Y?{IIKur7#q@Un$1(~TGOTmKaa&cj46KcG}LKP zaXkcKT9V2N_7BEfh^}+;97uSqt4EG3kY!k_T#e~pV;Bj&^*mVvooew@ML-D-U;s*3 zPM+GV^jmk_wqheDEn@4H1ZWXVMH?yMo-D!;GxDg>fP&)!VOd*IlT_4JAIm^ewOHzE zJ{c+17-&XHy{4@jMO$2kZF;7vxHq*C4;i6Zhm6FkgINa%&r#?NV&y3FkM@sRG^F(> z24YV%7Vqljf{ix~iZnE}Ha65WbTn>+6k&eQt#lYEGo(}%Qeb(*s0O|CKq~bnGZd}tO`$O{Nte|= zy}Kp*EMj8I@@e5mSv)oCqm*Y60FGcr_4*AqE^D&-W{X!1&k0iyJ@@mU+>+j_`K;C% zeKYptbw)%Xb9O<>k~?l6QHdy9T4+0Y?}t2-H_KuV%}-QVj|su|V`q%y1S&&Zs4@1)o-g zVU#n{g|9>6IEi0>n4>a+fxI*h$5%7;OR$aAk!dB{X09P!gcXtpn(SSN!*Q9B>h zk4R%SY}JmREMp*ko%C9>tjYrGU6I0k90)3_z=}~xc^OVqm98i#FD#8MRl6eGZ`I1( zs7-gvmD^W1kWkg=TjIxj!naz%g&=qJpA$N)1K}VD?sj56$2U*Rh{VbKP>S#Exp>0f z80nVn_Nc=JVD1g*(;FO^)H#mEhK>%*i_K9EprNhNJ=7{FGvVpa8q7R9Fl10I=q6DX z1}%q?QLZoYT_o>fd6&q$)S?ZUvkbFfBCL>ixxCGqv~+WK-RGE#hte~(04B&TI=oWN z(!)Mz;EB{$)z>epI+Zj)0iuY~6v;i}cHl6h zkF`n_Ni=chULZf=l!Kidbvl;9&L4HcKn{?@2@1-)HoS4l)-?J`72+5o1$pENPfgf2 zlQMbAHhj`-YU^k}b`DdgQwnb8Q|CKa*TLse-Pu&0lQ?_g+^M?{N5ycN+hs7PRft&P zo4mQ%EnVv1)R&}@2GvrOJbZbhvyp(}a(y17I-C>RHZq!rtq}kE9$>hH0e!>B+&p{_ z6)T?VDg_wKo%(33dq8czLdbF*eO^Fz4doE99H>sx>pU~Zw3ry7x8yLPXmz!G8;@_N z!Zp(4o{5ynlAgfmPFC00QU$w)hxe4e`T)(v(N@zWd9wxSP3h1o5^$H1h~=L=s%6Nn z7OwYT2f=%fzp z?)eC5d(R~GZRIB&B%k8Iaq>{e6)(MXNfu(0s(Cf-inF#MNL?vf)=VJ_<(yo?Amm96`;52d@`*dnFbilUUl}>*TI=s6M?=JR^5DFuSM3CMT!;PnzL4=h~Y+#Jb*!rmF zLY&Rr>SUMaIg7RyEQI1&xN3AEQ75Q{76K&6=0B*MR~=rBK_y`dPx13w zloHNcuuRdR32%%tp!J&ZWVQp^);T%YgZ;E&kw63?x;jvvs|56A_fZklc_@6dfB&;v6#DTn8C^s zB@WOqH@UT7Zp>ga0>`WBMu!KhAp%3xfyB}WZF9P*G+B2Iz_PPUWN|pNsv6s_usQ2! zx8^wtQyq-dtI#|cNd?r5`A!{<4vWDKKtGxvYZ^SKtG$A!j@5T?Es{;b=p+ydCauVk z(mmV28v%$wWxWdsk}Hnz;BfmI*gPFoID*vf*~WgGqo9a;9%443$t`1BsuL+7>RCX_ zhS7somD>^JjIM9)WM*thS_@XRdrT4A`{NkKu9W73=X%1VlhO3DjY6ySt@QEXXBDX##yR4Xj? z33`Dgu5{t>h}S1vn}??aU~Y$NkwSQ%yeX1+63^i|6*;Mws$dh2>_yb!zzyvPdI#0LGTr#x{?0l|T!& z&j?I8cjTM@yTvmDIX-JI7XYxbhJ$J7g*Zh@(tL;~DhH`W@BriRiFSv8*W#F}R(U>5E^ zOIZ4A;a)aQ6M<~mHeVOFoffnEyPeZ4Tiwqp8gV z-xf)`RvX@mh8q1EI%K_%_a(qc-|;?*(dOZ?f*j1yIL4Y&48xl*!z@Qud>zJd*NctQ z9%a2+7tE&j=!4x5J>&A2|Cp2DWS? zPPG^W(eRdtXdX;;$q7>(tVmFpc+!Lq%HRn)T2K`tVHp!Of^h-8#oLf>3KTfu&>Pm7 zFATS};Ao-mupuElsV5+2g*m+1G8LgQT9P^vxj+-O;mj}k3b>2IK3sD{Igw5iNB6<{ z|3WPOj$Mw+e7M_(E6TJwe3@etGCJ&z>Cpn(%+W$xrpl(pI6pjq-_F3!0VbIXy9c5x zVRnzKbQS_7As<@1-D2TJ3oyxDxT;nKu$G3XE(8QjBbWmL$FiPighzoe#2E4Scv;KxT{!JR0ab@U+8oN zGTGp2Z|Ch=_CS}KYy0Iex!7;AKM7Mv?ws)slFuR&(g~Nd0r@bw7v1B#tYmhD#e~Sg z5SBX?tC6uJ+#Ky07$4)d57kBo77Z{B8y?MpWsvK*^E85R2@f!&;}W*J+^3H@d*@J+ zFaAI+$Wc)CW!cd8nhCSMl$;3CIe81KPO=W>XtLF*8b`gr12d^W-OxF)W3rYy06h{V;o7!Z(JSPD=&5nNE)UbXhrg8`$?3}5Jk_L4 zWN5GTUhJbNLyn=6V<(0oK3iI276hin6Or{hc@qO#_wnK5TpCC?PLH!~nD?9ODp%(cB!(FaFty%Jx|gCy z9ByWcQ6dsXtFs1nsj@hyT1mk`;$7%I=D4ESU^W1F9L0Cz7-Qt^!q1tU^+iJRrx3eR5BZekXB;14^EbkjA!FF;vYW0#)Nb5(a;3~`@sxEL$E+shz!a#W zxeM1!cXKWLuvxUfmmkG~uxRmg-1S8Q)d5_!X@**q0LFQrZ#|hMl+|xFKB*04DQS{u ztFESWAsdjlj%9%Ot@r=70JT&?~+6lR(OIcXx zE;*?6ffEI}prk*?AUBlMSnXe=a<`*P@+(RT%1X;hO3U%#l9IC0l9Iv|{9r{<2`)1D zZmJ@0_cJFbh;D1y+;lG%a;gY!=^lb^g85YwF(XCMBpo*KFYkk2=9r1x zF;3MOzPl(~!gCL$AL~H6I*d-kA(fW5>w`)*HSr(-1YT8&*Ab3cDMYeT`T5KB2jI-2 zshJfP7o=o4ph}~x7zSJ zkMrJ`20U+ehyZ5fA3h;hX%g;7;+%ubM7*8%)~bfKoce~m#+F>Cu_e!`Zvc5Yj)T_a ziSDE`7w(~MR~4(H>AYX=N`yPhs;;WlI%Yj|OGAg;%fX5NJRHq{qR4?)9gOFJZNkW| zp0Q&ZMCPClu%w4*E1N?e%Y&8@b*pbNOlkNEzcshzt4;ndb77ePt*%z93pzoS-*fUc zh@SU}*mrQ{9wT;SHNPIk>ukV>Duu@MZbe~nr?3>qty}qFtZ4tJvv4^){MHWDX+)iT zfn6iYRfQ18Ldd3@XD9iGBB{DBkNkr2k|OL8tiYl=z86taQjB$WT)2`O+3NE@k-BEp zYs`lzyh=@BT|fzUaR4`(QV&S{{tMUR)d~+*AaQ6|EgYinL-VVH%kB<4u4<%!H+PN2 z*v4$FM9C!gq+-Bm37Q1bjIgJ88M9}wo% zc2h1nN1@AD)!g17dG;o6NJFb(8U6oqCtnhyyO@1^xiwu^)zFAjxRM=OzfL}M;iQi2 z>a47E6*-+E8{Ng&TPZ5XK5Q9SR$5eEURr_AhT!m&d|s(e^T=gc>Y_f*{o|9BGM4vm zi4APefn5h(=B@ata}7BPu9o`}4){yCX)+vpI*3Me&-Tiki_7w#f*o^`mUKx)e>cV3 zfN?t@^_JXK!O1b)`7j?xfCBT~VA0ooq>Z-S3yQaIZK${aSKZZ5=Hjw|{u&go zASWypVw))OPOmyoB1>!jHd0`<u1vHZrr$c3fSH*t%7IL4pr!9vD=gA1Do z8UGF!mP+5m?eyUo|IHpOWc+Wtu!)fI|F;WErElW?mk-DI|KPzw#(x<;^vj3*G5#$s zES0{A8}Q*6|F8!O8UNk*mad_1{GWAUsq{_UJw6=c|9cM>GX9^ru!)fI|J;S8(l>E0 z`EZQ?7alBR{EKx*BY%wlY!{YF-^AtkaEyPc2MZbhmtVL{>MC6$oSuPVG|+a|C0+#rElU6 z`*4i^uO2L9{AKtex9MNTzruy3(l>GCJ{;p;>A^zAzsiM8n4v>uh_{J5&&AoAW&Bkh zEM)vQyReCn@$)Ae_;8$4KJRVfCVe=@f2#)z8ULyHnFBuTtHytt3rnSM;!gMB82_0b zEM)xry$3_z_|I}-sq{@;whzbn&-P#;&`7Taf%W{-rJ~mA;AN@0uvSZp||OA^zA-+-UDFy%M?H7+cbzKL7w!!iD54;C{1XI@-19yh zAFL4L9w~>6y1NoOaf6 z!FfGr0!znlw?Gb{5>0%lLoydQ3Q zFf!1+J$Rg))2Kre~7x>6sNQ|Cj7JnLFS~&-@yLKhHQmJv}Xb zZst!Ja;9hQXIya6x(WnyPsqF$wA0g;oS6AtW>R@lX7G5p*(V1xm#ra@GZ{R0UU1$U zj6YS^BzVS8TM#_!l;A1r3W?SLwDio4^8T{CpJT#D1M@R;@jEVQJM9ITyWvR>-eJFc zA^>;V(=%TnAoEv@|D}Cu@T8X)!FT#;X(t(e9U(&6nWtx-j!9m6WjPE%?ukfPN?Qtn`ehGC9>sPv_5X1npDm_&y~5Pos5%cIkP1e--r&+D{35 zdo}%^M(Kn0J!kNpkpooIY5p}_@83h*g7$3!KOkjp zlGtbDee!h1RtmMRl+!=+Y`#mu-=N(msh*bit`b77mAvM)(4QvdzXg3OXumF;c~tVc z6x<8i@2}$fSCW=0JZR(dad_V#wfn2&^2R(uR@CtQxWFGr3k2=-D!xMk{|Q7sXn#T| z{}?~w6tr{l`2J79454QR?WYB^;4J#zkb1o$rFvZ2<$0;y63KDjTH@Tfn(t4d0|xCA zFW`HnaQhvhyhteDEga}rz}WYt4BwEvENRnjY4@)Q2Np|dzbfyw5aXbIpnz|zpW(ew z>bP1swnuVVCMArmWbAJQ@{LydA5P=j64_W*P5%MG2@1~7g@+5yCHyHV$v+C^Z!RXJ zS7hu6e)<$rC-ff>dARr_LI$K>KNXtyiT@43d{;PgilkjD@B`8cjp*+|J1%^v7D*lv z$j!}!=Lp|uLImyXQohTi439bVUno3(RcdrvB_WpxAIb#srcnDzfbf^3)v9voUmD^& z9o;f$|3F&jMk(Q+rOY$WC!CW4$d9z(x+eNhkydCG{+uSc>=4R-5l;S4B=G7+Vh#xZ z?~&4e62G<>wC4&xPlN^w+W#)nTe^_`<0S1u;lo1Vb3T5+GiZN7=pR@{|4PAGE498; zNk6XcPxxf>Fn(cKO%WJLc5watjF0`D?< z4uYo{y}77oM&G&U2^swhP?LnOO8v8@^W%GiE=4c=GWgr1Obav^wqpqN5+V_*TemT^;HF*CY3 zkVy&um%s=M@vXp}r1{;zf0D6}2RgvR;NCzb;)Jy)oRSN`f&~=RQ-9-V=)wV(ZqYgr zB38z)1N^np;BNx^i1)j|L*QNT)xZoeBlvpYu1q*@2YSF_Me_|bdf+T?J2tfm~YMhKV)fB&LnyDVIeTu?%o!v{`+$6tt7`)kTMg@Ym*o!ERx7pWHmT$M; zW?OvHzL~9dr(HoY|CHTH;HT{XOL?C?!5TkizsbryWj_*v^Nf824Ig~Y-dPOidHdFC zIKQ^Agni0!*8FiK{8I*`X&d?9c*d(l?{m$JqW z2J*?;hXW6?@ZSq;XFvNv;0Pt*g+L}z_5~iUhx3cT8SEWz2mZiLbtLdJ6j#`u{u%b) z=^LpnXM7K$Ake$hN?DQ5rrk)E-jntRcFxbGZ6c|^OIuG)em?EnWX>1To zaNJFN&$xjVnz;`>HaP3~Y`kZ`fR+x1CiC&06JZID|Iej(&;2ah>x8eecqe`p9V>X! z0j4^6Iv6W-&!Ev4be=++N%%4Q8j9uj>>ZSV$L%Z7--7>UucUbGvDW}C_=L^bbnr=g zobvya{VHe$pSFKX=NUVlGV^`AaRr=bZHuAj?EA^B=k1di`hh(`nlIQtVO@S=&qH%& z9JH^avba5M4O`%@G;UaA+>=&=kQ8h4ui0GPf96ORy`7>JdvO`wJ%7uM(ff6Blow zRG$4NB_OAn)N_|G?sRq7vxC*Qko7fLOYyGV zM@Tr2EmZd>vTyY-*a_=jVoNk!P4&`p`69gAUYL*fy7@D84YN;S2^LL|ALX0SS2E6d zly#`Sl>XW^tZn_H3p94Hk~N+#qA|;e#)r01>w}=4v1wsB-a9hI*_rtbG`X~3{-+$! zEI6NSUwBs~-o<}o8O#2WZBf1*Xo9z}oWgb1<_f&CPhedZokUq${1!XS*}GB3V9plG zVeUHCX~}O$j}_0=)BwDF=n$M2nDa#=?8ZowHBXb<8OF9b3EfMN&Pt zmi#;ank9HQU%*yvnMWCG{j-Dj1@BPC+O~jDu>D-(bb$3%u=7r0UUDk=c=R48@>`b3Y%UliTp0uB`fS*r0 zZ5f=0(tbG`&cCEZ$=%1&-ebjokoE&ePw<7b>nH?2Ogo-&KT5kG4bH!(apMc~!!Ln# zA}XyjS&d6SLDuwMLLu3P7|Qp2j|}Ocgct!q<=e4 zlUpD?=d`a=wVs~Te}cCJ-e6TH1D_#pJ`p%bXIJ3&6!lvJ(~g64Ti_kG%GJJ3Sz-w}A4qH|~9UdqBQ{L`gEf7zv!jx|MloHK8^4T6V!RtU|n< zWvtkZd)f6nl-KeghW|0znw@-#|WLD%_sm+XP^5*my5l22XBPSfG@?HLGHeq}n| zRdJT7nrn{1+PT08hTmn$>h>dbaP{3(zH3&o9oOz*mu>7v?!l&dQ->lZL}#~x&+sEDklJ zje=JUIe1@Ze}#l^v@d9ebCbP*2%oTjZ+LX_+f->e|4k7rc^26QSIuU*tKTKpS3gVc zHhznp`GP`nrhEPgc=vY^GJX__FnHyEv&`47XFadCTPf%_*bZszu)C^tMM~cUJfnIi zNrW@%;BUjH98i%>P#zhVeuG3e&jRx@E{mWWWL!InjL8BsLion*$LyDEpg(T!U^Sn# z=go%mA9e(V5vHAbD?90#5Ac0X(=@!#-NlY@-m*-MapFos7u2Byk|O(Ylp>fbWnc1R zNWJ7NrB&rrB~)b#j{X?J?UgWiNX41XsQ6O`j{{(S9))hf1jXjm4mS2_m$Qvdf0ntPu^ep?bViEs zKJ)H#@UHvvQoJu)l#BPb?QD?St{I&2ZzR z%Iz~g9Qcflj#&Bl=s_$WA8}t6@9Nbd+-J(?-Nop#{-~ADP+!+rpOqioJ_LHojgP7r zd}l@uoC=x_L=ZO`8|Y#J?Hd`0TlxJ%{dmXm4HqjPzwgSP%K&8aTb^2@xd9UR3wTOEE z=uvZa!}@HXQjkBZ)0^^B0q}t~Pk5mDEOZ68{Eq}G5wfgDbo%=x1fhn@x|{U#G<+T0 zH2i6FYg1aK#B3rEPfR)PJDGo%BIc;C{Lkw2&+7CT)8sMbH~AQM3u6D~OTSO2->1_T z==90u*I?@kc*s*jFDt!LqOvrjO+8Ki$@Slvl-|+l9i4u+P=h*vi_tNKf42ihp0Ip; z9@6O_(&?d&5*`h9VUzIr)9=;k_iDru7gKpcI&9oeC8e(nRtiR?uJFSKF)5u6TAzc* zpZ}o~D<$d>l_4GsCJ9e+`R_w4(;NO?~==6Iv|BQT^`Wvx$BPsvG%QpdH zS%*2|<1zRuSpIICQffR-sKv36g@s4_Ej3 z2;Bc~D&SxO#3vhnCHOP)XvQTr?^O9e|2!h_tWJtd&R=0o{l)S!UewN2XbGEHfS@!jE^ynMC+p%Zwk1 z@DnUEE+oQFw2Zz_gr5Zcy~z&}f0}hN6x~$td6v<;{zPfkDVEWviST5rM#ZLCdeHSF z!=IL7g&TaXJfuEp*6FE0K+?EfJ;jq|Ia5H1e`X4t{U_aemuf%Zp_;L+R6cXU9I$3u zBigPqi8#CxeqR#2O2c1Cg0BbM_VJVD;M0RYuKFjp`)z=ezLil4pZDAYuWhBu&m(|O zRj*^!caPASV?E(i!sk8z4)0WaAjVYme<4YaPbvSKLMK%|-_!WU&XOQr87Qbdg?ye0 z`0?PwJK8Qax;9VXCbj2Q0q%G~*LR7)Q{}u*=*+Y}d0eI7cIXsC8s0u#!J9NZuHk3R zP;m9OtSbbrk$ldr8oyD~H+I;a8ve{QMPZdr^I5<{*1VK{cdy{5>ZLDhIu~RrI-HO3 zc~Ham9$zWpxd`+5mWDs9%l~NwwjR^)mYJ0T(dM7^q=v7brQq8%{&ND?0iW|rjo+>5 zoBIBjhF_!U59&0(*YJrsl>)h1!+G(7?S55A!9Szn?`e3OmIp)s&jQy-K4%^ThIC$? ztLQwY<4y;hd`{MTO96L$>5casz~=bG4?wPxsU9I>B1vb7r8&3uAX)sPQ-H z@=t1fUIbw|=Vw(4#PDHM!v{5e&X@UY*YH=hTvZCxvaSU@1U<7Ushm4Cew)TO^7aW0 zPaX&F(D3`T{6C=S->u=chPP?>=K*KF$>YU8Y5Y80{*cE1hK9eV+x^!X{;-BOXgM+M z`>2NZYq?sh@t@G}gBpK8!=Kgg<2C)LhW|*zf1>62>yR5hKh^MabvX+a*m?dX9~p?@0~`5eD++lZdI}``B*;*|T5iNoKE+43TWWz4KPErOUm5j< zaJL@6EHA5+8r9t0kJPpCr|J0pApCr!RKWNX(nPID?M8gywt=5P_r>5VJ)^i=yt=Wa z8oyG7AM%jj)#JxcNlvbyc8`rqQRR!}_=I<5rTQU6{A_YQt}QlnG~vTFhBF;aHDpys z7k*e7--(TP;Uf#ofxo?}ep6F^PZ2-Zim#oIC6XeJ`VCHe$si_+tSV#gYasl_euexX zqxx}1^$~u4kROZ9Jt^eyIZ38aAMaP+<}a0R_wYk(QaLFdK6=(al$h9ji_%vGT*>8U zqErfUCptD9>FXMbqNZcxgXZH4_)S6n1dhpo+#|o;pZHQg^(72}VDPuTSZ{og!edm4 zfLKPXF>AQ|!a6HcF4b4RO6mVqf-?8p$A-Hr mDk5XuT|+*e;U|YLAMYBCF<&&JmMJoVAC^EXPua$*a{n8zfe?=X literal 0 HcmV?d00001 diff --git a/06_Loops/Debug/main.o b/06_Loops/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..212a8079c393cbd7ec0cadc1d71c09adb08f0aae GIT binary patch literal 89728 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 ahk03ex(Bi?`A>1C`xw*jYf5;!FY&+9^Ys(} literal 0 HcmV?d00001 diff --git a/06_Loops/Debug/makefile b/06_Loops/Debug/makefile new file mode 100644 index 0000000..28f039b --- /dev/null +++ b/06_Loops/Debug/makefile @@ -0,0 +1,43 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 06_Loops + +# Tool invocations +06_Loops: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "06_Loops" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 06_Loops + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/06_Loops/main.c b/06_Loops/main.c new file mode 100644 index 0000000..bec38ce --- /dev/null +++ b/06_Loops/main.c @@ -0,0 +1,523 @@ +/* CHAPTER 6 */ + +#include +#include + +int gcd(int, int); + +void sqaure(void); +void square2(void); +void sqaure3(void); +void sum(void); +void checking(void); +void ex_01(void); +void ex_02(void); +void ex_03(void); +void ex_04(void); +void ex_05(void); +void ex_06(void); +void ex_07(void); +void ex_08(void); +void ex_09(void); +void ex_10(void); +void ex_11(void); +void ex_12(void); +void ex_13(void); +void ex_14(void); +void pr_01(void); +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); +void pr_06(void); +void pr_07(void); +void pr_08(void); +void pr_09(void); +void pr_10(void); +void pr_11(void); +void pr_12(void); + +int main(void) { +// sqaure3(); + +// sum(); + +// checking(); + +// ex_14(); + + pr_11(); + + return 0; +} + +// ################################## // + +// GCD, Euclid algorithm +int gcd(int n, int d) { + int remainder; + + while (d != 0) { + remainder = n % d; + n = d; + d = remainder; + } + + return n; +} + +// ################################## // + + +void sqaure(void) { + int i, n; + + printf("This program prints a table of squares.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + i = 1; + while (i <= n) { + printf("%10d%10d\n", i, i * i); + i++; + } +} + +void sum(void) { + int n, sum = 0; + + printf("This program prints a series of integers.\n"); + printf("Enter integers (0 to terminate): "); + scanf("%d", &n); + + while (n != 0) { + sum += n; + scanf("%d", &n); + } + + printf("The sum is: %d\n", sum); +} + +// Calculates the numbers of digits in an integer +void numdigits(void) { + int digits = 0, n; + + printf("Enter a nonnegative integer: "); + scanf("%d", &n); + + do { + n /= 10; + digits++; + } while (n > 0); + + +} + +// Squares using for +void square2(void) { + int i, n; + + printf("This program prints a table of squares.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + for (i = 1; i <= n; i++) { + printf("%10d%10d\n", i, i * i); + } +} + +// Squares using odd method +void sqaure3(void) { + int i, n, odd, square; + + printf("This program prints a table of squares.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + i = 1; + odd = 3; + for (square = 1; i <= n; odd += 2) { + printf("%10d%10d\n", i, square); + ++i; + square += odd; + } +} + +// Balances a checkbook +void checking(void) { + int cmd; + float balance = 0.0f, credit, debit; + + printf("*** ACME checkbook-balancing program ***\n"); + printf("Commands: 0=clear, 1=credit, 2=debit "); + printf("3=balance, 4=exit\n\n"); + + for(;;) { + printf("Enter command: "); + scanf("%d", &cmd); + switch (cmd) { + case 0: + balance = 0.0f; + break; + case 1: + printf("Enter amount of credit: "); + scanf("%f", &credit); + balance += credit; + break; + case 2: + printf("Enter amount of debit: "); + scanf("%f", &debit); + balance -= debit; + break; + case 3: + printf("Current balance: $%.f\n", balance); + break; + case 4: + return; + default: + printf("Commands: 0=clear, 1=credit, 2=debit "); + printf("3=balance, 4=exit\n\n"); + break; + } + } +} + +// EXERCISES +void ex_01(void) { + int i = 1; + while (i <= 128) { + printf("%d ", i); + i *= 2; + } + printf("\n\n\n"); +} + +void ex_02(void) { + int i = 9384; + do { + printf("%d ", i); + i /= 10; + } while (i > 0); + printf("\n\n\n"); +} + +void ex_03(void) { + int i, j; + for (i = 5, j = i - 1; i > 0, j > 0; --i, j = i - 1) + printf("%d ", i); + printf("\n\n\n"); +} + +void ex_04(void) { + + int i; + + for (i = 0; i < 10; i++) + printf("%d ", i); + printf("\n"); + + for (i = 0; i < 10; ++i) + printf("%d ", i); + printf("\n"); + + for (i = 0; i++ < 10;) // THIS IS DIFFERENT + printf("%d ", i); + printf("\n"); + + printf("\n\n\n"); +} + +void ex_05(void) { + // THIRD is not EQ +} + +void ex_06(void) { + int i; + + for (i = 1; i <= 128; i *= 2) + printf("%d ", i); + + printf("\n\n\n"); +} + +void ex_07(void) { + int i; + + for (i = 9384; i > 0; i /= 10) + printf("%d ", i); + + printf("\n\n\n"); +} + +void ex_08(void) { + int i; + + for (i = 10; i >= 1; i /= 2) + printf("%d ", i++); +} + +void ex_09(void) { + int i = 10; + + while (i >= 1) { + printf("%d ", i++); + i /= 2; + } +} + +void ex_10(void) { + while (1) { +// … + continue; +// … + } + +// The equivalent code using goto would have the following appearance: + + while (1) { +// … + goto loop_end; +// … + loop_end: ; /* null statement */ + } +} + +void ex_11(void) { + int i, sum = 0; + + for (i = 0; i < 10; i++) { + if (i % 2) + continue; + sum += i; + } + printf("%d\n", sum); +} + +void ex_12(void) { + int n, d; + + printf("Enter number: "); + scanf("%d", &n); + +// for (d = 2; d < n; d++) + for (d = 2; d * d <= n; d++) + if (n % d == 0) + break; + + if (d < n) + printf("%d is divisible by %d.", n, d); + else + printf("%d is prime.", n); + +} + +void ex_13(void) { +// for (n = 0; m > 0; m /= 2, n++); +} + +void ex_14(void) { + int n = 24; + if (n % 2 == 0)//; no semicolon here + printf("%d is even\n", n); +} + +// PROJECTS +// Largest number in series +void pr_01(void) { + float n, max = 0; + + do { + printf("Enter a number: "); + scanf("%f", &n); + + if (n > max) + max = n; + } while (n > 0); + + printf("\nThe largest number was: %.2f", max); +} + +// GCD, Euclid algorithm +void pr_02(void) { + int m, n, remainder; + + printf("Enter two integers: "); + scanf("%d%d", &m, &n); + + while (n != 0) { + remainder = m % n; + m = n; + n = remainder; + } + + printf("Greatest common divisor: %d\n", m); +} + +// Reduce a fraction to lowest terms +void pr_03(void) { + int n, d, GCD; + + printf("Enter a fraction: "); + scanf("%d / %d", &n, &d); + + GCD = gcd(n, d); + n /= GCD; + d /= GCD; + + printf("In lowest terms: %d/%d\n", n, d); +} + +// Broker modified +void pr_04(void) { + float commision, value; + + while (1) { + printf("Enter value of trade: "); + scanf("%f", &value); + + if (value <= 0) + break; + + if (value < 2500.00f) + commision = 30.00f + .017f * value; + else if (value < 6250.00f) + commision = 56.00f + .0066f * value; + else if (value < 20000.00f) + commision = 76.00f + .0034f * value; + else if (value < 50000.00f) + commision = 100.00f + .0022f * value; + else if (value < 500000.00f) + commision = 155.00f + .0011f * value; + else + commision = 255.00f + .0009f * value; + + if (commision < 39.00f) + commision = 39.00f; + + printf("Commission: $%.2f\n\n", commision); + } +} + +void pr_05(void) { + int n; + + printf("Enter number: "); + scanf("%d", &n); + printf("The reversal is: "); + + do { + printf("%d", n % 10); + n /= 10; + } while (n > 0); +} + +void pr_06(void) { + int n, i; + + printf("Enter number: "); + scanf("%d", &n); + + for (i = 2; i * i <= n; i += 2) + printf("%d\n", i * i); +} + +void pr_07(void) { + int i, n, odd = 3, square = 1; + + printf("This program prints a table of squares.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + for (i = 1 ; i <= n ; ++i) { + printf ("%10d%10d\n", i, square) ; + square += odd; + odd += 2; + } +} + +void pr_08(void) { + int i, n, start_day; + + printf("Enter number of days in month: "); + scanf("%d", &n); + printf("Enter starting day of the week (1=Sun, 7=Sat): "); + scanf("%d", &start_day); + +// print any leading "blank dates" + for (i = 1; i < start_day; i++) + printf(" "); + +// now print the calendar + for (i = 1; i <= n; i++) { + printf("%3d", i); + if ((start_day + i - 1) % 7 == 0) + printf("\n"); + } +} + +void pr_09(void) { + float balance, interest, payment; + int n, i; + + printf("Enter amount of loan: "); + scanf("%f", &balance); + printf("Enter interest: "); + scanf("%f", &interest); + printf("Enter payment: "); + scanf("%f", &payment); + printf("Enter number of payments: "); + scanf("%d", &n); + +// monthly = interest / 100 / 12; + float monthly = interest / 1200; + + for (i = 1; i <= n; i++) { + balance -= payment; + balance += (balance * monthly); + printf("\nBalance remaining after %33d. payment: $%.2f", i, balance); + } +} + +void pr_10(void) { + int d1, m1, y1, d, m, y, daysFromBeginning1 = -1, tempDays; + + while (1) { + printf("Enter a date (dd/mm/yy): "); + scanf("%d/%d/%d", &d, &m, &y); + + if (d == 0 && m == 0 && y == 0) + break; + + tempDays = d + 30 * m + 365 * y; + + if (daysFromBeginning1 > tempDays || daysFromBeginning1 == -1) { + daysFromBeginning1 = tempDays; + d1 = d; + m1 = m; + y1 = y; + } + } + + printf("\n%d/%d/%d is earliest date.", d1, m1, y1); +} + +void pr_11(void) { + int n, i, j, fact; + float e = 1.0f; + + printf("Enter n: "); + scanf("%d", &n); + + for (i = 1; i <= n; i++) { + for (j = 1, fact = 1; j <= i; j++) + fact *= j; + e += 1 / (float)fact; + } + + printf("The e after %d aproximations is %f.", n, e); +} + +void pr_12(void) { +// ??? +} diff --git a/07_Basic_Types/Debug/makefile b/07_Basic_Types/Debug/makefile new file mode 100644 index 0000000..9b215aa --- /dev/null +++ b/07_Basic_Types/Debug/makefile @@ -0,0 +1,43 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 07_Basic_Types + +# Tool invocations +07_Basic_Types: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "07_Basic_Types" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 07_Basic_Types + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/07_Basic_Types/main.c b/07_Basic_Types/main.c new file mode 100644 index 0000000..8aa874f --- /dev/null +++ b/07_Basic_Types/main.c @@ -0,0 +1,637 @@ +/* CHAPTER 7 */ + +#include +#include +#include + +void sum2(void); +void lenght(void); +void sum2(void); +void ex_01(void); +void ex_02(void); +void ex_03(void); +void ex_04(void); +void ex_05(void); +void ex_06(void); +void ex_07(void); +void ex_08(void); +void ex_09(void); +void ex_10(void); +void ex_11(void); +void ex_12(void); +void ex_13(void); +void ex_14(void); +void ex_15(void); +void pr_01(void); +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); +void pr_07(void); +void pr_08(void); +void pr_09(void); +void pr_10(void); +void pr_11(void); +void pr_12(void); +void pr_13(void); +void pr_14(void); +void pr_15(void); + + +int main(void) { +// lenght(); + + pr_15(); + + return 0; +} + + +// Sums series of numbers (using long variables) +void sum2(void) { + long n, sum = 0; + + printf("This program prints a series of integers.\n"); + printf("Enter integers (0 to terminate): "); + scanf("%ld", &n); + + while (n != 0) { + sum += n; + scanf("%ld", &n); + } + + printf("The sum is: %ld\n", sum); +} + +// Number of characters +void lenght(void) { + char ch; + int len = 0; + + printf("Enter a message: "); + ch = getchar(); + while (ch != '\n') { + len++; + ch = getchar(); + } + + printf("Your message was %d characters(s) long.\n", len); +} + +// Number of characters easier version +void lenght2(void) { + int len = 0; + + printf("Enter a message: "); + while (getchar() != '\n') + len++; + + printf("Your message was %d characters(s) long.\n", len); +} + +// EXERCISES // +void ex_01(void) { + int i; + + i = 077; + printf("%d\n", i); + + i = 0x77; + printf("%d\n", i); + + i = 0XABC; + printf("%d\n", i); + +} + +void ex_02(void) { + float a = 010E2; + float b = 32.1E+5; +// int c = 0790; +// int d = 100_000; + float e = 3.97e-2; +} + +void ex_03(void) { + short unsigned int sui; +// short float sf; + long double ld; + unsigned long ul; +} + +void ex_04(void) { + char c; + int i; + + i += c; + c = c * 2 - 1; + putchar(c); +// printf(c); +} + +void ex_05(void) { + int i; + + i = 'A': + printf("%d\n", i); + + i = 0b1000001; + printf("%d\n", i); + + i = 0101; + printf("%d\n", i); + + i = 0b1000001; + printf("%d\n", i); +} + +void ex_06(void) { + char a = 31; + short b = 365; + short c = 1440; + int d = 86400; +} + +void ex_07(void) { +// \b = \10 +// \t = \11 +// \n = \12 +// \r = \15 +} + +void ex_08(void) { + +// \b = \x08 +// \t = \x09 +// \n = \x0a +// \r = \x0d +} + +void ex_09(void) { + + +// i / j + 'a': // will be int +} + +void ex_10(void) { + // unsigned int, because the (int) cast applies only to j, not j * k. +} + +void ex_11(void) { + // int * float / double will be double +} + +void ex_12(void) { + // The value of i is converted to float and added to f, + // then the result is converted to double and stored in d. +} + +void ex_13(void) { + char c = '\1': + short s = 2; + int i = -3; + long l = 5; + float f = 6.5f; + double d = 7.5f; + +// c * i = int; +// s + l = long; +// f / c = float; +// d / s = double; +// f - d = float; +// int (f) = int; +} + +void ex_14(void) { +// Converting f to int will fail +// if the value stored in f exceeds the largest value of type int. + float f, frac = f - (int)f; +} + +void ex_15(void) { + // DUNNO how to determine it, use instead +} + + +// PROJECTS // + +// square2 modified +void pr_01(void) { + int i, n, offset = 1; + short s; + long l; + + printf("This program prints a table of squares.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + printf(" n s i l\n"); + printf("--------------------------------------------------\n"); + for (s = offset, i = offset, l = offset; i <= n + offset; s++, i++, l++) + printf("%11d%7hd%12d%20ld\n", i, s * s, i * i, l * l); + + // short will end at 181, giving 32761 + // int will end at 46340, giving 2147395600 + // long will end at JAVA HEAP ERROR... + +} + +// square2 modified +void pr_02(void) { + int i, n; + short s; + long l; + + printf("This program prints a table of squares.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + printf(" n s i l\n"); + printf("--------------------------------------------------\n"); + for (s = 0, i = 0, l = 0; + i <= n; + s++, i++, l++) { + printf("%11d%7hd%12d%20ld\n", i, s * s, i * i, l * l); + if ((i % 24) == 0) + getchar(); + } + +} + +// sum2 modified +void pr_03(void) { + double n, sum = 0; + + printf("This program prints a series of fractions (in decimal).\n"); + printf("Enter numbers (0 to terminate): "); + scanf("%lf", &n); + + while (n != 0) { + sum += n; + scanf("%lf", &n); + } + + printf("The sum is: %lf\n", sum); +} + +// Telephone number from letters +void pr_04(void) { + char ch; + + printf("Enter phone number: "); + ch = getchar(); + while (ch != '\n') { + switch (ch) { + case 'A': case 'B': case 'C': + printf("%d", 2); break; + case 'D': case 'E': case 'F': + printf("%d", 3); break; + case 'G': case 'H': case 'I': + printf("%d", 4); break; + case 'J': case 'K': case 'L': + printf("%d", 5); break; + case 'M': case 'N': case 'O': + printf("%d", 6); break; + case 'P': case 'Q': case 'R': case 'S': + printf("%d", 7); break; + case 'T': case 'U': case 'V': + printf("%d", 8); break; + case 'W': case 'X': case 'Y': case 'Z': + printf("%d", 9); break; + default: + printf("%c", ch); break; + } + ch = getchar(); + } +} + +// Scrabble +void pr_05(void) { + int sum = 0; + char ch; + + printf("Enter a word: "); + + while ((ch = getchar()) != '\n') + switch (toupper(ch)) { + case 'D': case 'G': + sum += 2; break; + case 'B': case 'C': case 'M': case 'P': + sum += 3; break; + case 'F': case 'H': case 'V': case 'W': case 'Y': + sum += 4; break; + case 'K': + sum += 5; break; + case 'J': case 'X': + sum += 8; break; + case 'Q': case 'Z': + sum += 10; break; + default: + sum++; break; + } + + printf("Scrabble value: %d\n", sum); +} + +// size of all types +void pr_06(void) { + printf("Size of int: %zu\n", sizeof(int)); + printf("Size of short: %zu\n", sizeof(short)); + printf("Size of long: %zu\n", sizeof(long)); + printf("Size of float: %zu\n", sizeof(float)); + printf("Size of double: %zu\n", sizeof(double)); + printf("Size of long double: %zu\n", sizeof(long double)); +} + +// Fraction computation +void pr_07(void) { + int num1, denom1, num2, denom2, result_num, result_denom; + char operator; + + printf("Enter two fractions separated by a operator: "); + scanf("%d / %d %1c %d / %d", &num1, &denom1, &operator, &num2, &denom2); + + switch (operator) { + case '+': + result_num = num1 * denom2 + num2 * denom1; + result_denom = denom1 * denom2; + break; + case '-': + result_num = num1 * denom2 - num2 * denom1; + result_denom = denom1 * denom2; + break; + case '*': + result_num = num1 * num2; + result_denom = denom1 * denom2; + break; + case '/': + result_num = num1 * denom2; + result_denom = num2 * denom1; + break; + } + + printf("The result is %d/%d\n", result_num, result_denom); +} + +// Flight departments modified +void pr_08(void) { + int hh, mm, entered, closestToken = 0, + closestDistance, distance; + char s1; + + printf("Enter a 12-hour time: "); + scanf("%2d:%2d %1c", &hh, &mm, &s1); + + if (toupper(s1) == 'P') { + hh += 12; + } + + + entered = hh * 60 + mm; + + distance = 480 - entered; + distance = distance >= 0 ? distance : -distance; + closestDistance = distance; + closestToken = 480; + + distance = 583 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 583; + } + + distance = 679 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 679; + } + + distance = 767- entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 767; + } + + distance = 840 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 840; + } + + distance = 945 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 945; + } + + distance = 1140 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 1140; + } + + distance = 1305 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 1305; + } + + switch (closestToken) { + case 480: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + 8, 0, 10, 16); break; + case 583: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + 9, 43, 11, 52); break; + case 679: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d p.m.", + 11, 19, 1, 31); break; + case 767: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 12, 47, 3, 0); break; + case 840: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 2, 0, 4, 8); break; + case 945: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 3, 45, 5, 55); break; + case 1140: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 7, 0, 9, 20); break; + case 1305: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 9, 45, 11, 58); break; + } +} + +void pr_09(void) { + int hh, mm; + char s1; + + printf("Enter a 12-hour time: "); + scanf("%2d:%2d %1c", &hh, &mm, &s1); + + if (toupper(s1) == 'P') { + hh += 12; + } + + printf("Equivalent 24-hour time: %d:%.2d", hh, mm); +} + +void pr_10(void) { + int vowels = 0; + char ch; + + printf("Enter a sentence: "); + ch = getchar(); + while (ch != '\n') { + if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') + vowels++; + ch = getchar(); + } + printf("Your sentence contains 6 vowels."); +} + +void pr_11(void) { + char first, temp; + + printf("Enter a first and last name: "); +// find first nonblank character + while ((first = getchar()) == ' ') + ; +// skip spaces + while (getchar() != ' ') + ; +// find first nonblank character + while ((temp = getchar()) == ' ') + ; + + while (temp != ' ' && temp != '\n') { + putchar(temp); + temp = getchar(); + } + printf(", %c.", first); +} + +void pr_12(void) { + int i = 1; + float result, frac = 1.0f; + char ch, lastOperand = '+'; + + printf("Enter an expression: "); + while ((ch = getchar()) != '\n') { + switch (ch) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + switch (lastOperand) { + case '+': + result += (ch - '0') * (frac / i); + break; + case '-': + result -= (ch - '0') * (frac / i); + break; + case '*': + result *= (ch - '0') * (frac / i); + break; + case '/': + result /= (ch - '0') * (frac / i); + break; + } + i = 10; + break; + case '+': case '-': case '/': case '*': + lastOperand = ch; + frac = 1.0f; + i = 1; + break; + case '.': + frac = 0.1f; + i = 1; + break; + } + + } + printf("Value of expression: %g", result); +} + +void pr_13(void) { + char ch; + int words = 1; + float len = 0; + + printf("Enter a sentence: "); + ch = getchar(); + while (ch != '\n') { + if (ch == ' ') + words++; + else + len++; + ch = getchar(); + } + + printf("Avrage word lenght: %.1f", len / words); +} + +void pr_14(void) { +// y is initial guess + double root, x, y = 1; + + printf("Enter a positive number: "); + scanf("%lf", &x); + + do { +// also the new value of y + root = (y + (x / y)) / 2; + } while ((fabs(y - root) >= root * 0.00001) && (y = root)); + + printf("Square root: %g", root); +} + + +// Testing what maximum factorial can be storen in what type +void pr_15(void) { + int i = 1, n, c; + short s = 1; + long l = 1L; + long long ll = 1LL; + float f = 1.0f; + double d = 1; + long double ld = 1.0L; + + printf("This program prints a table of factorials.\n"); + printf("Enter number of entries in table: "); + scanf("%d", &n); + + printf(" n s i l ll\n"); + printf("-------------------------------------------------------------------------------------------\n"); + for (c = 1; c <= n; c++) { + printf("%5d", c); + s *= (short)c; + i *= (int)c; + l *= (long)c; + ll *= (long long)c; + f *= (float)c; + d *= (double)c; + ld *= (long double)c; +// printf("%8hd%14d%24ld%24lld%15f\n", s, i, l, ll, f); + printf("%50f%30g\n", f, d); + printf("%30Lg\n", ld); + } + + // short will end at 7, giving 5040 + // int will end at 12, giving 479001600 + // long will end at 20, giving 2432902008176640000 + // long long end at 20, giving 2432902008176640000 + // float will end at 34, giving 295232822996533287161359432338880069632 + // double will end at 170, giving 7.25742e+306 (f*cking long number) + // long double end at 1754, giving 1.97926e+4930 ( !? ) + +} diff --git a/08_Arrays/Debug/makefile b/08_Arrays/Debug/makefile new file mode 100644 index 0000000..cfcc60a --- /dev/null +++ b/08_Arrays/Debug/makefile @@ -0,0 +1,43 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 08_Arrays + +# Tool invocations +08_Arrays: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "08_Arrays" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 08_Arrays + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/08_Arrays/main.c b/08_Arrays/main.c new file mode 100644 index 0000000..519f83b --- /dev/null +++ b/08_Arrays/main.c @@ -0,0 +1,834 @@ +#include +#include +#include +#include +#include + +#define N 10 + +#define NUM_RATES ((int) (sizeof(value) / sizeof(value[0]))) +#define INITIAL_BALANCE 100.00 + +#define NUM_SUITS 4 +#define NUM_RANKS 13 + +#define SIZE ((int) (sizeof(a) / sizeof(a[0]))) + +#define FIBONACCI_LENGHT 40 + +#define MAX_LENGHT 255 + +#define NUM_QUIZZES 5 +#define NUM_STUDENTS 5 + +#define MAP_WIDTH 10 +#define MAP_HEIGHT 10 + +void reverse(void); +void repdigit(void); +void deal(void); +void interest(void); +void reverse2(void); +void ex_01(void); +void ex_02(void); +void ex_03(void); +void ex_04(void); +void ex_05(void); +void ex_06(void); +void ex_07(void); +void ex_08(void); +void ex_09(void); +void ex_10(void); +void ex_11(void); +void pr_01(void); +void pr_02(void); +void pr_03(void); +void pr_04(void); +void pr_05(void); +void pr_06(void); +void pr_07(void); +void pr_08(void); +void pr_09(void); +void pr_10(void); +void pr_11(void); +void pr_12(void); +void pr_13(void); +void pr_14(void); +void pr_15(void); +void pr_16(void); +void pr_17(void); + +int main(void) { +// interest(); + +// ex_11(); + + pr_17(); + + + return (0); +} + + +// Reverses a series of number +void reverse(void) { + int a[N], i; + + printf("Enter %d numbers: ", N); + for (i = 0; i < SIZE; i++) + scanf("%d", &a[i]); + + printf("In reverse order: "); + for (i = SIZE - 1; i >= 0; i--) + printf(" %d", a[i]); + printf("\n"); +} + +void interest(void) { + int i, low_rate, num_years, year; + double value[5]; + + printf("Enter interest rate: "); + scanf("%d", &low_rate); + printf("Enter number of years: "); + scanf("%d", &num_years); + + printf("\nYears: "); + for (i = 0; i < NUM_RATES; i++) { + printf("%6d%%", low_rate + i); + value[i] = INITIAL_BALANCE; + } + printf("\n"); + + for (year = 1; year <= num_years; year++) { + printf("%3d ", year); + for (i = 0; i < NUM_RATES; i++) { + value[i] += (low_rate + i) / 100.0 * value[i]; + printf("%7.2f", value[i]); + } + printf("\n"); + } +} + +void repdigit(void) { + bool digit_seen[10] = {false}; + int digit; + long n; + + printf("Enter number: "); + scanf("%ld", &n); + + while (n > 0) { + digit = n % 10; + if (digit_seen[digit]) + break; + digit_seen[digit] = true; + n /= 10; + } + + if (n > 0) + printf("Repeated digit\n"); + else + printf("No repeated digit\n"); +} + +void deal(void) { + bool in_hand[NUM_SUITS][NUM_RANKS] = {false}; + int num_cards, rank, suit; + const char rank_code[] = {'2', '3', '4', '5', '6', '7', '8', '9', 'n', 'v', 'd', 'k', 'e'}; + const char suit_code[] = {'G', 'P', 'T', 'L'}; + + srand((unsigned) time(NULL)); + + printf("ENter number of cards: "); + scanf("%d", &num_cards); + + printf("In hand: "); + while (num_cards > 0) { + suit = rand() % NUM_SUITS; + rank = rand() % NUM_RANKS; + if (!in_hand[suit][rank]) { + in_hand[suit][rank] = true; + num_cards--; + printf(" %c%c", rank_code[rank], suit_code[suit]); + } + } + printf("\n"); + +} + +void reverse2(void) { + int i, n; + + printf("How many numbers you want to reverse?: "); + scanf("%d", &n); + + int a[n]; + + printf("Enter %d numbers: ", n); + for (i = 0; i < SIZE; i++) { + scanf("%d", &a[i]); + } + + printf("In reverse order: "); + for (i = n - 1; i >= 0; i--) { + printf(" %d", a[i]); + } + printf("\n"); +} + +// EXERCISES // +void ex_01(void) { +// The problem with sizeof(a) / sizeof(t) is that it can't easily be checked +// for correctness by someone reading the program. (The reader would have to +// locate the declaration of a and make sure that its elements have type t.) +} + +void ex_02(void) { + int digit = 5, array[digit - '0']; +} + +void ex_03(void) { + bool wekend[7] = {1, 0, 0, 0, 0, 0, 1}; +} + +void ex_04(void) { + bool wekend[7] = {[0] = 1, [6] = 1}; +} + +// Fibonacci numbers +void ex_05(void) { + int i, fib_numbers[FIBONACCI_LENGHT] = {[1] = 1}; + + printf("First %d Fibonacci numbers are: \n0, 1, ", FIBONACCI_LENGHT); + for (i = 2; i < FIBONACCI_LENGHT; i++) { + fib_numbers[i] = fib_numbers[i - 2] + fib_numbers[i - 1]; + printf("%d, ", fib_numbers[i]); + } +} + +// 7-segment display array initializer +void ex_06(void) { + const int segments[10][7] = { + {1, 1, 1, 1, 1, 1, 0}, + {0, 1, 1, 0, 0, 0, 0}, + {1, 1, 0, 1, 1, 0, 1}, + {1, 1, 1, 1, 0, 0, 1}, + {0, 1, 1, 0, 0, 1, 1}, + {1, 0, 1, 1, 0, 1, 1}, + {1, 0, 1, 1, 1, 1, 1}, + {1, 1, 1, 0, 0, 0, 0}, + {1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 0, 1, 1} + }; +} + +// 7-segment display array initializer shrinked +void ex_07(void) { + const int segments[10][7] = { + {1, 1, 1, 1, 1, 1}, + {0, 1, 1, 0, 0, 0, 0}, + {1, 1, 0, 1, 1, 0, 1}, + {1, 1, 1, 1, 0, 0, 1}, + {0, 1, 1, 0, 0, 1, 1}, + {1, 0, 1, 1, 0, 1, 1}, + {1, 0, 1, 1, 1, 1, 1}, + {1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 0, 1, 1} + }; +} + +void ex_08(void) { + float temperature_readings[30][24]; +} + +// Average temperature +void ex_09(void) { + float avg, sum_hours = 0, sum_days = 0, temperature_readings[30][24]; + int i, j; + + for (i = 0; i < 30; i++) { + for (j = 0; j < 24; j++) { + sum_hours += temperature_readings[i][j]; + } + sum_days += sum_hours / 24; + } + avg = sum_days / 30; +} + +// CHess board +void ex_10(void) { + char chess_board[8][8] = { + {'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'}, + {'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'}, + {' ', '.', ' ', '.', ' ', '.', ' ', '.'}, + {'.', ' ', '.', ' ', '.', ' ', '.', ' '}, + {' ', '.', ' ', '.', ' ', '.', ' ', '.'}, + {'.', ' ', '.', ' ', '.', ' ', '.', ' '}, + {'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'}, + {'R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'}, + }; +} + +// Checker board +void ex_11(void) { + char checker_board[8][8]; + int i, j; + + for (i = 0; i < 8; i++) { + for (j = 0; j < 8; j++) { + checker_board[i][j] = (i + j) % 2 == 0 ? 'B' : 'R'; + printf("%c ", checker_board[i][j]); + } + printf("\n"); + } +} + +// PROJECTS // +// repdigit modified +void pr_01(void) { + bool digit_seen[10] = {false}; + int digit, i; + long n; + + printf("Enter number: "); + scanf("%ld", &n); + + while (n > 0) { + digit = n % 10; + if (digit_seen[digit]) + break; + digit_seen[digit] = true; + n /= 10; + } + + if (n > 0) { + printf("Repeated digit(s): "); + for (i = 0; i < 10; i++) + if (digit_seen[i]) + printf("%d ", i); + } + else + printf("No repeated digit\n"); +} + +// repdigit modified again +void pr_02(void) { + short digit_seen[10] = {0}; + int digit, i; + long n; + + printf("Enter number: "); + scanf("%ld", &n); + + while (n > 0) { + digit = n % 10; + digit_seen[digit]++; + n /= 10; + } + + printf("Digit:\t\t "); + for (i = 0; i < 10; i++) + printf("%3d", i); + + printf("\nOccurences:\t "); + for (i = 0; i < 10; i++) + printf("%3d", digit_seen[i]); +} + +// repdigit modified again +void pr_03(void) { + short i, digit_seen[10] = {false}; + long n; + + while (1) { + printf("Enter number: "); + scanf("%ld", &n); + +// 0 terminates + if (n == 0) + break; + + while (n > 0) { + digit_seen[n % 10]++; + n /= 10; + } + + printf("Digit:\t\t "); + for (i = 0; i < 10; i++) + printf("%3d", i); + + printf("\nOccurences:\t "); + for (i = 0; i < 10; i++) + printf("%3d", digit_seen[i]); + + printf("\n\n"); + +// Reset the array + for (i = 0; i < 10; i++) + digit_seen[i] = false; + } +} + +// reverse modified +void pr_04(void) { + int a[N], i; + + printf("Enter %d numbers: ", N); + for (i = 0; i < N; i++) + scanf("%d", &a[i]); + + printf("In reverse order: "); + for (i = N - 1; i >= 0; i--) + printf(" %d", a[i]); + printf("\n"); +} + +// Interest modified +void pr_05(void) { + int i, j, low_rate, num_years, year; + double value[5]; + + printf("Enter interest rate: "); + scanf("%d", &low_rate); + printf("Enter number of years: "); + scanf("%d", &num_years); + + printf("\nYears: "); + for (i = 0; i < NUM_RATES; i++) { + printf("%6d%%", low_rate + i); + value[i] = INITIAL_BALANCE; + } + printf("\n"); + + for (year = 1; year <= num_years; year++) { + printf("%3d ", year); + for (i = 0; i < NUM_RATES; i++) { + for (j = 0; j < 12; j++) + value[i] += (low_rate + i) / 100.0 * value[i]; + printf("%7.2f", value[i]); + } + printf("\n"); + } +} + +void pr_06(void) { + char a[MAX_LENGHT], ch; + int i, j = 0, r; + + printf("Enter message: "); + while (1) { + if ((a[j] = getchar()) == '\n') + break; + j++; + } + + printf("In B1FF-speak: "); + for (i = 0; i < j; i++) { + a[i] = toupper(a[i]); + switch (a[i]) { + case 'A': + a[i] = '4'; break; + case 'B': + a[i] = '8'; break; + case 'E': + a[i] = '3'; break; + case 'I': + a[i] = '1'; break; + case 'O': + a[i] = '0'; break; + case 'S': + a[i] = '5'; break; + } + printf("%c", a[i]); + } + +// Get some random number bw 8 and 12 + srand((unsigned) time(NULL)); + r = (rand() % 5) + 8; + for (i = 0; i < r; i++) + printf("!"); +} + + +// 5x5 matrix sum calculator +void pr_07(void) { + int i, j, sum, matrix[5][5]; + + for (i = 0; i < 5; i++) { + printf("Enter row %d: ", i + 1); + scanf("%d %d %d %d %d", &matrix[i][0], &matrix[i][1], + &matrix[i][2], &matrix[i][3], &matrix[i][4]); + } + + printf("\nRow totals: "); + for (i = 0; i < 5; i++) { + sum = 0; + for (j = 0; j < 5; j++) + sum += matrix[i][j]; + printf("%d ", sum); + } + + printf("\nColumn totals: "); + for (i = 0; i < 5; i++) { + sum = 0; + for (j = 0; j < 5; j++) + sum += matrix[j][i]; + printf("%d ", sum); + } + +} + +//5x5 matrix sum calculator student/ quizes +void pr_08(void) { + + int grades[NUM_STUDENTS][NUM_QUIZZES]; + int high, low, quiz, student, total; + + for (student = 0; student < NUM_STUDENTS; student++) { + printf("Enter grades for student %d: ", student + 1); + for (quiz = 0; quiz < NUM_QUIZZES; quiz++) + scanf("%d", &grades[student][quiz]); + } + + printf("\nStudent Total Average\n"); + for (student = 0; student < NUM_STUDENTS; student++) { + printf("%4d ", student + 1); + total = 0; + for (quiz = 0; quiz < NUM_QUIZZES; quiz++) + total += grades[student][quiz]; + printf("%3d %3d\n", total, total / NUM_QUIZZES); + } + + printf("\nQuiz Average High Low\n"); + for (quiz = 0; quiz < NUM_QUIZZES; quiz++) { + printf("%3d ", quiz + 1); + total = 0; + high = 0; + low = 100; + for (student = 0; student < NUM_STUDENTS; student++) { + total += grades[student][quiz]; + if (grades[student][quiz] > high) + high = grades[student][quiz]; + if (grades[student][quiz] < low) + low = grades[student][quiz]; + } + printf("%3d %3d %3d\n", total / NUM_STUDENTS, high, low); + } + +} + +// Map walk +void pr_09(void) { + char ch, map[MAP_WIDTH][MAP_HEIGHT] = {{0}}; + int i, x, y, direction; + bool usedDirection[4] = {false}; + + srand((unsigned) time(NULL)); + + x = 0; + y = 0; + // map[x][y] = ch; + // 65 is 'A', 90 is 'Z' + for (ch = 'A'; ch <= 'Z'; ch++) { + map[x][y] = ch; + +// Reset directions + for (i = 0; i < 4; i++) + usedDirection[i] = false; + + while (1) { + direction = (rand() % 4); + usedDirection[direction] = true; + + if(direction == 0 && (y + 1) < MAP_HEIGHT && !map[x][y + 1]) + break; + if(direction == 1 && (x + 1) < MAP_WIDTH && !map[x + 1][y]) + break; + if(direction == 2 && (y - 1) >= 0 && !map[x][y - 1]) + break; + if(direction == 3 && (x - 1) >= 0 && !map[x - 1][y]) + break; + +// ALl directions are used and we still dont have a path + if (usedDirection[0] && usedDirection[1] && + usedDirection[2] && usedDirection[3]) + goto terminate; + + } + + switch (direction) { + case 0: + y++; + break; + case 1: + x++; + break; + case 2: + y--; + break; + case 3: + x--; + break; + } + + } + + terminate: + for (y = 0; y < MAP_WIDTH; y++) { + for (x = 0; x < MAP_WIDTH; x++) { + if (map[x][y]) + printf("%c ", map[x][y]); + else + printf(". "); + } + printf("\n"); + } +} + +// Departure times modified +void pr_10(void) { + int i, hh, mm, entered, closestToken = 0, + closestDistance, distance; + + int a[] = {480, 583, 679, 767, 840, 945, 1140, 1305}; + int departure[] = {616, 712, 811, 900, 968, 1075, 1280, 1438}; + + printf("Enter a 24-hour time: "); + scanf("%2d:%2d", &hh, &mm); + + entered = hh * 60 + mm; +// 60 min * 24 hour + distance = 1440; + for (i = 0; i < SIZE; i++) { + distance = abs(a[i] - entered); + if (distance < closestDistance) { + closestDistance = distance; + closestToken = i; + } + } + + printf("Closest departure time is %2d:%.2d., arriving at %2d:%.2d.", + a[closestToken] / 60, a[closestToken] % 60, + departure[closestToken] / 60, departure[closestToken] / 60); + +} + +// Phone text number to digits +void pr_11(void) { + char ch, number[15]; + int i; + + printf("Enter phone number: "); + for (i = 0; i < 15 && (ch = getchar()) != '\n'; i++) + number[i] = ch; + + printf("In numeric form: "); + for (i = 0; i < 15; i++) { + switch (number[i]) { + case 'A': case 'B': case 'C': + printf("%d", 2); break; + case 'D': case 'E': case 'F': + printf("%d", 3); break; + case 'G': case 'H': case 'I': + printf("%d", 4); break; + case 'J': case 'K': case 'L': + printf("%d", 5); break; + case 'M': case 'N': case 'O': + printf("%d", 6); break; + case 'P': case 'Q': case 'R': case 'S': + printf("%d", 7); break; + case 'T': case 'U': case 'V': + printf("%d", 8); break; + case 'W': case 'X': case 'Y': case 'Z': + printf("%d", 9); break; + default: + printf("%c", number[i]); break; + } + } +} + +// Scrabble modified +void pr_12(void) { + int sum = 0; + char ch; + const char score[26] = {1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, // L + 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 3, 8, 4, 10}; + + printf("Enter a word: "); + + while ((ch = getchar()) != '\n') { + ch = toupper(ch); + sum += score[ch - 65]; + } + + printf("Scrabble value: %d\n", sum); +} + +// Name input modified +void pr_13(void) { + char first, temp, surname[20]; + int i, j; + + printf("Enter a first and last name: "); +// find first nonblank character + while ((first = getchar()) == ' ') + ; +// skip spaces + while (getchar() != ' ') + ; +// find first nonblank character + while ((surname[0] = getchar()) == ' ') + ; + + for (i = 1; i < 20; i++) { + temp = getchar(); + if (temp == ' ' || temp == '\n') + break; + surname[i] = temp; + } + + printf("You entered the name: "); + for (j = 0; j < i; j++) { + printf("%c", surname[j]); + } + + printf(", %c.", first); +} + +// Reverse words in sentence +void pr_14(void) { + char ch, sentence[50], terminating; + int i, j, k; + + printf("Enter a sentence: "); + i = 0; + +// Insert words into array + ch = getchar(); + while (ch != '.' && ch != '!' && ch != '?') { + sentence[i++] = ch; + ch = getchar(); + } +// Terminating character into separate one + terminating = ch; + + printf("Reversal of sentence:"); +// Some fancy algorithms going back and forth over the words + for (j = i - 1; j >=0; j--) { + if (sentence[j - 1] != ' ' && j > 0) + continue; + putchar(' '); + for (k = j; k < i; k++) { + putchar(sentence[k]); + } + i = j - 1; + } + putchar(terminating); + +} + +// Caesar cipher +void pr_15(void) { + char ch, message[80]; + short i, shift; + + printf("Enter message to be encrypted: "); + i = 0; + while ((ch = getchar()) != '\n') + message[i++] = ch; + + printf("Enter shift amount: "); + while ((ch = getchar()) != '\n') + shift = shift * 10 + ch - '0'; + + printf("Encrypted message: "); + for (i = 0; i < 80; i++) { + if (message[i] >= 'A' && message[i] <= 'Z') + putchar(((message[i] - 'A') + shift) %26 + 'A'); + else if (message[i] >= 'a' && message[i] <= 'z') + putchar(((message[i] - 'a') + shift) %26 + 'a'); + else + putchar(message[i]); + } + +} + +// Anagrams +void pr_16(void) { + char ch, contain[26] = {0}; + short i; + + printf("Enter first word: "); + i = 0; + while ((ch = getchar()) != '\n') { + if (isalpha(ch)) + contain[toupper(ch) - 'A']++; + i++; + } + + printf("Enter second word: "); + i = 0; + while ((ch = getchar()) != '\n') { + if (isalpha(ch)) + contain[toupper(ch) - 'A']--; + i++; + } + + for (i = 0; i < 26; i++) { + if (contain[i] != 0) + break; + } + + if (i == 26) + printf("The words are anagrams."); + else + printf("The words are not anagrams."); +} + +// Magic square generator +void pr_17(void) { + short n = 0, r, c, i, prevr, prevc; + + printf("Magic square of specified size.\n"); + + while (n % 2 != 1) { + printf("Enter odd number between 1 and 99: "); + scanf("%2hd", &n); + } + + short square[n][n]; + for (r = 0; r < n; r++) + for (c = 0; c < n; c++) + square[r][c] = 0; + +// Put 1 into first row, middle column + r = prevr = 0; + c = prevc = n / 2; + i = 1; + do { +// Wrap over row + if (r == -1) + r = n - 1; +// Wrap over column + if (c == n) + c = 0; +// If element already occupied, put new right below previous placed + if (square[r][c] != 0) { + r = prevr + 1; + c = prevc; + } + prevr = r; + prevc = c; +// Move one row up and to to the next column + square[r--][c++] = i++; + } while (i <= (n * n)); + + for (r = 0; r < n; r++) { + for (c = 0; c < n; c++) { + printf("%4hd", square[r][c]); + } + printf("\n"); + } +} diff --git a/09_Functions/Debug/Examples/countdown/subdir.mk b/09_Functions/Debug/Examples/countdown/subdir.mk new file mode 100644 index 0000000..67a138b --- /dev/null +++ b/09_Functions/Debug/Examples/countdown/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Examples/countdown/main.c + +OBJS += \ +./Examples/countdown/main.o + +C_DEPS += \ +./Examples/countdown/main.d + + +# Each subdirectory must supply rules for building sources it contributes +Examples/countdown/%.o: ../Examples/countdown/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/Examples/subdir.mk b/09_Functions/Debug/Examples/subdir.mk new file mode 100644 index 0000000..5227db7 --- /dev/null +++ b/09_Functions/Debug/Examples/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Examples/prime.c + +OBJS += \ +./Examples/prime.o + +C_DEPS += \ +./Examples/prime.d + + +# Each subdirectory must supply rules for building sources it contributes +Examples/%.o: ../Examples/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/Exercises/subdir.mk b/09_Functions/Debug/Exercises/subdir.mk new file mode 100644 index 0000000..68a8e81 --- /dev/null +++ b/09_Functions/Debug/Exercises/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Exercises/main.c + +OBJS += \ +./Exercises/main.o + +C_DEPS += \ +./Exercises/main.d + + +# Each subdirectory must supply rules for building sources it contributes +Exercises/%.o: ../Exercises/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/Program/subdir.mk b/09_Functions/Debug/Program/subdir.mk new file mode 100644 index 0000000..63edae4 --- /dev/null +++ b/09_Functions/Debug/Program/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Program/qsort.c + +OBJS += \ +./Program/qsort.o + +C_DEPS += \ +./Program/qsort.d + + +# Each subdirectory must supply rules for building sources it contributes +Program/%.o: ../Program/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/Projects/subdir.mk b/09_Functions/Debug/Projects/subdir.mk new file mode 100644 index 0000000..b9b375d --- /dev/null +++ b/09_Functions/Debug/Projects/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_08.c + +OBJS += \ +./Projects/pr_08.o + +C_DEPS += \ +./Projects/pr_08.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/%.o: ../Projects/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/average/subdir.mk b/09_Functions/Debug/average/subdir.mk new file mode 100644 index 0000000..01b234d --- /dev/null +++ b/09_Functions/Debug/average/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../average/main.c + +OBJS += \ +./average/main.o + +C_DEPS += \ +./average/main.d + + +# Each subdirectory must supply rules for building sources it contributes +average/%.o: ../average/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/countdown/subdir.mk b/09_Functions/Debug/countdown/subdir.mk new file mode 100644 index 0000000..3f102de --- /dev/null +++ b/09_Functions/Debug/countdown/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../countdown/main.c + +OBJS += \ +./countdown/main.o + +C_DEPS += \ +./countdown/main.d + + +# Each subdirectory must supply rules for building sources it contributes +countdown/%.o: ../countdown/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/09_Functions/Debug/makefile b/09_Functions/Debug/makefile new file mode 100644 index 0000000..55e824b --- /dev/null +++ b/09_Functions/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Projects/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 09_Functions + +# Tool invocations +09_Functions: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "09_Functions" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 09_Functions + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/09_Functions/Debug/sources.mk b/09_Functions/Debug/sources.mk new file mode 100644 index 0000000..979abc7 --- /dev/null +++ b/09_Functions/Debug/sources.mk @@ -0,0 +1,17 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Projects \ + diff --git a/09_Functions/Examples/average.c b/09_Functions/Examples/average.c new file mode 100644 index 0000000..0be6952 --- /dev/null +++ b/09_Functions/Examples/average.c @@ -0,0 +1,17 @@ +#include + +double average(double a, double b) { + return (a + b) / 2; +} + +int main(void) { + double x, y, z; + + printf("Enter three numbers: "); + scanf("%lf %lf %lf", &x, &y, &z); + printf("Average of %g and %g: %g\n", x, y, average(x, y)); + printf("Average of %g and %g: %g\n", y, z, average(y, z)); + printf("Average of %g and %g: %g\n", x, z, average(x, z)); + + return 0; +} diff --git a/09_Functions/Examples/countdown.c b/09_Functions/Examples/countdown.c new file mode 100644 index 0000000..582741c --- /dev/null +++ b/09_Functions/Examples/countdown.c @@ -0,0 +1,14 @@ +#include + +void print_count(int n) { + printf("T minus %d and counting\n", n); +} + +int main(void) { + int i; + + for (i = 10; i > 0; --i) + print_count(i); + + return 0; +} diff --git a/09_Functions/Examples/prime.c b/09_Functions/Examples/prime.c new file mode 100644 index 0000000..c959150 --- /dev/null +++ b/09_Functions/Examples/prime.c @@ -0,0 +1,26 @@ +#include +#include + +bool is_prime(int n) { + int divisor; + + if (n <= 1) + return false; + for (divisor = 2; divisor * divisor <= n; divisor++) + if (n % divisor == 0) + return false; + return true; +} + +int main(void) { + int n; + + printf("Enter a number: "); + scanf("%d", &n); + if (is_prime(n)) + printf("Prime\n"); + else + printf("Not prime\n"); + + return 0; +} diff --git a/09_Functions/Examples/pun2.c b/09_Functions/Examples/pun2.c new file mode 100644 index 0000000..6ad6a81 --- /dev/null +++ b/09_Functions/Examples/pun2.c @@ -0,0 +1,11 @@ +#include + +void print_pun(void) { + printf("To C, or not to C: that is the question.\n"); +} + +int main(void) { + print_punt(); + + return 0; +} diff --git a/09_Functions/Examples/qsort.c b/09_Functions/Examples/qsort.c new file mode 100644 index 0000000..dc2097d --- /dev/null +++ b/09_Functions/Examples/qsort.c @@ -0,0 +1,51 @@ +#include + +#define N 10 + +void quicksort(int a[], int low, int high); +int split(int a[], int low, int high); + +int main(void) { + int a[N], i; + + printf("Enter %d numbers to be sorted: ", N); + for (i = 0; i < N; i++) + scanf("%d", &a[i]); + + quicksort(a, 0, N - 1); + + printf("In sorted order: "); + for (i = 0; i < N; i++) + printf("%d ", a[i]); + printf("\n"); + + return 0; +} + +void quicksort(int a[], int low, int high) { + int middle; + + if (low >= high) return; + middle = split(a, low, high); + quicksort(a, low, middle - 1); + quicksort(a, middle + 1, high); +} + +int split(int a[], int low, int high) { + int part_element = a[low]; + + for(;;) { + while (low < high && part_element <= a[high]) + high--; + if (low >= high) break; + a[low++] = a[high]; + + while (low < high && a[low] <= part_element) + low++; + if (low >= high) break; + a[high--] = a[low]; + } + + a[high] = part_element; + return high; +} diff --git a/09_Functions/Exercises/main.c b/09_Functions/Exercises/main.c new file mode 100644 index 0000000..dff0dc2 --- /dev/null +++ b/09_Functions/Exercises/main.c @@ -0,0 +1,241 @@ +#include +#include +#include + + +double triangle_area(double base, double height); +int check(int x, int y, int n); +int gcd(int m, int n); +int day_of_year(int month, int day, int year); +int digit(int n, int k); +int f(int a, int b); +int largest(int a[], int n); +int average(int a[], int n); +int num_positive(int a[], int n); +float compute_GPA(char grades[], int n); +double inner_product(double a[], double b[], int n); +int evaluate_position(char board[8][8]); +bool has_zero(int a[], int n); +double median(double x, double y, double z); +int fact(int n); +int gcd_recursive(int m, int n); +void pb (int n); + + +int main(void) { +// char chess_board[8][8] = { +// {'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'}, +// {'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'}, +// {' ', '.', ' ', '.', ' ', '.', ' ', '.'}, +// {'.', ' ', '.', ' ', '.', ' ', '.', ' '}, +// {' ', '.', ' ', '.', ' ', '.', ' ', '.'}, +// {'.', ' ', '.', ' ', '.', ' ', '.', ' '}, +// {'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'}, +// {'R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'}, +// }; +// printf("%d", evaluate_position(chess_board)); + + pb(3); + + return 0; +} + +double triangle_area(double base, double height) { + return base * height / 2; +} + +int check(int x, int y, int n) { + return (x >= 0 && x <= n - 1 && y >= 0 && y <= n - 1); +} + +int gcd(int m, int n) { + int remainder; + + while (n != 0) { + remainder = m % n; + m = n; + n = remainder; + } + + return m; +} + +int day_of_year(int month, int day, int year) { + int num_days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + int day_count = 0, i; + + for (i = 1; i < month; i++) + day_count += num_days[i-1]; + +// adjust for leap years, assuming they are divisible by 4 + if (year % 4 == 0 && month > 2) + day_count++; + + return day_count + day; +} + +int num_digits(int n) { + int i = 0; + while (n > 0) { + n /= 10; + i++; + } + return i; +} + +int digit(int n, int k) { + int i; + for (i = 1; i < k; i++) + n /= 10; + return n % 10; +} + +int f(int a, int b) { +// a, b, e are legal I think + return 0; +} + +int largest(int a[], int n) { + int i, max = a[0]; + + for (i = 1; i < n; i++) + if (a[i] > max) + max = a[i]; + + return max; +} + +int average(int a[], int n) { + int i, avg = 0; + + for (i = 0; i < n; i++) + avg += a[i]; + + return avg / n; +} + +int num_positive(int a[], int n) { + int i, count = 0; + + for (i = 0; i < n; i++) + if (a[i] > 0) + count++; + + return count; +} + +float compute_GPA(char grades[], int n) { + float avg = 0; + int i; + + for (i = 0; i < n; i++) { + switch (toupper(grades[i])) { + case 'A': + avg += 4; + break; + case 'B': + avg += 3; + break; + case 'C': + avg += 2; + break; + case 'D': + avg += 1; + break; + } + } + return avg; +} + +double inner_product(double a[], double b[], int n) { + double product = 0; + int i; + for (i = 0; i < n; i++) + product += a[i] * b[i]; + return product; +} + +int evaluate_position(char board[8][8]) { + int i, j, black = 0, white = 0; + + for (i = 0; i < 8; i++) { + for (j = 0; j < 8; j++) { + switch (board[i][j]) { + case 'Q': + white += 9; + break; + case 'R': + white += 5; + break; + case 'B': case 'N': + white += 3; + break; + case 'P': + white += 1; + break; + case 'q': + black += 9; + break; + case 'r': + black += 5; + break; + case 'b': case 'n': + black += 3; + break; + case 'p': + black += 1; + break; + } + } + } + return white - black; +} + +bool has_zero(int a[], int n) { + int i; + bool flag = false; + + for (i = 0; i < n; i++) + flag = (a[i] == 0); + return flag; +} + +double median(double x, double y, double z) { + double result; + + if (x <= y) + if (y <= z) result = y; + else if (x <= z) result = z; + else result = x; + else { + if (z <= y) result = y; + else if (x <= z) result = x; + else result = z; + } + + return result; +} + +int fact(int n) { + int i, result = 1; + + for (i = 2; i <= n; i++) + result *= i; + + return result; +} + +int gcd_recursive(int m, int n) { + if (n == 0) + return m; + else + return gcd_recursive(n, m % n); +} + +// DEC to BINARY +void pb(int n) { + if (n != 0) { + pb(n / 2); + putchar('0' + n % 2); + } +} diff --git a/09_Functions/Exercises/swap.c b/09_Functions/Exercises/swap.c new file mode 100644 index 0000000..1efb3f7 --- /dev/null +++ b/09_Functions/Exercises/swap.c @@ -0,0 +1,18 @@ +#include + +void swap(int a, int b); + +int main(void) { + int i = 1, j = 2; + + swap(i, j); + printf("i = %d, j = %d\n", i, j); + return 0; +} + +// Twis will not swap because variables are just local +void swap(int a, int b) { + int temp = a; + a = b; + b = temp; +} diff --git a/09_Functions/Projects/pr_01.c b/09_Functions/Projects/pr_01.c new file mode 100644 index 0000000..80cb2ec --- /dev/null +++ b/09_Functions/Projects/pr_01.c @@ -0,0 +1,46 @@ +/* + * pr_01.c + * + * Created on: Feb 14, 2013 + * Author: delmadord + */ + +// NOT WORKING - DONT UNDERSTAND THE ASSIGMENT + +#include + +#define N 10 + +void selection_sort(int n, int a[n]) { + if (n > 1) { + int i, temp, max = 0; +// Find index of highest element + for (i = 1; i < n; i++) { + if (a[i] > max) + max = i; + } +// Swap it to the end of the array + temp = a[n]; + a[n] = a[max]; + a[max] = temp; + selection_sort(n - 1, a); + } + else printf("%d ", n - 1); +} + +int main(void) { + int i, serie[N] = {0}; + + printf("Enter %d integers: ", N); + for (i = 0; i < N; i++) + scanf("%d", &serie[i]); + + selection_sort(N, serie); + + printf("Sorted: "); + for (i = 0; i < N; i++) + printf("%d ", serie[i]); + + return 0; +} + diff --git a/09_Functions/Projects/pr_02.c b/09_Functions/Projects/pr_02.c new file mode 100644 index 0000000..50109f7 --- /dev/null +++ b/09_Functions/Projects/pr_02.c @@ -0,0 +1,37 @@ +/* + * pr_02.c + * + * Created on: Feb 18, 2013 + * Author: delmadord + */ + +#include + +float tax_due(float income) { + float tax; + if (income <= 750.0f) + tax = income * .01f; + else if (income <= 2250.0f) + tax = income * .02f + 7.50f; + else if (income <= 3750.0f) + tax = income * .03f + 37.50f; + else if (income <= 5250.0f) + tax = income * .04f + 82.50f; + else if (income <= 7000.0f) + tax = income * .05f + 142.50f; + else + tax = income * .06f + 230.00f; + + return tax; +} + +int main(void) { + float income; + + printf("Enter income: "); + scanf("%f", &income); + + printf("Tax due is: %.2f", tax_due(income)); + + return 0; +} diff --git a/09_Functions/Projects/pr_03.c b/09_Functions/Projects/pr_03.c new file mode 100644 index 0000000..02cf05d --- /dev/null +++ b/09_Functions/Projects/pr_03.c @@ -0,0 +1,84 @@ +/* + * pr_03.c + * + * Created on: Feb 18, 2013 + * Author: delmadord + */ + + +// NOT WORKING - I'VE NO IDEA + + +#include +#include +#include + +#define MAP_WIDTH 10 +#define MAP_HEIGHT 10 + +void generate_random_walk(char walk[10][10]); +void print_array(char walk[10][10]); + +// Map walk +void pr_09(void) { + char ch, map[MAP_WIDTH][MAP_HEIGHT] = {{0}}; + int i, x, y, direction; + bool usedDirection[4] = {false}; + + srand((unsigned) time(NULL)); + + x = 0; + y = 0; + // map[x][y] = ch; + // 65 is 'A', 90 is 'Z' + for (ch = 'A'; ch <= 'Z'; ch++) { + map[x][y] = ch; + +// Reset directions + for (i = 0; i < 4; i++) + usedDirection[i] = false; + + while (1) { + direction = (rand() % 4); + usedDirection[direction] = true; + + if(direction == 0 && (y + 1) < MAP_HEIGHT && !map[x][y + 1]) + break; + if(direction == 1 && (x + 1) < MAP_WIDTH && !map[x + 1][y]) + break; + if(direction == 2 && (y - 1) >= 0 && !map[x][y - 1]) + break; + if(direction == 3 && (x - 1) >= 0 && !map[x - 1][y]) + break; + +// ALl directions are used and we still dont have a path + if (usedDirection[0] && usedDirection[1] && + usedDirection[2] && usedDirection[3]) + goto terminate; + + } + + switch (direction) { + case 0: y++; break; + case 1: x++; break; + case 2: y--; break; + case 3: x--; break; + } + + } + + terminate: + for (y = 0; y < MAP_WIDTH; y++) { + for (x = 0; x < MAP_WIDTH; x++) { + if (map[x][y]) + printf("%c ", map[x][y]); + else + printf(". "); + } + printf("\n"); + } +} + +void generate_random_walk(char walk[10][10]) { + +} diff --git a/09_Functions/Projects/pr_04.c b/09_Functions/Projects/pr_04.c new file mode 100644 index 0000000..5868ab6 --- /dev/null +++ b/09_Functions/Projects/pr_04.c @@ -0,0 +1,52 @@ +/* + * pr_04.c + * + * Created on: Feb 18, 2013 + * Author: delmadord + */ + +#include +#include +#include + +void read_word(int counts[26]); +bool equal_array(int counts1[26], int counts2[26]); + +int main(void) { + int counts1[26] = {0}, counts2[26] = {0}; + + read_word(counts1); + read_word(counts2); + + + if (equal_array(counts1, counts2)) + printf("The words are anagrams."); + else + printf("The words are not anagrams."); + + return 0; +} + +void read_word(int counts[26]) { + char ch; + short i; + printf("Enter a word: "); + i = 0; + while ((ch = getchar()) != '\n') { + if (isalpha(ch)) + counts[toupper(ch) - 'A']++; + i++; + } +} + +bool equal_array(int counts1[26], int counts2[26]) { + short i; + bool equals = true; + for (i = 0; i < 26; i++) { + if (counts1[i] != counts2[i]) { + equals = false; + break; + } + } + return equals; +} diff --git a/09_Functions/Projects/pr_05.c b/09_Functions/Projects/pr_05.c new file mode 100644 index 0000000..94f48f0 --- /dev/null +++ b/09_Functions/Projects/pr_05.c @@ -0,0 +1,62 @@ +#include + +void create_magic_square(int n, char magic_square[n][n]); +void print_magic_square(int n, char magic_square[n][n]); + +int main(void) { + int n = 0; + + printf("Magic square of specified size.\n"); + + while (n % 2 != 1) { + printf("Enter odd number between 1 and 99: "); + scanf("%2d", &n); + } + + char magic_square[n][n]; + create_magic_square(n, magic_square); + print_magic_square(n, magic_square); + + return 0; +} + + +void create_magic_square(int n, char magic_square[n][n]) { + short i, r, c, prevr, prevc; + for (r = 0; r < n; r++) + for (c = 0; c < n; c++) + magic_square[r][c] = 0; + +// Put 1 into first row, middle column + r = prevr = 0; + c = prevc = n / 2; + i = 1; + do { +// Wrap over row + if (r == -1) + r = n - 1; +// Wrap over column + if (c == n) + c = 0; +// If element already occupied, put new right below previous placed + if (magic_square[r][c] != 0) { + r = prevr + 1; + c = prevc; + } + prevr = r; + prevc = c; +// Move one row up and to to the next column + magic_square[r--][c++] = i++; + } while (i <= (n * n)); +} + + +void print_magic_square(int n, char magic_square[n][n]) { + short r, c; + for (r = 0; r < n; r++) { + for (c = 0; c < n; c++) { + printf("%4hd", magic_square[r][c]); + } + printf("\n"); + } +} diff --git a/09_Functions/Projects/pr_06.c b/09_Functions/Projects/pr_06.c new file mode 100644 index 0000000..470af72 --- /dev/null +++ b/09_Functions/Projects/pr_06.c @@ -0,0 +1,30 @@ +#include + +int custom_polynomial(int x); +int powi(int number, int exponent); + +int main(void) { + int x; + printf("Please enter x: "); + scanf("%d", &x); + + printf("3x^5 + 2x^4 - 5x^3 - x^2 - 6 = %d", custom_polynomial(x)); + return 0; +} + +int custom_polynomial(int x) { + return + (3 * powi(x, 5)) + + (2 * powi(x, 4)) + - (5 * powi(x, 3)) + - (1 * powi(x, 2)) + - (7 * x) + - 6; +} + +int powi(int number, int exponent) { + int i, product = 1; + for (i = 0; i < exponent; i++) + product *= number; + + return product; +} diff --git a/09_Functions/Projects/pr_07.c b/09_Functions/Projects/pr_07.c new file mode 100644 index 0000000..a88d9aa --- /dev/null +++ b/09_Functions/Projects/pr_07.c @@ -0,0 +1,28 @@ +#include + +int power(int n, int exp); + +int main(void) { + int n, exp; + printf("Please enter a number: "); + scanf("%d", &n); + printf("Please enter an exponent: "); + scanf("%d", &exp); + + printf("%d ^ %d = %d", n, exp, power(n, exp)); + + return 0; +} + +int power(int base, int exp) { + int result = 1; + while (exp) + { + if (exp & 1) + result *= base; + exp >>= 1; + base *= base; + } + + return result; +} diff --git a/09_Functions/Projects/pr_08.c b/09_Functions/Projects/pr_08.c new file mode 100644 index 0000000..35eb9fa --- /dev/null +++ b/09_Functions/Projects/pr_08.c @@ -0,0 +1,79 @@ +/* + * pr_08.c + * Game of craps. + * + * Created on: Jun 4, 2013 + * Author: delmadord + */ + +#include +#include +#include +#include + +int roll_dice(void); +bool play_game(void); + +int main(void) { + srand(time(NULL)); + + int wins = 0, loses = 0; + char ch = 'y'; + while (ch == 'y' || ch == 'Y') { + if (play_game()) { + wins++; + printf("You win!\n"); + } + else { + loses++; + printf("You lose!\n"); + } + + printf("\nPlay again? "); + ch = getchar(); + + while (getchar() != '\n'); + printf("\n"); + } + + printf("Wins: %d Losses: %d", wins, loses); + + return 0; +} + +// Generate a random number (simulation of rolling two dices) +int roll_dice(void) { + return rand() % 6 + rand() % 6 + 2; +} + + +bool play_game(void) { + int status = false, roll = roll_dice(); + printf("You rolled: %d\n", roll); + + if (roll == 7 || roll == 11) + status = true; + else if (roll == 2 || roll == 3) + status = false; + else { + printf("Your point is %d\n", roll); + int point = roll; + while (roll = roll_dice()) { + printf("You rolled: %d\n", roll); + + if (roll == point) { + status = true; + break; + } + else if (roll == 7) { + status = false; + break; + } + } + } + + return status; +} + + + diff --git a/10_Program_Organization/Debug/10_Program_Organization b/10_Program_Organization/Debug/10_Program_Organization new file mode 100644 index 0000000000000000000000000000000000000000..20805d84efae962d30ba6baa43904bf44018f1e6 GIT binary patch literal 35160 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 C_Kd** literal 0 HcmV?d00001 diff --git a/10_Program_Organization/Debug/Examples/subdir.mk b/10_Program_Organization/Debug/Examples/subdir.mk new file mode 100644 index 0000000..a7ed4dc --- /dev/null +++ b/10_Program_Organization/Debug/Examples/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Examples/poker.c + +OBJS += \ +./Examples/poker.o + +C_DEPS += \ +./Examples/poker.d + + +# Each subdirectory must supply rules for building sources it contributes +Examples/%.o: ../Examples/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/10_Program_Organization/Debug/Projects/pr_07.d b/10_Program_Organization/Debug/Projects/pr_07.d new file mode 100644 index 0000000..9f4b7b7 --- /dev/null +++ b/10_Program_Organization/Debug/Projects/pr_07.d @@ -0,0 +1 @@ +Projects/pr_07.d: ../Projects/pr_07.c diff --git a/10_Program_Organization/Debug/Projects/pr_07.o b/10_Program_Organization/Debug/Projects/pr_07.o new file mode 100644 index 0000000000000000000000000000000000000000..4cf4082f6dfafe1be8ae553e03413f654459e7d6 GIT binary patch literal 58200 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 M%5jy#&G$F{Hz{n;EdT%j literal 0 HcmV?d00001 diff --git a/10_Program_Organization/Debug/Projects/subdir.mk b/10_Program_Organization/Debug/Projects/subdir.mk new file mode 100644 index 0000000..6e831f1 --- /dev/null +++ b/10_Program_Organization/Debug/Projects/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_07.c + +OBJS += \ +./Projects/pr_07.o + +C_DEPS += \ +./Projects/pr_07.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/%.o: ../Projects/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/10_Program_Organization/Debug/makefile b/10_Program_Organization/Debug/makefile new file mode 100644 index 0000000..c9bc372 --- /dev/null +++ b/10_Program_Organization/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Projects/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 10_Program_Organization + +# Tool invocations +10_Program_Organization: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "10_Program_Organization" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 10_Program_Organization + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/10_Program_Organization/Examples/guess.c b/10_Program_Organization/Examples/guess.c new file mode 100644 index 0000000..0aa98a9 --- /dev/null +++ b/10_Program_Organization/Examples/guess.c @@ -0,0 +1,83 @@ +/* Asks user to guess a hidden number */ + +#include +#include +#include + +#define MAX_NUMBER 100 + +// External variable +int secret_number; + +// Prototypes +void initialize_number_generator(void); +void choose_new_secret_number(void); +void read_guesses(void); + +int main(void) { + char command; + printf("Guess the secret number between 1 and %d.\n\n", MAX_NUMBER); + initialize_number_generator(); + + do { + choose_new_secret_number(); + printf("A new number has been choosen.\n"); + + read_guesses(); + printf("Play again? (Y/N) "); + + scanf(" %c", &command); + printf("\n"); + } while (command == 'y' || command == 'Y'); + + return 0; +} + +void initialize_number_generator(void) { + srand ((unsigned) time(NULL)); +} + +void choose_new_secret_number(void) { + secret_number = rand() % MAX_NUMBER + 1; +} + +void read_guesses(void) { + int guess, num_guesses = 0; + + while (1) { + num_guesses++; + printf("Enter guess: "); + scanf("%d", &guess); + + if (guess == secret_number) { + printf("You won in %d guesses!\n", num_guesses); + return; + } + else if (guess < secret_number) + printf("Too low; try again.\n"); + else + printf("Too high; try again.\n"); + + } +} + + + + + + + + + + + + + + + + + + + + + diff --git a/10_Program_Organization/Examples/poker.c b/10_Program_Organization/Examples/poker.c new file mode 100644 index 0000000..dd47146 --- /dev/null +++ b/10_Program_Organization/Examples/poker.c @@ -0,0 +1,163 @@ +/* Classifies a poker hand */ + +#include +#include +#include + +#define NUM_RANKS 13 +#define NUM_SUITS 4 +#define NUM_CARDS 5 + +// External variable +int num_in_rank[NUM_RANKS]; +int num_in_suit[NUM_SUITS]; +bool straight, flush, four, three; +int pairs; // Can be 0, 1 or 2 + +// Prototypes +void read_cards(void); +void analyze_hand(void); +void print_result(void); + +int main (void) { + while (1) { + read_cards(); + analyze_hand(); + print_result(); + } +} + +// Reads the card into external variables +void read_cards(void) { + bool card_exists[NUM_RANKS][NUM_SUITS]; + char ch, rank_ch, suit_ch; + int rank, suit; + bool bad_card; + int cards_read = 0; + + for (rank = 0; rank < NUM_RANKS; rank++) { + num_in_rank[rank] = 0; + for (suit = 0; suit < NUM_SUITS; suit++) + card_exists[rank][suit] = false; + } + + for (suit = 0; suit < NUM_SUITS; suit++) + num_in_suit[suit] = 0; + + while (cards_read < NUM_CARDS) { + bad_card = false; + + printf("Enter a card: "); + + rank_ch = getchar(); + switch (rank_ch) { + case '0': exit(EXIT_SUCCESS); + case '2': rank = 0; break; + case '3': rank = 1; break; + case '4': rank = 2; break; + case '5': rank = 3; break; + case '6': rank = 4; break; + case '7': rank = 5; break; + case '8': rank = 6; break; + case '9': rank = 7; break; + case 't': case 'T': rank = 8; break; + case 'j': case 'J': rank = 9; break; + case 'q': case 'Q': rank = 10; break; + case 'k': case 'K': rank = 11; break; + case 'a': case 'A': rank = 12; break; + default: bad_card = true; + } + + suit_ch = getchar(); + switch (suit_ch) { + case 'c': case 'C': suit = 0; break; + case 'd': case 'D': suit = 1; break; + case 'h': case 'H': suit = 2; break; + case 's': case 'S': suit = 3; break; + default: bad_card = true; + } + + while ((ch = getchar()) != '\n') + if (ch != ' ') + bad_card = true; + + if (bad_card) + printf("Bad card; ignored.\n"); + else if (card_exists[rank][suit]) + printf("Duplicate card; ignored.\n"); + else { + num_in_rank[rank]++; + num_in_suit[suit]++; + card_exists[rank][suit] = true; + cards_read++; + } + } +} + +void analyze_hand(void) { + int num_consec = 0; + int rank, suit; + + straight = false; + flush = false; + four = false; + three = false; + pairs = 0; + + // Check for flush + for (suit = 0; suit < NUM_SUITS; suit++) + if (num_in_suit[suit] == NUM_CARDS) + flush = true; + + // Check for straight + rank = 0; + while (num_in_rank[rank] == 0) + rank++; + for (; rank < NUM_RANKS && num_in_rank[rank] > 0; rank++) + num_consec++; + if (num_consec == NUM_CARDS) { + straight = true; + return; + } + + // Check for 4-of-a-kind, 3-of-a-kind and pairs + for (rank = 0; rank < NUM_RANKS; rank++) { + if (num_in_rank[rank] == 4) + four = true; + if (num_in_rank[rank] == 3) + three = true; + if (num_in_rank[rank] == 2) + pairs++; + + } +} + +void print_result(void) { + if (straight && flush) + printf("Straight flush"); + else if (four) + printf("Four of a kind"); + else if (three && pairs == 1) + printf("Full house"); + else if (flush) + printf("Flush"); + else if (straight) + printf("Straight"); + else if (three) + printf("Three of a kind"); + else if (pairs == 2) + printf("Two pairs"); + else if (pairs == 1) + printf("Pair"); + else + printf("High card"); + + printf("\n\n"); +} + + + + + + + diff --git a/10_Program_Organization/Examples/stack.c b/10_Program_Organization/Examples/stack.c new file mode 100644 index 0000000..c030494 --- /dev/null +++ b/10_Program_Organization/Examples/stack.c @@ -0,0 +1,35 @@ +#include + +#define STACK_SIZE 100 + +//void stack_overflow(void); + +/* external variables */ +int contents[STACK_SIZE]; +int top = 0; + +void make_empty(void) { + top = 0; +} + +bool is_empty(void) { + return top == 0; +} + +bool is_full(void) { + return top == STACK_SIZE; +} + +void push(int i) { +// if (is_full()) +// stack_overflow(); +// else + contents[top++] = i; +} + +int pop(void) { +// if (is_empty()) +// stack_overflow(); +// else + return contents[--top]; +} diff --git a/10_Program_Organization/Projects/pr_01.c b/10_Program_Organization/Projects/pr_01.c new file mode 100644 index 0000000..73c77b6 --- /dev/null +++ b/10_Program_Organization/Projects/pr_01.c @@ -0,0 +1,80 @@ +#include +#include +#include + +#define STACK_SIZE 100 + +/* external variables */ +char contents[STACK_SIZE]; +int top = 0; +bool nested = true; + +void make_empty(void); +bool is_empty(void); +bool is_full(void); +void push(char ch); +char pop(void); +void stack_overflow(void); +void stack_underflow(void); + + +int main(void) { + char ch; + printf("Enter parentheses and/or braces: "); + while ((ch = getchar()) != '\n' && nested == true) { + // Push left + if (ch == '{' || ch == '(' || ch == '[') + push(ch); + // Check if popped left is matched + else if (ch == '}') + nested = (pop() == '{'); + else if (ch == ')') + nested = (pop() == '('); + else if (ch == ']') + nested = (pop() == '['); + } + + // Print the result + if (is_empty() && nested) + printf("Parentheses are nested properly."); + else + printf("Parentheses aren't nested properly."); + + return 0; +} + + +void make_empty(void) { + top = 0; +} + +bool is_empty(void) { + return top == 0; +} + +bool is_full(void) { + return top == STACK_SIZE; +} + +void push(char ch) { + if (is_full()) + stack_overflow(); + + contents[top++] = ch; +} + +char pop(void) { + if (is_empty()) + stack_underflow(); + + return contents[--top]; +} + +void stack_overflow(void) { + printf("Stack overflow!"); + exit(EXIT_FAILURE); +} + +void stack_underflow(void) { + nested = false; +} diff --git a/10_Program_Organization/Projects/pr_02.c b/10_Program_Organization/Projects/pr_02.c new file mode 100644 index 0000000..d2b05c0 --- /dev/null +++ b/10_Program_Organization/Projects/pr_02.c @@ -0,0 +1,164 @@ +/* Classifies a poker hand, poker.c modified */ + +#include +#include +#include + +#define NUM_RANKS 13 +#define NUM_SUITS 4 +#define NUM_CARDS 5 + +// External variable +bool straight, flush, four, three; +int pairs; // Can be 0, 1 or 2 + +// Prototypes +void read_cards(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS]); +void analyze_hand(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS]); +void print_result(void); + +int main (void) { + int num_in_rank[NUM_RANKS]; + int num_in_suit[NUM_SUITS]; + + while (1) { + read_cards(num_in_rank, num_in_suit); + analyze_hand(num_in_rank, num_in_suit); + print_result(); + } +} + +// Reads the card into external variables +void read_cards(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS]) { + bool card_exists[NUM_RANKS][NUM_SUITS]; + char ch, rank_ch, suit_ch; + int rank, suit; + bool bad_card; + int cards_read = 0; + + for (rank = 0; rank < NUM_RANKS; rank++) { + num_in_rank[rank] = 0; + for (suit = 0; suit < NUM_SUITS; suit++) + card_exists[rank][suit] = false; + } + + for (suit = 0; suit < NUM_SUITS; suit++) + num_in_suit[suit] = 0; + + while (cards_read < NUM_CARDS) { + bad_card = false; + + printf("Enter a card: "); + + rank_ch = getchar(); + switch (rank_ch) { + case '0': exit(EXIT_SUCCESS); + case '2': rank = 0; break; + case '3': rank = 1; break; + case '4': rank = 2; break; + case '5': rank = 3; break; + case '6': rank = 4; break; + case '7': rank = 5; break; + case '8': rank = 6; break; + case '9': rank = 7; break; + case 't': case 'T': rank = 8; break; + case 'j': case 'J': rank = 9; break; + case 'q': case 'Q': rank = 10; break; + case 'k': case 'K': rank = 11; break; + case 'a': case 'A': rank = 12; break; + default: bad_card = true; + } + + suit_ch = getchar(); + switch (suit_ch) { + case 'c': case 'C': suit = 0; break; + case 'd': case 'D': suit = 1; break; + case 'h': case 'H': suit = 2; break; + case 's': case 'S': suit = 3; break; + default: bad_card = true; + } + + while ((ch = getchar()) != '\n') + if (ch != ' ') + bad_card = true; + + if (bad_card) + printf("Bad card; ignored.\n"); + else if (card_exists[rank][suit]) + printf("Duplicate card; ignored.\n"); + else { + num_in_rank[rank]++; + num_in_suit[suit]++; + card_exists[rank][suit] = true; + cards_read++; + } + } +} + +void analyze_hand(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS]) { + int num_consec = 0; + int rank, suit; + + straight = false; + flush = false; + four = false; + three = false; + pairs = 0; + + // Check for flush + for (suit = 0; suit < NUM_SUITS; suit++) + if (num_in_suit[suit] == NUM_CARDS) + flush = true; + + // Check for straight + rank = 0; + while (num_in_rank[rank] == 0) + rank++; + for (; rank < NUM_RANKS && num_in_rank[rank] > 0; rank++) + num_consec++; + if (num_consec == NUM_CARDS) { + straight = true; + return; + } + + // Check for 4-of-a-kind, 3-of-a-kind and pairs + for (rank = 0; rank < NUM_RANKS; rank++) { + if (num_in_rank[rank] == 4) + four = true; + if (num_in_rank[rank] == 3) + three = true; + if (num_in_rank[rank] == 2) + pairs++; + + } +} + +void print_result(void) { + if (straight && flush) + printf("Straight flush"); + else if (four) + printf("Four of a kind"); + else if (three && pairs == 1) + printf("Full house"); + else if (flush) + printf("Flush"); + else if (straight) + printf("Straight"); + else if (three) + printf("Three of a kind"); + else if (pairs == 2) + printf("Two pairs"); + else if (pairs == 1) + printf("Pair"); + else + printf("High card"); + + printf("\n\n"); +} + + + + + + + diff --git a/10_Program_Organization/Projects/pr_03.c b/10_Program_Organization/Projects/pr_03.c new file mode 100644 index 0000000..6b05722 --- /dev/null +++ b/10_Program_Organization/Projects/pr_03.c @@ -0,0 +1,191 @@ +#include /* C99 only */ +#include +#include + +#define NUM_CARDS 5 +#define RANK 0 +#define SUIT 1 + +/* external variables */ +int hand[NUM_CARDS][2]; +/* 0 1 + ____ ____ + 0 |____|____| + 1 |____|____| + 2 |____|____| + 3 |____|____| + 4 |____|____| + rank suit +*/ + +bool straight, flush, four, three; +int pairs; /* can be 0, 1, or 2 */ + +/* prototypes */ +void read_cards(void); +void analyze_hand(void); +void print_result(void); + +/********************************************************** + * main: Calls read_cards, analyze_hand, and print_result * + * repeatedly. * + **********************************************************/ +int main(void) +{ + for (;;) { + read_cards(); + analyze_hand(); + print_result(); + } +} + +/********************************************************** + * read_cards: Reads the cards into the external variable * + * hand; checks for bad cards and duplicate * + * cards. * + **********************************************************/ +void read_cards(void) +{ + char ch, rank_ch, suit_ch; + int i, rank, suit; + bool bad_card, duplicate_card; + int cards_read = 0; + + while (cards_read < NUM_CARDS) { + bad_card = false; + + printf("Enter a card: "); + + rank_ch = getchar(); + switch (rank_ch) { + case '0': exit(EXIT_SUCCESS); + case '2': rank = 0; break; + case '3': rank = 1; break; + case '4': rank = 2; break; + case '5': rank = 3; break; + case '6': rank = 4; break; + case '7': rank = 5; break; + case '8': rank = 6; break; + case '9': rank = 7; break; + case 't': case 'T': rank = 8; break; + case 'j': case 'J': rank = 9; break; + case 'q': case 'Q': rank = 10; break; + case 'k': case 'K': rank = 11; break; + case 'a': case 'A': rank = 12; break; + default: bad_card = true; + } + + suit_ch = getchar(); + switch (suit_ch) { + case 'c': case 'C': suit = 0; break; + case 'd': case 'D': suit = 1; break; + case 'h': case 'H': suit = 2; break; + case 's': case 'S': suit = 3; break; + default: bad_card = true; + } + + while ((ch = getchar()) != '\n') + if (ch != ' ') bad_card = true; + + if (bad_card) { + printf("Bad card; ignored.\n"); + continue; + } + + duplicate_card = false; + for (i = 0; i < cards_read; i++) + if (hand[i][RANK] == rank && hand[i][SUIT] == suit) { + printf("Duplicate card; ignored.\n"); + duplicate_card = true; + break; + } + + if (!duplicate_card) { + hand[cards_read][RANK] = rank; + hand[cards_read][SUIT] = suit; + cards_read++; + } + } +} + +/********************************************************** + * analyze_hand: Determines whether the hand contains a * + * straight, a flush, four-of-a-kind, * + * and/or three-of-a-kind; determines the * + * number of pairs; stores the results into * + * the external variables straight, flush, * + * four, three, and pairs. * + **********************************************************/ +void analyze_hand(void) +{ + int rank, suit, card, pass, run; + + straight = true; + flush = true; + four = false; + three = false; + pairs = 0; + + /* sort cards by rank */ + for (pass = 1; pass < NUM_CARDS; pass++) + for (card = 0; card < NUM_CARDS - pass; card++) { + rank = hand[card][RANK]; + suit = hand[card][SUIT]; + if (hand[card+1][RANK] < rank) { + hand[card][RANK] = hand[card+1][RANK]; + hand[card][SUIT] = hand[card+1][SUIT]; + hand[card+1][RANK] = rank; + hand[card+1][SUIT] = suit; + } + } + + /* check for flush */ + suit = hand[0][SUIT]; + for (card = 1; card < NUM_CARDS; card++) + if (hand[card][SUIT] != suit) + flush = false; + + /* check for straight */ + for (card = 0; card < NUM_CARDS - 1; card++) + if (hand[card][RANK] + 1 != hand[card+1][RANK]) + straight = false; + + /* check for 4-of-a-kind, 3-of-a-kind, and pairs by + looking for "runs" of cards with identical ranks */ + card = 0; + while (card < NUM_CARDS) { + rank = hand[card][RANK]; + run = 0; + do { + run++; + card++; + } while (card < NUM_CARDS && hand[card][RANK] == rank); + switch (run) { + case 2: pairs++; break; + case 3: three = true; break; + case 4: four = true; break; + } + } +} + +/********************************************************** + * print_result: Prints the classification of the hand, * + * based on the values of the external * + * variables straight, flush, four, three, * + * and pairs. * + **********************************************************/ +void print_result(void) +{ + if (straight && flush) printf("Straight flush"); + else if (four) printf("Four of a kind"); + else if (three && + pairs == 1) printf("Full house"); + else if (flush) printf("Flush"); + else if (straight) printf("Straight"); + else if (three) printf("Three of a kind"); + else if (pairs == 2) printf("Two pairs"); + else if (pairs == 1) printf("Pair"); + else printf("High card"); + + printf("\n\n"); +} diff --git a/10_Program_Organization/Projects/pr_04.c b/10_Program_Organization/Projects/pr_04.c new file mode 100644 index 0000000..ba8fe67 --- /dev/null +++ b/10_Program_Organization/Projects/pr_04.c @@ -0,0 +1,169 @@ +/* Classifies a poker hand */ + +#include +#include +#include + +#define NUM_RANKS 13 +#define NUM_SUITS 4 +#define NUM_CARDS 5 + +// External variable +int num_in_rank[NUM_RANKS]; +int num_in_suit[NUM_SUITS]; +bool royal, straight, flush, four, three; +int pairs; // Can be 0, 1 or 2 + +// Prototypes +void read_cards(void); +void analyze_hand(void); +void print_result(void); + +int main (void) { + while (1) { + read_cards(); + analyze_hand(); + print_result(); + } +} + +// Reads the card into external variables +void read_cards(void) { + bool card_exists[NUM_RANKS][NUM_SUITS]; + char ch, rank_ch, suit_ch; + int rank, suit; + bool bad_card; + int cards_read = 0; + + for (rank = 0; rank < NUM_RANKS; rank++) { + num_in_rank[rank] = 0; + for (suit = 0; suit < NUM_SUITS; suit++) + card_exists[rank][suit] = false; + } + + for (suit = 0; suit < NUM_SUITS; suit++) + num_in_suit[suit] = 0; + + while (cards_read < NUM_CARDS) { + bad_card = false; + + printf("Enter a card: "); + + rank_ch = getchar(); + switch (rank_ch) { + case '0': exit(EXIT_SUCCESS); + case '2': rank = 0; break; + case '3': rank = 1; break; + case '4': rank = 2; break; + case '5': rank = 3; break; + case '6': rank = 4; break; + case '7': rank = 5; break; + case '8': rank = 6; break; + case '9': rank = 7; break; + case 't': case 'T': rank = 8; break; + case 'j': case 'J': rank = 9; break; + case 'q': case 'Q': rank = 10; break; + case 'k': case 'K': rank = 11; break; + case 'a': case 'A': rank = 12; break; + default: bad_card = true; + } + + suit_ch = getchar(); + switch (suit_ch) { + case 'c': case 'C': suit = 0; break; + case 'd': case 'D': suit = 1; break; + case 'h': case 'H': suit = 2; break; + case 's': case 'S': suit = 3; break; + default: bad_card = true; + } + + while ((ch = getchar()) != '\n') + if (ch != ' ') + bad_card = true; + + if (bad_card) + printf("Bad card; ignored.\n"); + else if (card_exists[rank][suit]) + printf("Duplicate card; ignored.\n"); + else { + num_in_rank[rank]++; + num_in_suit[suit]++; + card_exists[rank][suit] = true; + cards_read++; + } + } +} + +void analyze_hand(void) { + int num_consec = 0; + int rank, suit; + + royal = false; + straight = false; + flush = false; + four = false; + three = false; + pairs = 0; + + // Check for flush + for (suit = 0; suit < NUM_SUITS; suit++) + if (num_in_suit[suit] == NUM_CARDS) + flush = true; + + // Check for straight + rank = 0; + while (num_in_rank[rank] == 0) + rank++; + for (; rank < NUM_RANKS && num_in_rank[rank] > 0; rank++) + num_consec++; + if (num_consec == NUM_CARDS) { + straight = true; + // Check for royal + if (rank == 13) + royal = true; + return; + } + + // Check for 4-of-a-kind, 3-of-a-kind and pairs + for (rank = 0; rank < NUM_RANKS; rank++) { + if (num_in_rank[rank] == 4) + four = true; + if (num_in_rank[rank] == 3) + three = true; + if (num_in_rank[rank] == 2) + pairs++; + + } +} + +void print_result(void) { + if (royal && flush) + printf("Royal flush"); + else if (straight && flush) + printf("Straight flush"); + else if (four) + printf("Four of a kind"); + else if (three && pairs == 1) + printf("Full house"); + else if (flush) + printf("Flush"); + else if (straight) + printf("Straight"); + else if (three) + printf("Three of a kind"); + else if (pairs == 2) + printf("Two pairs"); + else if (pairs == 1) + printf("Pair"); + else + printf("High card"); + + printf("\n\n"); +} + + + + + + + diff --git a/10_Program_Organization/Projects/pr_05.c b/10_Program_Organization/Projects/pr_05.c new file mode 100644 index 0000000..9b50f20 --- /dev/null +++ b/10_Program_Organization/Projects/pr_05.c @@ -0,0 +1,173 @@ +#include /* C99 only */ +#include +#include + +#define NUM_RANKS 13 +#define NUM_SUITS 4 +#define NUM_CARDS 5 + +/* external variables */ +int num_in_rank[NUM_RANKS]; +int num_in_suit[NUM_SUITS]; +bool straight, flush, four, three; +int pairs; /* can be 0, 1, or 2 */ + +/* prototypes */ +void read_cards(void); +void analyze_hand(void); +void print_result(void); + +/********************************************************** + * main: Calls read_cards, analyze_hand, and print_result * + * repeatedly. * + **********************************************************/ +int main(void) +{ + for (;;) { + read_cards(); + analyze_hand(); + print_result(); + } +} + +/********************************************************** + * read_cards: Reads the cards into the external * + * variables num_in_rank and num_in_suit; * + * checks for bad cards and duplicate cards. * + **********************************************************/ +void read_cards(void) +{ + bool card_exists[NUM_RANKS][NUM_SUITS]; + char ch, rank_ch, suit_ch; + int rank, suit; + bool bad_card; + int cards_read = 0; + + for (rank = 0; rank < NUM_RANKS; rank++) { + num_in_rank[rank] = 0; + for (suit = 0; suit < NUM_SUITS; suit++) + card_exists[rank][suit] = false; + } + + for (suit = 0; suit < NUM_SUITS; suit++) + num_in_suit[suit] = 0; + + while (cards_read < NUM_CARDS) { + bad_card = false; + + printf("Enter a card: "); + + rank_ch = getchar(); + switch (rank_ch) { + case '0': exit(EXIT_SUCCESS); + case '2': rank = 0; break; + case '3': rank = 1; break; + case '4': rank = 2; break; + case '5': rank = 3; break; + case '6': rank = 4; break; + case '7': rank = 5; break; + case '8': rank = 6; break; + case '9': rank = 7; break; + case 't': case 'T': rank = 8; break; + case 'j': case 'J': rank = 9; break; + case 'q': case 'Q': rank = 10; break; + case 'k': case 'K': rank = 11; break; + case 'a': case 'A': rank = 12; break; + default: bad_card = true; + } + + suit_ch = getchar(); + switch (suit_ch) { + case 'c': case 'C': suit = 0; break; + case 'd': case 'D': suit = 1; break; + case 'h': case 'H': suit = 2; break; + case 's': case 'S': suit = 3; break; + default: bad_card = true; + } + + while ((ch = getchar()) != '\n') + if (ch != ' ') bad_card = true; + + if (bad_card) + printf("Bad card; ignored.\n"); + else if (card_exists[rank][suit]) + printf("Duplicate card; ignored.\n"); + else { + num_in_rank[rank]++; + num_in_suit[suit]++; + card_exists[rank][suit] = true; + cards_read++; + } + } +} + +/********************************************************** + * analyze_hand: Determines whether the hand contains a * + * straight, a flush, four-of-a-kind, * + * and/or three-of-a-kind; determines the * + * number of pairs; stores the results into * + * the external variables straight, flush, * + * four, three, and pairs. * + **********************************************************/ +void analyze_hand(void) +{ + int num_consec = 0; + int rank, suit; + + straight = false; + flush = false; + four = false; + three = false; + pairs = 0; + + /* check for flush */ + for (suit = 0; suit < NUM_SUITS; suit++) + if (num_in_suit[suit] == NUM_CARDS) + flush = true; + + /* check for straight */ + rank = 0; + while (num_in_rank[rank] == 0) rank++; + for (; rank < NUM_RANKS && num_in_rank[rank] > 0; rank++) + num_consec++; + if (num_consec == NUM_CARDS) { + straight = true; + return; + } + + /* check for ace-low straight */ + if (num_consec == NUM_CARDS - 1 && + num_in_rank[0] > 0 && num_in_rank[NUM_RANKS-1] > 0) { + straight = true; + return; + } + + /* check for 4-of-a-kind, 3-of-a-kind, and pairs */ + for (rank = 0; rank < NUM_RANKS; rank++) { + if (num_in_rank[rank] == 4) four = true; + if (num_in_rank[rank] == 3) three = true; + if (num_in_rank[rank] == 2) pairs++; + } +} + +/********************************************************** + * print_result: Prints the classification of the hand, * + * based on the values of the external * + * variables straight, flush, four, three, * + * and pairs. * + **********************************************************/ +void print_result(void) +{ + if (straight && flush) printf("Straight flush"); + else if (four) printf("Four of a kind"); + else if (three && + pairs == 1) printf("Full house"); + else if (flush) printf("Flush"); + else if (straight) printf("Straight"); + else if (three) printf("Three of a kind"); + else if (pairs == 2) printf("Two pairs"); + else if (pairs == 1) printf("Pair"); + else printf("High card"); + + printf("\n\n"); +} diff --git a/10_Program_Organization/Projects/pr_06.c b/10_Program_Organization/Projects/pr_06.c new file mode 100644 index 0000000..ba042f8 --- /dev/null +++ b/10_Program_Organization/Projects/pr_06.c @@ -0,0 +1,96 @@ +/* RPN Reverse polish notation with stack */ + +#include +#include +#include +#include + + + +#define STACK_SIZE 100 + +/* external variables */ +int contents[STACK_SIZE]; +int top = 0; + + +void make_empty(void); +bool is_empty(void); +bool is_full(void); +void push(int ch); +int pop(void); +void stack_overflow(void); +void stack_underflow(void); + + +int main(void) { + char ch = 0; + int temp; + + while (ch != 'q') { + printf("Enter an RPN expression: "); + while (1) { + scanf(" %c", &ch); + if (ch == '=' || ch == 'q') + break; + // Operand found (+ and * are comutative) + if (isdigit((int)ch)) + push(ch - '0'); + else if (ch == '+') + push(pop() + pop()); + else if (ch == '-') { + temp = pop(); + push(pop() - temp); + } + else if (ch == '*') + push(pop() * pop()); + else if (ch == '/'){ + temp = pop(); + push(pop() / temp); + } + + } + printf("Value of expression: %d\n", pop()); + make_empty(); + } + + return 0; +} + + + +void make_empty(void) { + top = 0; +} + +bool is_empty(void) { + return top == 0; +} + +bool is_full(void) { + return top == STACK_SIZE; +} + +void push(int ch) { + if (is_full()) + stack_overflow(); + + contents[top++] = ch; +} + +int pop(void) { + if (is_empty()) + stack_underflow(); + + return contents[--top]; +} + +void stack_overflow(void) { + printf("The expression is too complex!"); + exit(EXIT_FAILURE); +} + +void stack_underflow(void) { + printf("Not enough operands in expression!"); + exit(EXIT_FAILURE); +} diff --git a/10_Program_Organization/Projects/pr_07 b/10_Program_Organization/Projects/pr_07 new file mode 100644 index 0000000000000000000000000000000000000000..c47b1d9217485246d3148ff40ef7ac2a71052c4d GIT binary patch literal 8872 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 literal 0 HcmV?d00001 diff --git a/10_Program_Organization/Projects/pr_07.c b/10_Program_Organization/Projects/pr_07.c new file mode 100644 index 0000000..e2d92e7 --- /dev/null +++ b/10_Program_Organization/Projects/pr_07.c @@ -0,0 +1,87 @@ +#include +#include + +#define MAX_DIGITS 10 + + +char digits[3][MAX_DIGITS * 4]; + +const int segments[10][7] = { + {1, 1, 1, 1, 1, 1, 0}, // 0 + {0, 1, 1, 0, 0, 0, 0}, // 1 + {1, 1, 0, 1, 1, 0, 1}, // 2 + {1, 1, 1, 1, 0, 0, 1}, // 3 + {0, 1, 1, 0, 0, 1, 1}, // 4 + {1, 0, 1, 1, 0, 1, 1}, // 5 + {1, 0, 1, 1, 1, 1, 1}, // 6 + {1, 1, 1, 0, 0, 0, 0}, // 7 + {1, 1, 1, 1, 1, 1, 1}, // 8 + {1, 1, 1, 1, 0, 1, 1} // 9 +}; + + +void clear_digits_array(void); +void process_digit(int digit, int position); +void print_digits_array(void); + +int main(void) { + clear_digits_array(); + + int i; + char ch; + printf("Enter a number: "); + for (i = 0; i < MAX_DIGITS; ) { + ch = getchar(); + if (isdigit(ch)) { + process_digit(ch - '0', i); + i++; + } + } + + print_digits_array(); + + return 0; +} + +void clear_digits_array(void) { + int r, c; + for (r = 0; r < 3; r++) + for (c = 0; c < MAX_DIGITS * 4; c++) + digits[r][c] = ' '; +} + +void process_digit(int digit, int position) { + int r, c; + for (c = position * 4; c < (position * 4 + 4); c++) { + // In first row, everywhere but top of certain digits is a space + r = 0; + if (c % 4 == 1 && segments[digit][0]) + digits[r][c] = '_'; + + // In second row + r = 1; + if ((c % 4 == 0 && segments[digit][5]) || + (c % 4 == 2 && segments[digit][1])) + digits[r][c] = '|'; + else if (c % 4 == 1 && segments[digit][6]) + digits[r][c] = '_'; + + // In third row + r = 2; + if ((c % 4 == 0 && segments[digit][4]) || + (c % 4 == 2 && segments[digit][2])) + digits[r][c] = '|'; + else if (c % 4 == 1 && segments[digit][3]) + digits[r][c] = '_'; + + } +} + +void print_digits_array(void) { + int r, c; + for (r = 0; r < 3; r++) { + for (c = 0; c < MAX_DIGITS * 4; c++) + putchar(digits[r][c]); + putchar('\n'); + } +} diff --git a/11_Pointers/.settings/org.eclipse.cdt.codan.core.prefs b/11_Pointers/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..0710d38 --- /dev/null +++ b/11_Pointers/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,65 @@ +eclipse.preferences.version=1 +org.eclipse.cdt.codan.checkers.errnoreturn=Warning +org.eclipse.cdt.codan.checkers.errnoreturn.params={implicit\=>false} +org.eclipse.cdt.codan.checkers.errreturnvalue=Error +org.eclipse.cdt.codan.checkers.errreturnvalue.params={} +org.eclipse.cdt.codan.checkers.noreturn=Error +org.eclipse.cdt.codan.checkers.noreturn.params={implicit\=>false} +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={} +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={} +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false} +org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning +org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={unknown\=>false,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error +org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={} +org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error +org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={} +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={} +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={paramNot\=>false} +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={else\=>false,afterelse\=>false} +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={macro\=>true,exceptions\=>("@(\#)","$Id")} +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} diff --git a/11_Pointers/Debug/11_Pointers b/11_Pointers/Debug/11_Pointers new file mode 100644 index 0000000000000000000000000000000000000000..b7ce0aaa6e4d2c7a07a22c4d2b6737cecf6e6029 GIT binary patch literal 29550 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 P&Keq%3d_2kBR!@7`YPltQV(=O>+ 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 + +#define N 10 + +void max_min(int a[], int n, int *max, int *min); + +int main(void) { + int b[N], i, big, small; + + printf("Enter %d numbers: ", N); + for (i = 0; i < N; i++) + scanf("%d", &b[i]); + + max_min(b, N, &big, &small); + + printf("Largest: %d\n", big); + printf("Smallest: %d\n", small); + + return 0; +} + + +void max_min(int a[], int n, int *max, int *min) { + int i; + + *max = *min = a[0]; + for (i = 1; i < n; i++) { + if (a[i] > *max) + *max = a[i]; + else if (a[i] < *min) + *min = a[i]; + } +} diff --git a/11_Pointers/Exercises/main.c b/11_Pointers/Exercises/main.c new file mode 100644 index 0000000..5e8a88c --- /dev/null +++ b/11_Pointers/Exercises/main.c @@ -0,0 +1,106 @@ +/* + * main.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include + + + +void ex_01(void); +void ex_02(void); +// ex_03 +void avg_sum(double a[], int n, double *avg, double *sum); +// ex_04 +void swap(int *p, int *q); +// ex_05 +void split_time(long total_sec, int *hr, int *min, int *sec); +// ex_06 +void find_two_largest(int a[], int n, int *largest, int *slargest); +// ex_07 +void split_date(int day_of_year, int year, int *month, int *day); +void *find_largest(int a[], int n); + + + +int main(void) { + int a[] = {12, 1, 4, 2, 9}; + + printf("%d is largest", find_largest(a, 5)); + + return 0; +} + + + +void ex_01(void) { + // a, c, d, g, h seems ok to me +} + +void ex_02(void) { + // e, f, i are ok +} + +void avg_sum(double a[], int n, double *avg, double *sum) { + int i; + + *sum = 0.0; + for (i = 0; i < n; i++) + *sum += a[i]; + *avg = *sum / n; +} + +void swap(int *p, int *q) { + int temp = *p; + *p = *q; + *q = temp; +} + +void split_time(long total_sec, int *hr, int *min, int *sec) { + *hr = total_sec / 3600; + total_sec %= 3600; + *min = total_sec / 60; + *sec = total_sec % 60; +} + +void find_two_largest(int a[], int n, int *largest, int *slargest) { + int i; + + if (a[0] > a[1]) { + *largest = a[0]; + *slargest = a[1]; + } else { + *largest = a[1]; + *slargest = a[0]; + } + + for (i = 2; i < n; i++) + if (a[i] > *largest) { + *slargest = *largest; + *largest = a[i]; + } else if (a[i] > *slargest) + *slargest = a[i]; +} + +void split_date(int day_of_year, int year, int *month, int *day) { + int feb = (year % 4 == 0) ? 29 : 28; + int days_in_months[] = {0, + 31, feb, 31, 30, 31, 30, + 31, 31, 30, 31, 30, 31}; + + *day = day_of_year; + for (*month = 1; *day > days_in_months[*month]; (*month)++) { + *day -= days_in_months[*month]; + } +} + +void *find_largest(int a[], int n) { + int i, *largest = &a[0]; + for (i = 0; i < n; i++) + if (a[i] > *largest) + largest = &a[i]; + return *largest; +} + diff --git a/11_Pointers/Exercises/main.c~ b/11_Pointers/Exercises/main.c~ new file mode 100644 index 0000000..615c8c7 --- /dev/null +++ b/11_Pointers/Exercises/main.c~ @@ -0,0 +1,106 @@ +/* + * main.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include + + + +void ex_01(void); +void ex_02(void); +// ex_03 +void avg_sum(double a[], int n, double *avg, double *sum); +// ex_04 +void swap(int *p, int *q); +// ex_05 +void split_time(long total_sec, int *hr, int *min, int *sec); +// ex_06 +void find_two_largest(int a[], int n, int *largest, int *slargest); +// ex_07 +void spit_date(int day_of_year, int year, int *month, int *day); +void *find_largest(int a[], int n); + + + +int main(void) { + int a[] = {12, 1, 4, 2, 9}; + + printf("%d is largest", find_largest(a, 5)); + + return 0; +} + + + +void ex_01(void) { + // a, c, d, g, h seems ok to me +} + +void ex_02(void) { + // e, f, i are ok +} + +void avg_sum(double a[], int n, double *avg, double *sum) { + int i; + + *sum = 0.0; + for (i = 0; i < n; i++) + *sum += a[i]; + *avg = *sum / n; +} + +void swap(int *p, int *q) { + int temp = *p; + *p = *q; + *q = temp; +} + +void split_time(long total_sec, int *hr, int *min, int *sec) { + *hr = total_sec / 3600; + total_sec %= 3600; + *min = total_sec / 60; + *sec = total_sec % 60; +} + +void find_two_largest(int a[], int n, int *largest, int *slargest) { + int i; + + if (a[0] > a[1]) { + *largest = a[0]; + *slargest = a[1]; + } else { + *largest = a[1]; + *slargest = a[0]; + } + + for (i = 2; i < n; i++) + if (a[i] > *largest) { + *slargest = *largest; + *largest = a[i]; + } else if (a[i] > *slargest) + *slargest = a[i]; +} + +void spit_date(int day_of_year, int year, int *month, int *day) { + int feb = (year % 4 == 0) ? 29 : 28; + int days_in_months[] = {0, + 31, feb, 31, 30, 31, 30, + 31, 31, 30, 31, 30, 31}; + + *day = day_of_year; + for (*month = 1; *day > days_in_months[*month]; (*month)++) { + *day -= days_in_months[*month]; + } +} + +void *find_largest(int a[], int n) { + int i, *largest = &a[0]; + for (i = 0; i < n; i++) + if (a[i] > *largest) + largest = &a[i]; + return *largest; +} + diff --git a/11_Pointers/Projects/pr_01.c b/11_Pointers/Projects/pr_01.c new file mode 100644 index 0000000..9876722 --- /dev/null +++ b/11_Pointers/Projects/pr_01.c @@ -0,0 +1,26 @@ +#include + +void pay_amount(int dollars, int *twenties, int *tens, int *fives, int *ones); + +int main(void) { + int dollars, twenties, tens, fives, ones; + printf("Enter a dollar amount: "); + scanf("%d", &dollars); + pay_amount(dollars, &twenties, &tens, &fives, &ones); + printf("\n$20 bills: %d\n$10 bills: %d\n $5 bills: %d\n $1 bills: %d", + twenties, tens, fives, ones); + + return 0; + +} + +void pay_amount(int dollars, int *twenties, int *tens, int *fives, int *ones) { + + *twenties = dollars / 20; + dollars -= *twenties * 20; + *tens = dollars / 10; + dollars -= *tens * 10; + *fives = dollars / 5; + dollars -= *fives * 5; + *ones = dollars; +} diff --git a/11_Pointers/Projects/pr_02.c b/11_Pointers/Projects/pr_02.c new file mode 100644 index 0000000..8f8cedf --- /dev/null +++ b/11_Pointers/Projects/pr_02.c @@ -0,0 +1,101 @@ +// DO NOT KNOW WHAT TO DO + +#include + +void find_closest_flight(int desired_time, int *departure_time, + int *arrival_time); + + +// Flight departures +int main(void) { + int hh, mm, entered, closestToken = 0, + closestDistance, distance; + + printf("Enter a 24-hour time: "); + scanf("%2d:%2d", &hh, &mm); + + entered = hh * 60 + mm; + + distance = 480 - entered; + distance = distance >= 0 ? distance : -distance; + closestDistance = distance; + closestToken = 480; + + distance = 583 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 583; + } + + distance = 679 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 679; + } + + distance = 767- entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 767; + } + + distance = 840 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 840; + } + + distance = 945 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 945; + } + + distance = 1140 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 1140; + } + + distance = 1305 - entered; + distance = distance >= 0 ? distance : -distance; + if (distance < closestDistance) { + closestDistance = distance; + closestToken = 1305; + } + + switch (closestToken) { + case 480: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + 8, 0, 10, 16); break; + case 583: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + 9, 43, 11, 52); break; + case 679: + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d p.m.", + 11, 19, 1, 31); break; + case 767: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 12, 47, 3, 0); break; + case 840: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 2, 0, 4, 8); break; + case 945: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 3, 45, 5, 55); break; + case 1140: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 7, 0, 9, 20); break; + case 1305: + printf("Closest departure time is %2d:%.2d p.m., arriving at %2d:%.2d p.m.", + 9, 45, 11, 58); break; + } + + return 0; +} diff --git a/11_Pointers/Projects/pr_03.c b/11_Pointers/Projects/pr_03.c new file mode 100644 index 0000000..fa4f1ba --- /dev/null +++ b/11_Pointers/Projects/pr_03.c @@ -0,0 +1,46 @@ +/* + * pr_03.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include + +int gcd(int n, int d); +void reduce(int numerator, int denominator, + int *reduced_numerator, int *reduced_denomirator); + + +// Reduce a fraction to lowest terms +int main(void) { + int n, d, rn, rd; + + printf("Enter a fraction: "); + scanf("%d / %d", &n, &d); + reduce(n, d, &rn, &rd); + printf("In lowest terms: %d/%d\n", rn, rd); + + return 0; +} + + +void reduce(int numerator, int denominator, + int *reduced_numerator, int *reduced_denomirator) { + int GCD = gcd(numerator, denominator); + *reduced_numerator = numerator / GCD; + *reduced_denomirator = denominator / GCD; +} + +// GCD, Euclid algorithm +int gcd(int n, int d) { + int remainder; + + while (d != 0) { + remainder = n % d; + n = d; + d = remainder; + } + + return n; +} diff --git a/11_Pointers/Projects/pr_04.c b/11_Pointers/Projects/pr_04.c new file mode 100644 index 0000000..bf49576 --- /dev/null +++ b/11_Pointers/Projects/pr_04.c @@ -0,0 +1,169 @@ +/* + * pr_04.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +/* Classifies a poker hand, poker.c modified */ + +#include +#include +#include + +#define NUM_RANKS 13 +#define NUM_SUITS 4 +#define NUM_CARDS 5 + +// Prototypes +void read_cards(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS]); +void analyze_hand(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS], + int hand[5]); +void print_result(int hand[5]); + +int main (void) { + int num_in_rank[NUM_RANKS]; + int num_in_suit[NUM_SUITS]; + // Represents straight, flush, 4-of-a-kind, 3-of-a-kind + // and number of pairs + int hand[5] = {0, 0, 0, 0, 0}; + + while (1) { + read_cards(num_in_rank, num_in_suit); + analyze_hand(num_in_rank, num_in_suit, hand); + print_result(hand); + } +} + +// Reads the card into external variables +void read_cards(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS]) { + bool card_exists[NUM_RANKS][NUM_SUITS]; + char ch, rank_ch, suit_ch; + int rank, suit; + bool bad_card; + int cards_read = 0; + + for (rank = 0; rank < NUM_RANKS; rank++) { + num_in_rank[rank] = 0; + for (suit = 0; suit < NUM_SUITS; suit++) + card_exists[rank][suit] = false; + } + + for (suit = 0; suit < NUM_SUITS; suit++) + num_in_suit[suit] = 0; + + while (cards_read < NUM_CARDS) { + bad_card = false; + + printf("Enter a card: "); + + rank_ch = getchar(); + switch (rank_ch) { + case '0': exit(EXIT_SUCCESS); + case '2': rank = 0; break; + case '3': rank = 1; break; + case '4': rank = 2; break; + case '5': rank = 3; break; + case '6': rank = 4; break; + case '7': rank = 5; break; + case '8': rank = 6; break; + case '9': rank = 7; break; + case 't': case 'T': rank = 8; break; + case 'j': case 'J': rank = 9; break; + case 'q': case 'Q': rank = 10; break; + case 'k': case 'K': rank = 11; break; + case 'a': case 'A': rank = 12; break; + default: bad_card = true; + } + + suit_ch = getchar(); + switch (suit_ch) { + case 'c': case 'C': suit = 0; break; + case 'd': case 'D': suit = 1; break; + case 'h': case 'H': suit = 2; break; + case 's': case 'S': suit = 3; break; + default: bad_card = true; + } + + while ((ch = getchar()) != '\n') + if (ch != ' ') + bad_card = true; + + if (bad_card) + printf("Bad card; ignored.\n"); + else if (card_exists[rank][suit]) + printf("Duplicate card; ignored.\n"); + else { + num_in_rank[rank]++; + num_in_suit[suit]++; + card_exists[rank][suit] = true; + cards_read++; + } + } +} + +void analyze_hand(int num_in_rank[NUM_RANKS], int num_in_suit[NUM_SUITS], + int hand[5]) { + int rank, suit, i, num_consec = 0; + for (i = 0; i < 5; i++) + hand[i] = 0; + + + // Check for flush + for (suit = 0; suit < NUM_SUITS; suit++) + if (num_in_suit[suit] == NUM_CARDS) + hand[1] = 1; + + // Check for straight + rank = 0; + while (num_in_rank[rank] == 0) + rank++; + for (; rank < NUM_RANKS && num_in_rank[rank] > 0; rank++) + num_consec++; + if (num_consec == NUM_CARDS) { + hand[0] = true; + return; + } + + // Check for 4-of-a-kind, 3-of-a-kind and pairs + for (rank = 0; rank < NUM_RANKS; rank++) { + if (num_in_rank[rank] == 4) + hand[2] = true; + if (num_in_rank[rank] == 3) + hand[3] = true; + if (num_in_rank[rank] == 2) + hand[4]++; + + } +} + +void print_result(int hand[5]) { + if (hand[0] && hand[1]) + printf("Straight flush"); + else if (hand[2]) + printf("Four of a kind"); + else if (hand[3] && hand[4] == 1) + printf("Full house"); + else if (hand[1]) + printf("Flush"); + else if (hand[0]) + printf("Straight"); + else if (hand[3]) + printf("Three of a kind"); + else if (hand[4] == 2) + printf("Two pairs"); + else if (hand[4] == 1) + printf("Pair"); + else + printf("High card"); + + printf("\n\n"); +} + + + + + + + + diff --git a/12_Pointers_And_Arrays/Debug/Examples/subdir.mk b/12_Pointers_And_Arrays/Debug/Examples/subdir.mk new file mode 100644 index 0000000..d3597f7 --- /dev/null +++ b/12_Pointers_And_Arrays/Debug/Examples/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Examples/reverse3.c + +OBJS += \ +./Examples/reverse3.o + +C_DEPS += \ +./Examples/reverse3.d + + +# Each subdirectory must supply rules for building sources it contributes +Examples/%.o: ../Examples/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/12_Pointers_And_Arrays/Debug/makefile b/12_Pointers_And_Arrays/Debug/makefile new file mode 100644 index 0000000..e3959e0 --- /dev/null +++ b/12_Pointers_And_Arrays/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Projects/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 12_Pointers_And_Arrays + +# Tool invocations +12_Pointers_And_Arrays: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "12_Pointers_And_Arrays" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 12_Pointers_And_Arrays + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/12_Pointers_And_Arrays/Examples/reverse3.c b/12_Pointers_And_Arrays/Examples/reverse3.c new file mode 100644 index 0000000..9fbc76f --- /dev/null +++ b/12_Pointers_And_Arrays/Examples/reverse3.c @@ -0,0 +1,26 @@ +/* Reverses a series of numers (pointer version) + * + * reverse3.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include + +#define N 10 + +int main(void) { + int a[N], *p; + + printf("Enter %d numbers: ", N); + for (p = a; p < a + N; p++) + scanf("%d", p); + + printf("In reverse order: "); + for (p = a + N - 1; p >= a; p--) + printf(" %d", *p); + printf("\n"); + + return 0; +} diff --git a/12_Pointers_And_Arrays/Exercises/main.c b/12_Pointers_And_Arrays/Exercises/main.c new file mode 100644 index 0000000..202009b --- /dev/null +++ b/12_Pointers_And_Arrays/Exercises/main.c @@ -0,0 +1,75 @@ +/* + * main.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include +#include + +#define N 10 + +void ex_02(void); +// ex_04 is in ptr_stack.c +// ex_06 +int sum_array(const int a[], int n); +// ex_07 +bool search(const int a[], int n, int key); +// ex_08 +void store_zeros(int a[], int n); +// identical matrix in pointer arithmetic +void ex_13(void); + + +int main(void) { + + + return 0; +} + +void ex_02(void) { + int high, middle, low; + middle = low + (high - low) / 2; +} + +int sum_array(const int a[], int n) { + int *p, sum; + + sum = 0; + for (p = a; p < a + n; p++) + sum += *p; + return sum; +} + +bool search(const int a[], int n, int key) { + int *p; + bool found = false; + + for (p = a; p < a + n; p++) + if (*p == key) + found = true; + + return found; +} + +void store_zeros(int a[], int n) { + int *p; + for (p = a; p < a + n; p++) + *p = 0; +} + +void ex_13(void) { + double ident[N][N], *p; + int num_zeros = N; + + for (p = &ident[0][0]; p <= &ident[N - 1][N - 1]; p++) + if (num_zeros == N) { + *p = 1.0; + num_zeros = 0; + } + else { + *p = 0.0; + num_zeros++; + } +} diff --git a/12_Pointers_And_Arrays/Exercises/ptr_stack.c b/12_Pointers_And_Arrays/Exercises/ptr_stack.c new file mode 100644 index 0000000..02a6749 --- /dev/null +++ b/12_Pointers_And_Arrays/Exercises/ptr_stack.c @@ -0,0 +1,53 @@ +/* + * ptr_stack.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include + +#define STACK_SIZE 100 + +int *top_ptr; +int contents[STACK_SIZE]; + + + +void push(int i); +int pop(void); +void make_empty(void); +bool is_empty(void); +bool is_full(void); + +int main(void) { + + return 0; +} + + +void push(int i) { + if (is_full()) + stack_overflow(); + else + *top_ptr++ = i; +} + +int pop(void) { + if (is_empty()) + stack_underflow(); + else + return *--top_ptr; +} + +void make_empty(void) { + top_ptr = &contents[0]; +} + +bool is_empty(void) { + return top_ptr = &contents[0]; +} + +bool is_full(void) { + return top_ptr == &contents[STACK_SIZE]; +} diff --git a/12_Pointers_And_Arrays/Projects/pr_01.c b/12_Pointers_And_Arrays/Projects/pr_01.c new file mode 100644 index 0000000..4e51b1a --- /dev/null +++ b/12_Pointers_And_Arrays/Projects/pr_01.c @@ -0,0 +1,26 @@ +/* + * pr_01.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + + +#include + + +#define N 100 + +int main(void) { + char ch, sentence[N], *p = sentence; + printf("Enter a message: "); + while ((ch = getchar()) != '\n' && p < sentence + N) { + *p++ = ch; + } + + printf("Reversal is: "); + for (p--; p >= sentence; p--) + putchar(*p); + + return 0; +} diff --git a/12_Pointers_And_Arrays/Projects/pr_02.c b/12_Pointers_And_Arrays/Projects/pr_02.c new file mode 100644 index 0000000..e67066e --- /dev/null +++ b/12_Pointers_And_Arrays/Projects/pr_02.c @@ -0,0 +1,33 @@ +/* + * pr_02.c + * + * Created on: Jun 9, 2013 + * Author: delmadord + */ + +#include +#include +#include + +#define N 100 + +int main(void) { + char ch, sentence[N], *p = sentence, *q; + printf("Enter a message: "); + while ((ch = getchar()) != '\n' && p < sentence + N) { + if (isalpha(ch)) + *p++ = tolower(ch); + } + + bool palindrome = true; + for (p--, q = sentence; p >= sentence && palindrome; p--, q++) + palindrome = *p == *q; + + if (palindrome) + printf("Palinrome"); + else + printf("Not a palindrome"); + + return 0; +} + diff --git a/12_Pointers_And_Arrays/Projects/pr_05.c b/12_Pointers_And_Arrays/Projects/pr_05.c new file mode 100644 index 0000000..8f5b9cf --- /dev/null +++ b/12_Pointers_And_Arrays/Projects/pr_05.c @@ -0,0 +1,41 @@ +/* + * pr_05.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ + +// NOT WORKING - crappy project + + +#include + +// Reverse words in sentence +int main(void) { + char ch, sentence[50], terminating, *p = sentence, *q, *r; + + printf("Enter a sentence: "); +// Insert words into array + ch = getchar(); + while (ch != '.' && ch != '!' && ch != '?') { + *p++ = ch; + ch = getchar(); + } +// Terminating character into separate one + terminating = ch; + + printf("Reversal of sentence:"); +// Some fancy algorithms going back and forth over the words + for (q = p, q--; q >= sentence; q--) { + if (*(p - 1) != ' ' && q > sentence) + continue; + putchar(' '); + for (r = q; r < p; r++) { + putchar(*r); + } + r = q - 1; + } + putchar(terminating); + + return 0; +} diff --git a/12_Pointers_And_Arrays/Projects/pr_06.c b/12_Pointers_And_Arrays/Projects/pr_06.c new file mode 100644 index 0000000..06f4b84 --- /dev/null +++ b/12_Pointers_And_Arrays/Projects/pr_06.c @@ -0,0 +1,59 @@ +/* + * pr_06.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ +// NOT WORKING - working with pointers rather than integers +#include + +#define N 10 + +void quicksort(int a[], int *low, int *high); +int *split(int a[], int *low, int *high); + +int main(void) { + int a[N], i, *p; + + printf("Enter %d numbers to be sorted: ", N); + for (p = a; p < a + N; p++) + scanf("%d", p); + + quicksort(a, a, a + N - 1); + + printf("In sorted order: "); + for (i = 0; i < N; i++) + printf("%d ", a[i]); + printf("\n"); + + return 0; +} + +void quicksort(int a[], int *low, int *high) { + int *middle; + + if (*low >= *high) return; + middle = split(a, low, high); + quicksort(a, low, middle - 1); + quicksort(a, middle + 1, high); +} + +int *split(int a[], int *low, int *high) { + int part_element = a[low]; + + while (1) { + while (low < high && part_element <= a[high]) + high--; + if (low >= high) break; + a[low++] = a[high]; + + while (low < high && a[low] <= part_element) + low++; + if (low >= high) break; + a[high--] = a[low]; + } + + a[high] = part_element; + return high; +} + diff --git a/12_Pointers_And_Arrays/Projects/pr_07.c b/12_Pointers_And_Arrays/Projects/pr_07.c new file mode 100644 index 0000000..07e91ce --- /dev/null +++ b/12_Pointers_And_Arrays/Projects/pr_07.c @@ -0,0 +1,43 @@ +/* + * pr_07.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ + +// SHOULD WORK WITH POINTER ARITHMETIC BUT I MADE NO CHANGES +// SINCE maxmin.c + +#include + +#define N 10 + +void max_min(int a[], int n, int *max, int *min); + +int main(void) { + int b[N], i, big, small; + + printf("Enter %d numbers: ", N); + for (i = 0; i < N; i++) + scanf("%d", &b[i]); + + max_min(b, N, &big, &small); + + printf("Largest: %d\n", big); + printf("Smallest: %d\n", small); + + return 0; +} + + +void max_min(int a[], int n, int *max, int *min) { + int i; + + *max = *min = a[0]; + for (i = 1; i < n; i++) { + if (a[i] > *max) + *max = a[i]; + else if (a[i] < *min) + *min = a[i]; + } +} diff --git a/13_Strings/Debug/13_Strings b/13_Strings/Debug/13_Strings new file mode 100644 index 0000000000000000000000000000000000000000..bc641053ecda5e52689b1de3c57210e460743caf GIT binary patch literal 29259 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 k9(P2qaAGcMtGg?yUg+v3i40t7O}FVKbXSu^ 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 F{|ob9=(_*_ literal 0 HcmV?d00001 diff --git a/13_Strings/Debug/Projects/subdir.mk b/13_Strings/Debug/Projects/subdir.mk new file mode 100644 index 0000000..1aac204 --- /dev/null +++ b/13_Strings/Debug/Projects/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_18.c + +OBJS += \ +./Projects/pr_18.o + +C_DEPS += \ +./Projects/pr_18.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/%.o: ../Projects/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/13_Strings/Debug/makefile b/13_Strings/Debug/makefile new file mode 100644 index 0000000..3c8e0e6 --- /dev/null +++ b/13_Strings/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Projects/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 13_Strings + +# Tool invocations +13_Strings: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "13_Strings" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 13_Strings + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/13_Strings/Examples/planet.c b/13_Strings/Examples/planet.c new file mode 100644 index 0000000..022dfbc --- /dev/null +++ b/13_Strings/Examples/planet.c @@ -0,0 +1,32 @@ +/* + * planet.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ + + +#include +#include + +#define NUM_PLANETS 9 + +int main(int argc, char *argv[]) { + char *planets[] = {"Mercury", "Venus", "Earth", + "Mars", "Jupiter", "Saturn", + "Uranus", "Neptune", "Pluto"}; + + int i, j; + + for (i = 1; i < argc; i++) { + for (j = 0; j < NUM_PLANETS; j++) + if (strcmp(argv[i], planets[j]) == 0) { + printf("%s is planet %d\n", argv[i], j + 1); + break; + } + if (j == NUM_PLANETS) + printf("%s is not a planet\n", argv[i]); + } + + return 0; +} diff --git a/13_Strings/Examples/remind.c b/13_Strings/Examples/remind.c new file mode 100644 index 0000000..3f0666c --- /dev/null +++ b/13_Strings/Examples/remind.c @@ -0,0 +1,64 @@ +/* + * remind.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ + + +// Prints a one-month reminder list + +#include +#include + +#define MAX_REMIND 50 +#define MSG_LEN 60 + +int read_line(char str[], int n); + +int main(void) { + char reminders[MAX_REMIND][MSG_LEN + 3]; + char day_str[3], msg_str[MSG_LEN + 1]; + int day, i, j, num_remind = 0; + + while (1) { + if (num_remind == MAX_REMIND) { + printf("-- No space left --n"); + break; + } + + printf("Enter day reminder: "); + scanf("%2d", &day); + if (day == 0) + break; + sprintf(day_str, "%2d", day); + read_line(msg_str, MSG_LEN); + + for (i = 0; i < num_remind; i++) + if (strcmp(day_str, reminders[i]) < 0) + break; + for (j = num_remind; j > i; j--) + strcpy(reminders[j], reminders[j - 1]); + + strcpy(reminders[i], day_str); + strcat(reminders[i], msg_str); + + num_remind++; + } + + printf("\nDay Reminder\n"); + for (i = 0; i < num_remind; i++) + printf(" %s\n", reminders[i]); + + return 0; +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/13_Strings/Exercises/main.c b/13_Strings/Exercises/main.c new file mode 100644 index 0000000..c812945 --- /dev/null +++ b/13_Strings/Exercises/main.c @@ -0,0 +1,223 @@ +/* + * main.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ + +#include +#include +#include +#include + +void ex_01(void); +void ex_02(void); +void ex_03(void); +// ex_04 +int read_line(char str[], int n); +// ex_05 +char *capitalize(char *s1); +// ex_06 +void censor(char s[]); +void ex_07(void); +void ex_08(void); +void ex_09(void); +// ex_11 +int my_strcmp(char *s, char *t); +// ex_12 +void get_extension(const char *file_name, char *extension); +// ex_13 +void build_index_url(const char *domain, char *index_url); +void ex_14(void); +int ex_15(char *s, char *t); +// ex_16 +int count_spaces(const char *s); +// ex_17 +bool test_extension(const char *file_name, const char *extension); + +int main(void) { + + + return 0; +} + +/* +void ex_01(void) { + printf("1|"); + printf("%c", '\n'); + +// printf("2|"); +// printf("%c", "\n"); + +// printf("3|"); +// printf("%s", '\n'); + + printf("4|"); + printf("%s", "\n"); + +// printf("5|"); +// printf('\n'); + + printf("6|"); + printf("\n"); + + printf("7|"); + putchar('\n'); + +// printf("8|"); +// putchar("\n"); + +// printf("9|"); +// puts('\n'); + +// printf("10|"); +// puts("\n"); // actually prints two new lines + + printf("11|"); + puts(""); +} + +void ex_02(void) { + char *p = "abc"; + + putchar(p); // p is adress so char with some random adress is useless + putchar('\n'); + + putchar(*p); // only the first character, but legal + putchar('\n'); + + puts(p); // ok + putchar('\n'); + + puts(*p); + putchar('\n'); // shows nothing, *p is not a pointer +} + +void ex_03(void) { + int i, j; + char s[10]; + + scanf("%d%s%d", &i, s, &j); // 12abc34 56def78 + printf("i = %d, s = %s, j = %d", i, s, j); // i = 12, s = abc34, j = 56 +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n' && ch != EOF) + if (i < n) + str[i++] = ch; + + str[i] = '\0'; + return i; + +} + + +// NOT WORKING +char *capitalize(char *s1) { + char *p = s1; + while (*p) { + *p = toupper(*p); + p++; + } +// *p = '\0'; + + return s1; +} + + +void censor(char s[]) { + int i; + + for (i = 0; s[i] != '\0'; i++) + if (s[i] == 'f' && s[i+1] == 'o' && s[i+2] =='o') + s[i] = s[i+1] = s[i+2] = 'x'; +} + +void ex_07(void) { +// d) +} + +void ex_08(void) { +// tired-or-wired? +} + +void ex_09(void) { + char s1[15], s2[15]; + strcpy(s1, "computer"); + strcpy(s2, "science"); + if (strcmp(s1, s2) < 0) + strcat(s1, s2); + else + strcat(s2, s1); + s1[strlen(s1) - 6] = '\0'; + printf("%s", s1); // computers +} +*/ + + +int my_strcmp(char *s, char *t) { + for (; *s == *t; s++, t++) + if (*s == '\0') + return 0; + return *s - *t; +} + +void get_extension(const char *file_name, char *extension) { + while (*file_name && *file_name != '.') + file_name++; + if (strlen(++file_name)) + strcpy(extension, file_name); + +} + +void build_index_url(const char *domain, char *index_url) { + strcpy(index_url, "http://www."); + strcat(index_url, domain); + strcat(index_url, "/index.html"); +} + +void ex_14(void) { + char s[] = "Hsjodi", *p; + + for (p = s; *p; p++) + --*p; + puts(s); + // Function outputs "Grinch" +} + +// The length of the longest prefix of the string s +// that consists entirely of characters from the string t. +// Or, equivalently, the position of the first character in s +// that is not also in t. +int ex_15(char *s, char *t) { + char *p1, *p2; + + for (p1 = s; *p1; p1++) { + for (p2 = t; *p2; p2++) { + if (*p1 == *p2) + break; + } + if (*p2 == '\0') + break; + } + return p1 - s; +} + +int count_spaces(const char *s) { + int count = 0; + + while (*s) + if (*s++ == ' ') + count++; + return count; +} + +// NOT WORKING +bool test_extension(const char *file_name, const char *extension) { + char ext[10]; + get_extension(file_name, ext); + return strcmp(toupper(ext), toupper(extension)) == 0; +} + diff --git a/13_Strings/Projects/pr_01.c b/13_Strings/Projects/pr_01.c new file mode 100644 index 0000000..39a6b46 --- /dev/null +++ b/13_Strings/Projects/pr_01.c @@ -0,0 +1,32 @@ +/* + * pr_01.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + +#include +#include + +#define WORD_LEN 20 + +int main(void) { + // + 1 because of null character + char word[WORD_LEN + 1]; + char smallest_word[WORD_LEN + 1] = "", largest_word[WORD_LEN + 1] = ""; + + while (strlen(word) != 4) { + printf("Enter word: "); + scanf("%s", word); + if (strlen(smallest_word) == 0 || strcmp(smallest_word, word) > 0) + strcpy(smallest_word, word); + else if (strlen(largest_word) == 0 || strcmp(largest_word, word) < 0) + strcpy(largest_word, word); + } + + printf("\nSmallest word: %s", smallest_word); + printf("\nLargest word: %s", largest_word); + + return 0; +} + diff --git a/13_Strings/Projects/pr_02.c b/13_Strings/Projects/pr_02.c new file mode 100644 index 0000000..a7cc5be --- /dev/null +++ b/13_Strings/Projects/pr_02.c @@ -0,0 +1,67 @@ +/* + * pr_02.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + + +// Prints a one-month reminder list, only part (a) is done +#include +#include + +#define MAX_REMIND 50 +#define MSG_LEN 60 + +int read_line(char str[], int n); + +int main(void) { + char reminders[MAX_REMIND][MSG_LEN + 3]; + char day_str[3], msg_str[MSG_LEN + 1]; + int day, i, j, num_remind = 0; + + while (1) { + if (num_remind == MAX_REMIND) { + printf("-- No space left --n"); + break; + } + + printf("Enter day reminder: "); + scanf("%2d", &day); + if (day == 0) + break; + if (day < 0 || day > 31) + continue; + sprintf(day_str, "%2d", day); + read_line(msg_str, MSG_LEN); + + for (i = 0; i < num_remind; i++) + if (strcmp(day_str, reminders[i]) < 0) + break; + for (j = num_remind; j > i; j--) + strcpy(reminders[j], reminders[j - 1]); + + strcpy(reminders[i], day_str); + strcat(reminders[i], msg_str); + + num_remind++; + } + + printf("\nDay Reminder\n"); + for (i = 0; i < num_remind; i++) + printf(" %s\n", reminders[i]); + + return 0; +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} + + diff --git a/13_Strings/Projects/pr_03.c b/13_Strings/Projects/pr_03.c new file mode 100644 index 0000000..e288342 --- /dev/null +++ b/13_Strings/Projects/pr_03.c @@ -0,0 +1,47 @@ +/* + * pr_03.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ +#include +#include +#include +#include +#include + +#define NUM_SUITS 4 +#define NUM_RANKS 13 + + +int main(void) { + bool in_hand[NUM_SUITS][NUM_RANKS] = {{false}}; + int num_cards, rank, suit; + const char *rank_code[] = {"Two", "Three", "Four", "Five", "Six", + "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"}; + const char *suit_code[] = {"spades", "hearts", "diamonds", "clubs"}; + + srand((unsigned) time(NULL)); + + printf("Enter number of cards: "); + scanf("%d", &num_cards); + + printf("Your hand:\N"); + while (num_cards > 0) { + suit = rand() % NUM_SUITS; + rank = rand() % NUM_RANKS; + if (!in_hand[suit][rank]) { + in_hand[suit][rank] = true; + num_cards--; + // Capitalize + printf("%s", rank_code[rank]); + printf(" of "); + printf("%s\n", suit_code[suit]); + + } + } + printf("\n"); + + return 0; + +} diff --git a/13_Strings/Projects/pr_04.c b/13_Strings/Projects/pr_04.c new file mode 100644 index 0000000..7bfcc45 --- /dev/null +++ b/13_Strings/Projects/pr_04.c @@ -0,0 +1,17 @@ +/* + * pr_04.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + +// reverse command line arguments + +#include + +int main(int argc, char *argv[]) { + while (argc--) + printf("%s ", argv[argc]); + printf("\n"); + return 0; +} diff --git a/13_Strings/Projects/pr_05.c b/13_Strings/Projects/pr_05.c new file mode 100644 index 0000000..9590027 --- /dev/null +++ b/13_Strings/Projects/pr_05.c @@ -0,0 +1,19 @@ +/* + * pr_05.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + + +// sum command line arguments +#include +#include + +int main(int argc, char *argv[]) { + int sum = 0; + while (argc--) + sum += atoi(argv[argc]); + printf("Total: %d\n", sum); + return 0; +} diff --git a/13_Strings/Projects/pr_06.c b/13_Strings/Projects/pr_06.c new file mode 100644 index 0000000..9420898 --- /dev/null +++ b/13_Strings/Projects/pr_06.c @@ -0,0 +1,46 @@ +/* + * pr_06.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + + + + +#include +#include +#include +#include + +#define NUM_PLANETS 9 + +bool string_equal(const char *s, const char *t); + +int main(int argc, char *argv[]) { + char *planets[] = {"Mercury", "Venus", "Earth", + "Mars", "Jupiter", "Saturn", + "Uranus", "Neptune", "Pluto"}; + + int i, j; + + for (i = 1; i < argc; i++) { + for (j = 0; j < NUM_PLANETS; j++) + if (string_equal(argv[i], planets[j])) { + printf("%s is planet %d\n", argv[i], j + 1); + break; + } + if (j == NUM_PLANETS) + printf("%s is not a planet\n", argv[i]); + } + + return 0; +} + +bool string_equal(const char *s, const char *t) { + while (toupper(*s++) == toupper(*t++)) + if (*s == '\0') + return 1; + + return 0; +} diff --git a/13_Strings/Projects/pr_07.c b/13_Strings/Projects/pr_07.c new file mode 100644 index 0000000..dfada20 --- /dev/null +++ b/13_Strings/Projects/pr_07.c @@ -0,0 +1,34 @@ +/* + * pr_07.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + +#include + +int main(void) { + int tens, ones; + char *word_tens[10] = {"", "ten", "twenty", "thirty", "forty", "fifty", + "sixty", "seventy", "eighty", "ninety"}; + char *word_ones[10] = {"", "one", "two", "three", "four", "five", + "six", "seven", "eight", "nine"}; + char *word_special[10] = {"ten", "eleven", "twelve", "thirteen", + "fourteen", "fifteen", "sixteen", "seventeen", + "eighteen", "nineteen"}; + + printf("Enter a two-digit number: "); + scanf("%1d%1d", &tens, &ones); + + printf("You entered the number "); + if (tens != 1) { + printf("%s", word_tens[tens]); + if (ones > 0) + printf("-%s", word_ones[ones]); + } + else + printf("%s", word_special[ones]); + printf("."); + + return 0; +} diff --git a/13_Strings/Projects/pr_08.c b/13_Strings/Projects/pr_08.c new file mode 100644 index 0000000..707ab4d --- /dev/null +++ b/13_Strings/Projects/pr_08.c @@ -0,0 +1,47 @@ +/* + * pr_08.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + +#include +#include + +#define WORD_LEN 20 + +int compute_scrabble_value(const char *word); + +// Scrabble +int main(void) { + char word[WORD_LEN]; + printf("Enter a word: "); + scanf("%s", word); + printf("Scrabble value: %d\n", compute_scrabble_value(word)); + + return 0; +} + +int compute_scrabble_value(const char *word) { + int sum = 0; + + while (*word) + switch (toupper(*word++)) { + case 'D': case 'G': + sum += 2; break; + case 'B': case 'C': case 'M': case 'P': + sum += 3; break; + case 'F': case 'H': case 'V': case 'W': case 'Y': + sum += 4; break; + case 'K': + sum += 5; break; + case 'J': case 'X': + sum += 8; break; + case 'Q': case 'Z': + sum += 10; break; + default: + sum++; break; + } + + return sum; +} diff --git a/13_Strings/Projects/pr_09.c b/13_Strings/Projects/pr_09.c new file mode 100644 index 0000000..277cd1e --- /dev/null +++ b/13_Strings/Projects/pr_09.c @@ -0,0 +1,47 @@ +/* + * pr_09.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ +#include +#include + +#define SENTENCE_LENGHT 100 + +int compute_vowel_count(const char *sentence); +int read_line(char str[], int n); + +int main(void) { + char sentence[SENTENCE_LENGHT + 1]; + + printf("Enter a sentence: "); + read_line(sentence, SENTENCE_LENGHT); + printf("Your sentence contains %d vowels.", + compute_vowel_count(sentence)); + + return 0; +} + +int compute_vowel_count(const char *sentence) { + int vowels = 0; + char *p = sentence; + while (*p) { + *p = toupper(*p); + if (*p == 'A' || *p == 'E' || *p == 'I' || *p == 'O' || *p == 'U') + vowels++; + p++; + } + + return vowels; +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/13_Strings/Projects/pr_10.c b/13_Strings/Projects/pr_10.c new file mode 100644 index 0000000..139b4c2 --- /dev/null +++ b/13_Strings/Projects/pr_10.c @@ -0,0 +1,66 @@ +/* + * pr_10.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + +// NOT WORKING - STRANGE BUG + +#include +#include +#include + +#define NAME_LENGHT 40 + +void reverse_name(char *name); +int read_line(char str[], int n); + +int main(void) { + char name[NAME_LENGHT + 1]; + + printf("Enter a first and last name: "); + read_line(name, NAME_LENGHT); + reverse_name(name); + printf("Reversed name: %s", name); + + return 0; +} + +void reverse_name(char *name) { + char first; + // Find where name starts and point there + do + first = *name++; + while (*name == ' '); + // Find where name ends, surname starts + while (isalpha(*name)) + name++; + while (*name == ' ') + name++; + // Copy from start of the last name to the end into temp var + char temp[NAME_LENGHT + 1] = ""; + strcpy(temp, name); + // Find where surname ends and cuts everything after +// while (isalpha(*temp)) +// temp++; +// *temp = '\0'; + // Add the rest + strcat(temp, " , "); + strncat(temp, &first, 1); + strcat(temp, "."); + // Put it to to the original var + // BUG HERE - temp is good, copy to name is good but when + // returned to main function, name cotains first name too + strcpy(name, temp); +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/13_Strings/Projects/pr_11.c b/13_Strings/Projects/pr_11.c new file mode 100644 index 0000000..f3a0d6a --- /dev/null +++ b/13_Strings/Projects/pr_11.c @@ -0,0 +1,50 @@ +/* + * pr_11.c + * + * Created on: Jun 11, 2013 + * Author: delmadord + */ + +#include +#include + +#define SENTENCE_LEN 100 + +double compute_avg_word_lenght(const char *sentence); +int read_line(char str[], int n); +int count_spaces(const char *s); + +int main(void) { + char sentence[SENTENCE_LEN + 1]; + printf("Enter a sentence without punctuation (.,?!): "); + read_line(sentence, SENTENCE_LEN); + printf("Average word length: %.2f", + compute_avg_word_lenght(sentence)); + + return 0; +} + +double compute_avg_word_lenght(const char *sentence) { + double words = count_spaces(sentence); + // Even if there is no space, it is at least one word + return (strlen(sentence) - words) / (words + 1); +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} + +int count_spaces(const char *s) { + int count = 0; + + while (*s) + if (*s++ == ' ') + count++; + return count; +} diff --git a/13_Strings/Projects/pr_12.c b/13_Strings/Projects/pr_12.c new file mode 100644 index 0000000..ff85b5d --- /dev/null +++ b/13_Strings/Projects/pr_12.c @@ -0,0 +1,38 @@ +/* + * pr_12.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ +#include +//#include <> + +#define NUM_WORDS 30 +#define WORD_LEN 20 + + +// Reverse words in sentence +int main(void) { + int i = 0, j = 0; + char ch, sentence[NUM_WORDS][WORD_LEN + 1]; + printf("Enter a sentence without pucntation: "); + while ((ch = getchar()) != '\n') { + if (ch == ' ') { + sentence[i++][j] = '\0'; + j = 0; + } + else + sentence[i][j++] = ch; + } + // Add null character in case of just one word. + sentence[i][j] = '\0'; + + printf("Reversal of sentence: "); + while (i >= 0) + printf("%s ", sentence[i--]); + + return 0; + +} + + diff --git a/13_Strings/Projects/pr_13.c b/13_Strings/Projects/pr_13.c new file mode 100644 index 0000000..e7c3693 --- /dev/null +++ b/13_Strings/Projects/pr_13.c @@ -0,0 +1,49 @@ +/* + * pr_13.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ + +#include + +#define MESSAGE_LEN 100 + +void caesar_encrypt(char *message, int shift); +int read_line(char str[], int n); + +// Caesar cipher +int main(void) { + char message[MESSAGE_LEN + 1]; + int shift; + + printf("Enter message to be encrypted: "); + read_line(message, MESSAGE_LEN); + printf("Enter shift amount: "); + scanf("%d", &shift); + + caesar_encrypt(message, shift); + printf("Encrypted message: %s", message); + + return 0; +} + +void caesar_encrypt(char *message, int shift) { + while (*message) { + if (*message >= 'A' && *message <= 'Z') + *message = ((*message - 'A') + shift) % 26 + 'A'; + else if (*message >= 'a' && *message <= 'z') + *message = ((*message - 'a') + shift) % 26 + 'a'; + message++; + } +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/13_Strings/Projects/pr_14.c b/13_Strings/Projects/pr_14.c new file mode 100644 index 0000000..3ff107b --- /dev/null +++ b/13_Strings/Projects/pr_14.c @@ -0,0 +1,53 @@ +/* + * pr_14.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ +#include +#include +#include + +#define WORD_LENGHT 20 + +bool are_anagrams(const char *word1, const char *word2); + +// Anagrams +int main(void) { + char w1[WORD_LENGHT + 1], w2[WORD_LENGHT + 1]; + printf("Enter first word: "); + scanf("%s", w1); + + printf("Enter second word: "); + scanf("%s", w2); + + if (are_anagrams(w1, w2)) + printf("The words are anagrams."); + else + printf("The words are not anagrams."); + + return 0; +} + +bool are_anagrams(const char *word1, const char *word2) { + int i; + char contain[26] = {0}; + + while (*word1) { + if (isalpha(*word1)) + contain[toupper(*word1) - 'A']++; + word1++; + } + while (*word2) { + if (isalpha(*word2)) + contain[toupper(*word2) - 'A']--; + word2++; + } + + for (i = 0; i < 26; i++) { + if (contain[i] != 0) + break; + } + + return (i == 26); +} diff --git a/13_Strings/Projects/pr_15.c b/13_Strings/Projects/pr_15.c new file mode 100644 index 0000000..a0e77c8 --- /dev/null +++ b/13_Strings/Projects/pr_15.c @@ -0,0 +1,122 @@ +/* + * pr_15.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ + +/* RPN Reverse polish notation with stack */ + +#include +#include +#include +#include + +#define STACK_SIZE 100 +#define EXP_LEN 500 + +/* external variables */ +char contents[STACK_SIZE]; +int top = 0; + + +int evaluate_RPN_expression(const char *exp); +int read_line(char str[], int n); +void make_empty(void); +bool is_empty(void); +bool is_full(void); +void push(int ch); +int pop(void); +void stack_overflow(void); +void stack_underflow(void); + + +int main(void) { + char expression[EXP_LEN + 1]; + while (1) { + printf("Enter an RPN expression: "); + read_line(expression, EXP_LEN); + if (expression[0] == 'q') + break; + printf("Value of expression: %d\n", + evaluate_RPN_expression(expression)); + } + + return 0; +} + + +int evaluate_RPN_expression(const char *exp) { + make_empty(); + int temp; + + // Read expression until end or until = + while (*exp && *exp != '=') { + if (isdigit((int)*exp)) + push(*exp - '0'); + // Operand found (+ and * are comutative) + else if (*exp == '+') + push(pop() + pop()); + else if (*exp == '*') + push(pop() * pop()); + // However, operands - and / are not + else if (*exp == '-') { + temp = pop(); + push(pop() - temp); + } + else if (*exp == '/'){ + temp = pop(); + push(pop() / temp); + } + exp++; + } + return pop(); +} + + +void make_empty(void) { + top = 0; +} + +bool is_empty(void) { + return top == 0; +} + +bool is_full(void) { + return top == STACK_SIZE; +} + +void push(int ch) { + if (is_full()) + stack_overflow(); + + contents[top++] = ch; +} + +int pop(void) { + if (is_empty()) + stack_underflow(); + + return contents[--top]; +} + +void stack_overflow(void) { + printf("The expression is too complex!"); + exit(EXIT_FAILURE); +} + +void stack_underflow(void) { + printf("Not enough operands in expression!"); + exit(EXIT_FAILURE); +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} + diff --git a/13_Strings/Projects/pr_16.c b/13_Strings/Projects/pr_16.c new file mode 100644 index 0000000..3f33293 --- /dev/null +++ b/13_Strings/Projects/pr_16.c @@ -0,0 +1,47 @@ +/* + * pr_16.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ + +#include + +#define N 100 + +void reverse(char *message); +int read_line(char str[], int n); + +int main(void) { + char sentence[N + 1]; + printf("Enter a message: "); + read_line(sentence, N); + reverse(sentence); + printf("Reversal is: %s", sentence); + + return 0; +} + +void reverse(char *message) { + char temp, *p = message; + // Point to the last character + while (*(p + 1)) + p++; + // Stop when pointers meet + while (message < p) { + // Exchange characters and move them towards + temp = *p; + *p-- = *message; + *message++ = temp; + } +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/13_Strings/Projects/pr_17.c b/13_Strings/Projects/pr_17.c new file mode 100644 index 0000000..6ea2d50 --- /dev/null +++ b/13_Strings/Projects/pr_17.c @@ -0,0 +1,58 @@ +/* + * pr_17.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ + + +#include +#include +#include + +#define N 100 + +bool is_palindrome(const char *message); +int read_line(char str[], int n); + +int main(void) { + char sentence[N + 1]; + printf("Enter a message: "); + read_line(sentence, N); + + if (is_palindrome(sentence)) + printf("Palinrome"); + else + printf("Not a palindrome"); + + return 0; +} + +bool is_palindrome(const char *message) { + char *p = message; + bool palindrome = true; + // Point to the last character + while (*(p + 1)) + p++; + // Stop when the pointers meet or there is a mismatch + while (message < p && palindrome) { + // Skip non-aplha characters + while (!isalpha(*message)) + message++; + while (!isalpha(*p)) + p--; + // Move pointers towards, match is recorded + palindrome = (tolower(*message++) == tolower(*p--)); + } + return palindrome; +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/13_Strings/Projects/pr_18.c b/13_Strings/Projects/pr_18.c new file mode 100644 index 0000000..7af2a2e --- /dev/null +++ b/13_Strings/Projects/pr_18.c @@ -0,0 +1,20 @@ +/* + * pr_18.c + * + * Created on: Jun 12, 2013 + * Author: delmadord + */ + +#include + +int main(void) { + char *months[] = {"January", "February", "March", "April", "May", + "June", "July", "August", "September", "October", + "November", "December"}; + int mm, dd, yyyy; + + printf("Enter a date (dd/mm/yyyy): "); + scanf("%2d/%2d/%d", &dd, &mm, &yyyy); + printf("You entered the date %s %d, %d", months[mm - 1], dd, yyyy); + +} diff --git a/14_The_Preprocessor/Debug/14_The_Preprocessor b/14_The_Preprocessor/Debug/14_The_Preprocessor new file mode 100644 index 0000000000000000000000000000000000000000..752dc959ddb222e86b32d7764bf9155d6f7a467f GIT binary patch literal 35156 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 +#include +#include + +// ex_01 +#define CUBE(x) ((x)*(x)*(x)) +#define REMAIND_4(n) ((n) % 4) +#define C1(x, y) (((x) * (y)) == 100) + +// ex_02 +#define NELEMS(a) ((int) (sizeof (a) / sizeof (a[0]))) + +// ex_03 +#define DOUBLE(x) (2 * (x)) + +// ex_04 +#define AVG(x,y) (((x) + (y)) / 2) +#define AREA(x,y) ((x) * (y)) + +// ex_05 +#define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c)) + +// ex_06 +#define DISP(f,x) printf(#f "(%g) = %g\n", x, f(x)); + +// ex_07 +#define GENERIC_MAX(type) \ +type type##_max(type x, type y) { \ + return x > y ? x : y; \ +} + +// ex_08 +#define STRINGIZE(x) #x +#define INDIR(x) STRINGIZE(x) +#define LINE_FILE "Line " INDIR(__LINE__) " of file " INDIR(__FILE__) + +// ex_09 +#define CHECK(x,y,n) (((x)>=0&&(x)=0&&(y)0~l#$EKN>O!@%C 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 literal 0 HcmV?d00001 diff --git a/15_Writing_Large_Programs/Debug/Projects/pr_01/subdir.mk b/15_Writing_Large_Programs/Debug/Projects/pr_01/subdir.mk new file mode 100644 index 0000000..1583605 --- /dev/null +++ b/15_Writing_Large_Programs/Debug/Projects/pr_01/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_01/justify.c \ +../Projects/pr_01/line.c \ +../Projects/pr_01/word.c + +OBJS += \ +./Projects/pr_01/justify.o \ +./Projects/pr_01/line.o \ +./Projects/pr_01/word.o + +C_DEPS += \ +./Projects/pr_01/justify.d \ +./Projects/pr_01/line.d \ +./Projects/pr_01/word.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_01/%.o: ../Projects/pr_01/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/15_Writing_Large_Programs/Debug/Projects/pr_02/subdir.mk b/15_Writing_Large_Programs/Debug/Projects/pr_02/subdir.mk new file mode 100644 index 0000000..776c00e --- /dev/null +++ b/15_Writing_Large_Programs/Debug/Projects/pr_02/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_02/justify.c \ +../Projects/pr_02/line.c \ +../Projects/pr_02/word.c + +OBJS += \ +./Projects/pr_02/justify.o \ +./Projects/pr_02/line.o \ +./Projects/pr_02/word.o + +C_DEPS += \ +./Projects/pr_02/justify.d \ +./Projects/pr_02/line.d \ +./Projects/pr_02/word.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_02/%.o: ../Projects/pr_02/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/15_Writing_Large_Programs/Debug/Projects/pr_04/subdir.mk b/15_Writing_Large_Programs/Debug/Projects/pr_04/subdir.mk new file mode 100644 index 0000000..fb4405d --- /dev/null +++ b/15_Writing_Large_Programs/Debug/Projects/pr_04/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_04/readline.c \ +../Projects/pr_04/remind.c + +OBJS += \ +./Projects/pr_04/readline.o \ +./Projects/pr_04/remind.o + +C_DEPS += \ +./Projects/pr_04/readline.d \ +./Projects/pr_04/remind.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_04/%.o: ../Projects/pr_04/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.d b/15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.d new file mode 100644 index 0000000..ee59252 --- /dev/null +++ b/15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.d @@ -0,0 +1,3 @@ +Projects/pr_05/rpn.d: ../Projects/pr_05/rpn.c ../Projects/pr_05/stack.h + +../Projects/pr_05/stack.h: diff --git a/15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.o b/15_Writing_Large_Programs/Debug/Projects/pr_05/rpn.o new file mode 100644 index 0000000000000000000000000000000000000000..9aa8c95420d90b75dfc98669d37312a070dc2a81 GIT binary patch literal 73144 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 literal 0 HcmV?d00001 diff --git a/15_Writing_Large_Programs/Debug/Projects/pr_05/subdir.mk b/15_Writing_Large_Programs/Debug/Projects/pr_05/subdir.mk new file mode 100644 index 0000000..d76d2a6 --- /dev/null +++ b/15_Writing_Large_Programs/Debug/Projects/pr_05/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_05/rpn.c \ +../Projects/pr_05/stack.c + +OBJS += \ +./Projects/pr_05/rpn.o \ +./Projects/pr_05/stack.o + +C_DEPS += \ +./Projects/pr_05/rpn.d \ +./Projects/pr_05/stack.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_05/%.o: ../Projects/pr_05/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/15_Writing_Large_Programs/Debug/input.txt b/15_Writing_Large_Programs/Debug/input.txt new file mode 100644 index 0000000..ff6b501 --- /dev/null +++ b/15_Writing_Large_Programs/Debug/input.txt @@ -0,0 +1,11 @@ + +C is quirky, flawed, and an +enormous success. Although accidents of history + surely helped, it evidently satsfied a need + + for a system implementation language efficient + enough to displace assembly language, + yet sufficiently abstract and fluent to describe + algorithms and interactions in a wide variety + of environments. + -- Dennis M. Ritchie diff --git a/15_Writing_Large_Programs/Debug/justify/subdir.mk b/15_Writing_Large_Programs/Debug/justify/subdir.mk new file mode 100644 index 0000000..b5c01ef --- /dev/null +++ b/15_Writing_Large_Programs/Debug/justify/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../justify/justify.c \ +../justify/line.c \ +../justify/word.c + +OBJS += \ +./justify/justify.o \ +./justify/line.o \ +./justify/word.o + +C_DEPS += \ +./justify/justify.d \ +./justify/line.d \ +./justify/word.d + + +# Each subdirectory must supply rules for building sources it contributes +justify/%.o: ../justify/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/15_Writing_Large_Programs/Debug/output.txt b/15_Writing_Large_Programs/Debug/output.txt new file mode 100644 index 0000000..e69de29 diff --git a/15_Writing_Large_Programs/Debug/sources.mk b/15_Writing_Large_Programs/Debug/sources.mk new file mode 100644 index 0000000..375fcca --- /dev/null +++ b/15_Writing_Large_Programs/Debug/sources.mk @@ -0,0 +1,17 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Projects/pr_05 \ + diff --git a/15_Writing_Large_Programs/Examples/justify/input.txt b/15_Writing_Large_Programs/Examples/justify/input.txt new file mode 100644 index 0000000..3a719db --- /dev/null +++ b/15_Writing_Large_Programs/Examples/justify/input.txt @@ -0,0 +1,10 @@ +C is quirky, flawed, and an +enormous success. Although accidents of history + surely helped, it evidently satsfied a need + + for a system implementation language efficient + enough to displace assembly language, + yet sufficiently abstract and fluent to describe + algorithms and interactions in a wide variety + of environments. + -- Dennis M. Ritchie \ No newline at end of file diff --git a/15_Writing_Large_Programs/Examples/justify/justify.c b/15_Writing_Large_Programs/Examples/justify/justify.c new file mode 100644 index 0000000..eae4c10 --- /dev/null +++ b/15_Writing_Large_Programs/Examples/justify/justify.c @@ -0,0 +1,34 @@ +/* + * justify.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#include "line.h" +#include "word.h" + +#define MAX_WORD_LEN 20 + +int main(void) { + // additional spaces for * and \0 + char word[MAX_WORD_LEN + 2]; + int word_len; + + clear_line(); + while (1) { + word_len = read_word(word, MAX_WORD_LEN + 1); + if (word_len == 0) { + flush_line(); + return 0; + } + if (word_len > MAX_WORD_LEN) + word[MAX_WORD_LEN] = '*'; + if (word_len + 1 > space_remainig()) { + write_line(); + clear_line(); + } + add_word(word); + } +} + diff --git a/15_Writing_Large_Programs/Examples/justify/line.c b/15_Writing_Large_Programs/Examples/justify/line.c new file mode 100644 index 0000000..e7c2f7f --- /dev/null +++ b/15_Writing_Large_Programs/Examples/justify/line.c @@ -0,0 +1,61 @@ +/* + * line.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +#include +#include +#include "line.h" + +#define MAX_LINE_LEN 60 + +char line[MAX_LINE_LEN + 1]; +int line_len = 0; +int num_words = 0; + +void clear_line(void) { + line[0] = '\0'; + line_len = 0; + num_words = 0; +} + +void add_word(const char *word) { + if (num_words > 0) { + line[line_len] = ' '; + line[line_len + 1] = '\0'; + line_len++; + } + strcat(line, word); + line_len += strlen(word); + num_words++; +} + +int space_remainig(void) { + return MAX_LINE_LEN - line_len; +} + +void write_line(void) { + int extra_spaces, spaces_to_insert, i, j; + + extra_spaces = MAX_LINE_LEN - line_len; + for (i = 0; i < line_len; i++) { + if (line[i] != ' ') + putchar(line[i]); + else { + spaces_to_insert = extra_spaces / (num_words - 1); + for (j = 1; j <= spaces_to_insert + 1; j++) + putchar(' '); + extra_spaces -= spaces_to_insert; + num_words--; + } + } + putchar('\n'); +} + +void flush_line(void) { + if (line_len > 0) + puts(line); +} diff --git a/15_Writing_Large_Programs/Examples/justify/line.h b/15_Writing_Large_Programs/Examples/justify/line.h new file mode 100644 index 0000000..b970ae0 --- /dev/null +++ b/15_Writing_Large_Programs/Examples/justify/line.h @@ -0,0 +1,29 @@ +/* + * line.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef LINE_H_ +#define LINE_H_ + +// Clears the current line +void clear_line(void); + +// Adds word to the end of the curent line +// If not the first word of the line, puts one space before +void add_word(const char *word); + +// Returns number of characters left in the current line +int space_remainig(void); + +// writes current line with justification +void write_line(void); + +// Writes the current line without justification +// If the line is empty, does nothing +void flush_line(void); + + +#endif /* LINE_H_ */ diff --git a/15_Writing_Large_Programs/Examples/justify/word.c b/15_Writing_Large_Programs/Examples/justify/word.c new file mode 100644 index 0000000..9270a17 --- /dev/null +++ b/15_Writing_Large_Programs/Examples/justify/word.c @@ -0,0 +1,32 @@ +/* + * word.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#include +#include "word.h" + +int read_char(void) { + int ch = getchar(); + + if (ch == '\n' || ch == '\t') + return ' '; + return ch; +} + +int read_word(char *word, int len) { + int ch, pos = 0; + + while ((ch = read_char()) == ' ') + ; + while (ch != ' ' && ch != EOF) { + if (pos < len) + word[pos++] = ch; + ch = read_char(); + } + word[pos] = '\0'; + return pos; +} + diff --git a/15_Writing_Large_Programs/Examples/justify/word.h b/15_Writing_Large_Programs/Examples/justify/word.h new file mode 100644 index 0000000..681c3da --- /dev/null +++ b/15_Writing_Large_Programs/Examples/justify/word.h @@ -0,0 +1,17 @@ +/* + * word.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef WORD_H_ +#define WORD_H_ + +// Reads the next word from the input +// Makes word empty, if exceeds OEF +// Truncates long words +// Returns number of characters stored +int read_word(char *word, int len); + +#endif /* WORD_H_ */ diff --git a/15_Writing_Large_Programs/Projects/pr_01/line.c b/15_Writing_Large_Programs/Projects/pr_01/line.c new file mode 100644 index 0000000..9b1ec68 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_01/line.c @@ -0,0 +1,66 @@ +/* + * line.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +#include +#include +#include "line.h" + +#define MAX_LINE_LEN 60 + +char line[MAX_LINE_LEN + 1]; +int line_len = 0; +int num_words = 0; + +void clear_line(void) { + line[0] = '\0'; + line_len = 0; + num_words = 0; +} + +void add_word(const char *word) { + if (num_words > 0) { + line[line_len] = ' '; + line[line_len + 1] = '\0'; + line_len++; + } + strcat(line, word); + line_len += strlen(word); + num_words++; +} + +int space_remainig(void) { + return MAX_LINE_LEN - line_len; +} + +void write_line(void) { + int extra_spaces, spaces_to_insert, i, j; + + // How many spaces are between the words + extra_spaces = MAX_LINE_LEN - line_len; + // Go over every character of array + for (i = 0; i < line_len; i++) { + // Write arbitrary characters + if (line[i] != ' ') + putchar(line[i]); + else { + // Here should it be IMPROVED by alternating spaces + // But I dont know how + spaces_to_insert = extra_spaces / (num_words - 1); + for (j = 1; j <= spaces_to_insert + 1; j++) + putchar(' '); + extra_spaces -= spaces_to_insert; + num_words--; + } + } + putchar('\n'); +} + +void flush_line(void) { + if (line_len > 0) + puts(line); +} diff --git a/15_Writing_Large_Programs/Projects/pr_02/justify.c b/15_Writing_Large_Programs/Projects/pr_02/justify.c new file mode 100644 index 0000000..333d8b1 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_02/justify.c @@ -0,0 +1,32 @@ +/* + * justify.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#include "line.h" +#include "word.h" + + + +int main(void) { + // additional spaces for * and \0 + char word[MAX_WORD_LEN + 2]; + int word_len; + + clear_line(); + while (1) { + word_len = read_word(word, MAX_WORD_LEN + 1); + if (word_len == 0) { + flush_line(); + return 0; + } + if (word_len + 1 > space_remainig()) { + write_line(); + clear_line(); + } + add_word(word); + } +} + diff --git a/15_Writing_Large_Programs/Projects/pr_02/line.c b/15_Writing_Large_Programs/Projects/pr_02/line.c new file mode 100644 index 0000000..be139ea --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_02/line.c @@ -0,0 +1,61 @@ +/* + * line.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +#include +#include +#include "line.h" + + + +char line[MAX_LINE_LEN + 1]; +int line_len = 0; +int num_words = 0; + +void clear_line(void) { + line[0] = '\0'; + line_len = 0; + num_words = 0; +} + +void add_word(const char *word) { + if (num_words > 0) { + line[line_len] = ' '; + line[line_len + 1] = '\0'; + line_len++; + } + strcat(line, word); + line_len += strlen(word); + num_words++; +} + +int space_remainig(void) { + return MAX_LINE_LEN - line_len; +} + +void write_line(void) { + int extra_spaces, spaces_to_insert, i, j; + + extra_spaces = MAX_LINE_LEN - line_len; + for (i = 0; i < line_len; i++) { + if (line[i] != ' ') + putchar(line[i]); + else { + spaces_to_insert = extra_spaces / (num_words - 1); + for (j = 1; j <= spaces_to_insert + 1; j++) + putchar(' '); + extra_spaces -= spaces_to_insert; + num_words--; + } + } + putchar('\n'); +} + +void flush_line(void) { + if (line_len > 0) + puts(line); +} diff --git a/15_Writing_Large_Programs/Projects/pr_02/line.h b/15_Writing_Large_Programs/Projects/pr_02/line.h new file mode 100644 index 0000000..fd5a389 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_02/line.h @@ -0,0 +1,31 @@ +/* + * line.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef LINE_H_ +#define LINE_H_ + +#define MAX_LINE_LEN 60 + +// Clears the current line +void clear_line(void); + +// Adds word to the end of the curent line +// If not the first word of the line, puts one space before +void add_word(const char *word); + +// Returns number of characters left in the current line +int space_remainig(void); + +// writes current line with justification +void write_line(void); + +// Writes the current line without justification +// If the line is empty, does nothing +void flush_line(void); + + +#endif /* LINE_H_ */ diff --git a/15_Writing_Large_Programs/Projects/pr_02/word.c b/15_Writing_Large_Programs/Projects/pr_02/word.c new file mode 100644 index 0000000..348cb1a --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_02/word.c @@ -0,0 +1,34 @@ +/* + * word.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#include +#include "word.h" + +int read_char(void) { + int ch = getchar(); + + if (ch == '\n' || ch == '\t') + return ' '; + return ch; +} + +int read_word(char *word, int len) { + int ch, pos = 0; + + while ((ch = read_char()) == ' ') + ; + while (ch != ' ' && ch != EOF) { + if (pos < len) + word[pos++] = ch; + ch = read_char(); + } + if (pos >= len) + word[pos - 1] = '*'; + word[pos] = '\0'; + return pos; +} + diff --git a/15_Writing_Large_Programs/Projects/pr_02/word.h b/15_Writing_Large_Programs/Projects/pr_02/word.h new file mode 100644 index 0000000..c24abea --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_02/word.h @@ -0,0 +1,19 @@ +/* + * word.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef WORD_H_ +#define WORD_H_ + +#define MAX_WORD_LEN 20 + +// Reads the next word from the input +// Makes word empty, if exceeds OEF +// Truncates long words +// Returns number of characters stored +int read_word(char *word, int len); + +#endif /* WORD_H_ */ diff --git a/15_Writing_Large_Programs/Projects/pr_03/qsort.c b/15_Writing_Large_Programs/Projects/pr_03/qsort.c new file mode 100644 index 0000000..b82a549 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_03/qsort.c @@ -0,0 +1,33 @@ +/* + * qsort.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +#include +#include "quicksort.h" + +#define N 10 + + +int main(void) { + int a[N], i; + + printf("Enter %d numbers to be sorted: ", N); + for (i = 0; i < N; i++) + scanf("%d", &a[i]); + + quicksort(a, 0, N - 1); + + printf("In sorted order: "); + for (i = 0; i < N; i++) + printf("%d ", a[i]); + printf("\n"); + + return 0; +} + + + diff --git a/15_Writing_Large_Programs/Projects/pr_03/quicksort.c b/15_Writing_Large_Programs/Projects/pr_03/quicksort.c new file mode 100644 index 0000000..49cc4cc --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_03/quicksort.c @@ -0,0 +1,34 @@ +/* + * quicksort.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +void quicksort(int a[], int low, int high) { + int middle; + + if (low >= high) return; + middle = split(a, low, high); + quicksort(a, low, middle - 1); + quicksort(a, middle + 1, high); +} + +int split(int a[], int low, int high) { + int part_element = a[low]; + + for(;;) { + while (low < high && part_element <= a[high]) + high--; + if (low >= high) break; + a[low++] = a[high]; + + while (low < high && a[low] <= part_element) + low++; + if (low >= high) break; + a[high--] = a[low]; + } + + a[high] = part_element; + return high; +} diff --git a/15_Writing_Large_Programs/Projects/pr_03/quicksort.h b/15_Writing_Large_Programs/Projects/pr_03/quicksort.h new file mode 100644 index 0000000..a9ce708 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_03/quicksort.h @@ -0,0 +1,15 @@ +/* + * quicksort.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef QUICKSORT_H_ +#define QUICKSORT_H_ + +void quicksort(int a[], int low, int high); +int split(int a[], int low, int high); + + +#endif /* QUICKSORT_H_ */ diff --git a/15_Writing_Large_Programs/Projects/pr_04/readline.c b/15_Writing_Large_Programs/Projects/pr_04/readline.c new file mode 100644 index 0000000..1b13636 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_04/readline.c @@ -0,0 +1,17 @@ +/* + * readline.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/15_Writing_Large_Programs/Projects/pr_04/readline.h b/15_Writing_Large_Programs/Projects/pr_04/readline.h new file mode 100644 index 0000000..718c67a --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_04/readline.h @@ -0,0 +1,13 @@ +/* + * readline.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef READLINE_H_ +#define READLINE_H_ + +int read_line(char str[], int n); + +#endif /* READLINE_H_ */ diff --git a/15_Writing_Large_Programs/Projects/pr_04/remind.c b/15_Writing_Large_Programs/Projects/pr_04/remind.c new file mode 100644 index 0000000..7b1ff4d --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_04/remind.c @@ -0,0 +1,57 @@ +/* + * remind.c + * + * Created on: Jun 10, 2013 + * Author: delmadord + */ + + +// Prints a one-month reminder list + +#include +#include +#include "readline.h" + +#define MAX_REMIND 50 +#define MSG_LEN 60 + + + +int main(void) { + char reminders[MAX_REMIND][MSG_LEN + 3]; + char day_str[3], msg_str[MSG_LEN + 1]; + int day, i, j, num_remind = 0; + + while (1) { + if (num_remind == MAX_REMIND) { + printf("-- No space left --n"); + break; + } + + printf("Enter day reminder: "); + scanf("%2d", &day); + if (day == 0) + break; + sprintf(day_str, "%2d", day); + read_line(msg_str, MSG_LEN); + + for (i = 0; i < num_remind; i++) + if (strcmp(day_str, reminders[i]) < 0) + break; + for (j = num_remind; j > i; j--) + strcpy(reminders[j], reminders[j - 1]); + + strcpy(reminders[i], day_str); + strcat(reminders[i], msg_str); + + num_remind++; + } + + printf("\nDay Reminder\n"); + for (i = 0; i < num_remind; i++) + printf(" %s\n", reminders[i]); + + return 0; +} + + diff --git a/15_Writing_Large_Programs/Projects/pr_05/rpn.c b/15_Writing_Large_Programs/Projects/pr_05/rpn.c new file mode 100644 index 0000000..40f08d8 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_05/rpn.c @@ -0,0 +1,54 @@ +/* + * rpn.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +/* RPN Reverse polish notation with stack */ + +#include +#include +#include +#include +#include "stack.h" + + + +int main(void) { + char ch = 0; + int temp; + + while (ch != 'q') { + printf("Enter an RPN expression: "); + while (1) { + scanf(" %c", &ch); + if (ch == '=' || ch == 'q') + break; + // Operand found (+ and * are comutative) + if (isdigit((int)ch)) + push(ch - '0'); + else if (ch == '+') + push(pop() + pop()); + else if (ch == '-') { + temp = pop(); + push(pop() - temp); + } + else if (ch == '*') + push(pop() * pop()); + else if (ch == '/'){ + temp = pop(); + push(pop() / temp); + } + + } + printf("Value of expression: %d\n", pop()); + make_empty(); + } + + return 0; +} + + + diff --git a/15_Writing_Large_Programs/Projects/pr_05/stack.c b/15_Writing_Large_Programs/Projects/pr_05/stack.c new file mode 100644 index 0000000..13eb0b0 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_05/stack.c @@ -0,0 +1,52 @@ +/* + * stack.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#include +#include +#include +#include "stack.h" + +/* external variables */ +int contents[STACK_SIZE]; +int top = 0; + + +void make_empty(void) { + top = 0; +} + +bool is_empty(void) { + return top == 0; +} + +bool is_full(void) { + return top == STACK_SIZE; +} + +void push(int ch) { + if (is_full()) + stack_overflow(); + + contents[top++] = ch; +} + +int pop(void) { + if (is_empty()) + stack_underflow(); + + return contents[--top]; +} + +void stack_overflow(void) { + printf("The expression is too complex!"); + exit(EXIT_FAILURE); +} + +void stack_underflow(void) { + printf("Not enough operands in expression!"); + exit(EXIT_FAILURE); +} diff --git a/15_Writing_Large_Programs/Projects/pr_05/stack.h b/15_Writing_Large_Programs/Projects/pr_05/stack.h new file mode 100644 index 0000000..1bd8602 --- /dev/null +++ b/15_Writing_Large_Programs/Projects/pr_05/stack.h @@ -0,0 +1,24 @@ +/* + * stack.h + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#ifndef STACK_H_ +#define STACK_H_ + +#include + +#define STACK_SIZE 100 + + +void make_empty(void); +bool is_empty(void); +bool is_full(void); +void push(int ch); +int pop(void); +void stack_overflow(void); +void stack_underflow(void); + +#endif /* STACK_H_ */ diff --git a/16_Structures_Unions_Enumerations/Debug/16_Structures_Unions_Enumerations b/16_Structures_Unions_Enumerations/Debug/16_Structures_Unions_Enumerations new file mode 100644 index 0000000000000000000000000000000000000000..e4d7c7291e6434cd7ee56254e711b1376928c652 GIT binary patch literal 30035 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 literal 0 HcmV?d00001 diff --git a/16_Structures_Unions_Enumerations/Debug/Examples/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Examples/subdir.mk new file mode 100644 index 0000000..2192f3a --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Examples/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Examples/inventory.c \ +../Examples/readline.c + +OBJS += \ +./Examples/inventory.o \ +./Examples/readline.o + +C_DEPS += \ +./Examples/inventory.d \ +./Examples/readline.d + + +# Each subdirectory must supply rules for building sources it contributes +Examples/%.o: ../Examples/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Exercises/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Exercises/subdir.mk new file mode 100644 index 0000000..33db727 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Exercises/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Exercises/ex_07.c + +OBJS += \ +./Exercises/ex_07.o + +C_DEPS += \ +./Exercises/ex_07.d + + +# Each subdirectory must supply rules for building sources it contributes +Exercises/%.o: ../Exercises/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_01/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Projects/pr_01/subdir.mk new file mode 100644 index 0000000..4ad0b9f --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_01/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_01/main.c + +OBJS += \ +./Projects/pr_01/main.o + +C_DEPS += \ +./Projects/pr_01/main.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_01/%.o: ../Projects/pr_01/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_02/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Projects/pr_02/subdir.mk new file mode 100644 index 0000000..30a0d20 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_02/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_02/inventory.c \ +../Projects/pr_02/quicksort.c \ +../Projects/pr_02/readline.c + +OBJS += \ +./Projects/pr_02/inventory.o \ +./Projects/pr_02/quicksort.o \ +./Projects/pr_02/readline.o + +C_DEPS += \ +./Projects/pr_02/inventory.d \ +./Projects/pr_02/quicksort.d \ +./Projects/pr_02/readline.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_02/%.o: ../Projects/pr_02/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_03/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Projects/pr_03/subdir.mk new file mode 100644 index 0000000..5d6abb4 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_03/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_03/inventory.c \ +../Projects/pr_03/readline.c + +OBJS += \ +./Projects/pr_03/inventory.o \ +./Projects/pr_03/readline.o + +C_DEPS += \ +./Projects/pr_03/inventory.d \ +./Projects/pr_03/readline.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_03/%.o: ../Projects/pr_03/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_04/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Projects/pr_04/subdir.mk new file mode 100644 index 0000000..227e97c --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_04/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_04/inventory.c \ +../Projects/pr_04/readline.c + +OBJS += \ +./Projects/pr_04/inventory.o \ +./Projects/pr_04/readline.o + +C_DEPS += \ +./Projects/pr_04/inventory.d \ +./Projects/pr_04/readline.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_04/%.o: ../Projects/pr_04/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_05/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Projects/pr_05/subdir.mk new file mode 100644 index 0000000..8c7abbc --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_05/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_05/departures.c + +OBJS += \ +./Projects/pr_05/departures.o + +C_DEPS += \ +./Projects/pr_05/departures.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_05/%.o: ../Projects/pr_05/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.d b/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.d new file mode 100644 index 0000000..efc8b75 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.d @@ -0,0 +1 @@ +Projects/pr_06/sooner_date.d: ../Projects/pr_06/sooner_date.c diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.o b/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/sooner_date.o new file mode 100644 index 0000000000000000000000000000000000000000..ace7b926922e334230072eace2a9e108c63a522c GIT binary patch literal 47992 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 Oa1#gLsBp6{|Nj6>=V9dl literal 0 HcmV?d00001 diff --git a/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/subdir.mk b/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/subdir.mk new file mode 100644 index 0000000..b06c1c7 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/Projects/pr_06/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_06/sooner_date.c + +OBJS += \ +./Projects/pr_06/sooner_date.o + +C_DEPS += \ +./Projects/pr_06/sooner_date.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_06/%.o: ../Projects/pr_06/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/16_Structures_Unions_Enumerations/Debug/makefile b/16_Structures_Unions_Enumerations/Debug/makefile new file mode 100644 index 0000000..e6afbee --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Projects/pr_06/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 16_Structures_Unions_Enumerations + +# Tool invocations +16_Structures_Unions_Enumerations: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "16_Structures_Unions_Enumerations" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 16_Structures_Unions_Enumerations + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/16_Structures_Unions_Enumerations/Debug/sources.mk b/16_Structures_Unions_Enumerations/Debug/sources.mk new file mode 100644 index 0000000..55a3c01 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Debug/sources.mk @@ -0,0 +1,17 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Projects/pr_06 \ + diff --git a/16_Structures_Unions_Enumerations/Examples/inventory.c b/16_Structures_Unions_Enumerations/Examples/inventory.c new file mode 100644 index 0000000..1b1789d --- /dev/null +++ b/16_Structures_Unions_Enumerations/Examples/inventory.c @@ -0,0 +1,132 @@ +/* + * inventory.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +/* Maintains a parts database (array version) */ +#include +#include "readline.h" + +#define NAME_LEN 25 +#define MAX_PARTS 100 + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; +} inventory [MAX_PARTS]; + +int num_parts = 0; + +int find_part(int number); +void insert(void); +void search(void); +void update(void); +void print(void); + +int main(void) { + char code; + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return 0; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +int find_part(int number) { + int i; + + for (i = 0; i < num_parts; i++) + if (inventory[i].number == number) + return i; + return -1; +} + +void insert(void) { + int part_number; + + if (num_parts == MAX_PARTS) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &part_number); + + if (find_part(part_number) >= 0) { + printf("Part already exists.\n"); + return; + } + + inventory[num_parts].number = part_number; + printf("Enter part name: "); + read_line(inventory[num_parts].name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &inventory[num_parts].on_hand); + num_parts++; +} + +void search(void) { + int i, number; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Part name: %s\n", inventory[i].name); + printf("Quantity on hand: %d\n", inventory[i].on_hand); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int i, number, change; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + inventory[i].on_hand += change; + } + else + printf("Part not found.\n"); +} + +void print(void) { + int i; + printf("Part Number Part Name " + "Quantity on Hand\n"); + for (i = 0; i < num_parts; i++) + printf("%7d %-25s%11d\n", inventory[i].number, + inventory[i].name, inventory[i].on_hand); +} + + diff --git a/16_Structures_Unions_Enumerations/Examples/readline.c b/16_Structures_Unions_Enumerations/Examples/readline.c new file mode 100644 index 0000000..4e09c5e --- /dev/null +++ b/16_Structures_Unions_Enumerations/Examples/readline.c @@ -0,0 +1,25 @@ +/* + * readline.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + +#include +#include +#include "readline.h" + +int read_line(char str[], int n) { + int ch, i = 0; + + while (isspace(ch = getchar())) + ; + while (ch != '\n' &&ch != EOF) { + if (i < n) + str[i++] = ch; + ch = getchar(); + } + str[i] = '\0'; + return i; +} + diff --git a/16_Structures_Unions_Enumerations/Examples/readline.h b/16_Structures_Unions_Enumerations/Examples/readline.h new file mode 100644 index 0000000..70225f9 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Examples/readline.h @@ -0,0 +1,13 @@ +/* + * readline.h + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + +#ifndef READLINE_H_ +#define READLINE_H_ + +int read_line(char str[], int n); + +#endif /* READLINE_H_ */ diff --git a/16_Structures_Unions_Enumerations/Exercises/ex_01_06.c b/16_Structures_Unions_Enumerations/Exercises/ex_01_06.c new file mode 100644 index 0000000..a583ddc --- /dev/null +++ b/16_Structures_Unions_Enumerations/Exercises/ex_01_06.c @@ -0,0 +1,120 @@ +#include + +// ex_01 +// They are different structures - LEGAL +struct { int x, y; } x; +struct { int x, y; } y; + +// ex_02 +struct { + double real, imaginary; +} c1 = {.real = 0.0, .imaginary = 1.0}, + c2 = {.real = 1.0, .imaginary = 0.0}, + c3; + +// ex_03 +struct complex { + double real, imaginary; +}; + +struct complex make_complex1(double real, double imaginary) { + struct complex c; + + c.real = real; + c.imaginary = imaginary; + return c; +} + +struct complex add_complex1(struct complex c1, struct complex c2) { + struct complex c3; + + c3.real = c1.real + c2.real; + c3.imaginary = c1.imaginary + c2.imaginary; + + return c3; +} + + + +// ex_04 +typedef struct { + double real, imaginary; +} Complex; + +Complex make_complex2(double real, double imaginary) { + Complex c; + + c.real = real; + c.imaginary = imaginary; + return c; +} + +Complex add_complex2(Complex c1, Complex c2) { + Complex c3; + + c3.real = c1.real + c2.real; + c3.imaginary = c1.imaginary + c2.imaginary; + + return c3; +} + +// ex_05 +struct date { + int day, month, year; +}; + +int day_of_year(struct date d); +int compare_dates(struct date d1, struct date d2); + +// ex_06 +struct time { + short hours, minutes, seconds; +}; + +struct time split_time(long total_seconds); + +// MAIN +int main(void) { + long s = 86401 * 5; + struct time t = split_time(s); + printf("%ld seconds is %hd hours, %hd minutes and %hd seconds", + s, t.hours, t.minutes, t.seconds); + + return 0; +} + +int day_of_year(struct date d) { + int feb = (d.year % 4 == 0) ? 29 : 28; + int days_in_months[] = {0, + 31, feb, 31, 30, 31, 30, + 31, 31, 30, 31, 30, 31}; + int i, days = d.day; + for (i = 1; i < d.month; i++) + days += days_in_months[i]; + + return days; +} + +int compare_dates(struct date d1, struct date d2) { + // Trasnforms date into days + int days1 = day_of_year(d1) + d1.year * 365 + (d1.year % 4); + int days2 = day_of_year(d2) + d2.year * 365 + (d2.year % 4); + + if (days1 < days2) + return -1; + else if (days1 == days2) + return 0; + else + return 1; +} + +struct time split_time(long total_seconds) { + struct time t; + t.hours = total_seconds / 3600; + total_seconds %= 3600; + t.minutes = total_seconds / 60; + t.seconds = total_seconds % 60; + return t; +} + + diff --git a/16_Structures_Unions_Enumerations/Exercises/ex_07.c b/16_Structures_Unions_Enumerations/Exercises/ex_07.c new file mode 100644 index 0000000..64dcf14 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Exercises/ex_07.c @@ -0,0 +1,88 @@ +/* + * ex_07.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + +// Fuctions for working with fractions + +#include + +struct fraction { + int numerator, denominator; +}; + +struct fraction reduce(struct fraction f); +struct fraction add(struct fraction f1, struct fraction f2); +struct fraction substract(struct fraction f1, struct fraction f2); +struct fraction multiply(struct fraction f1, struct fraction f2); +struct fraction divide(struct fraction f1, struct fraction f2); + + +int main() { + struct fraction f, f1, f2; + printf("fraction 1: "); + scanf("%d / %d", &f1.numerator, &f1.denominator); + printf("fraction 2: "); + scanf("%d / %d", &f2.numerator, &f2.denominator); + + f = add(f1, f2); + printf("added: %d/%d\n", f.numerator, f.denominator); + f = substract(f1, f2); + printf("substracted: %d/%d\n", f.numerator, f.denominator); + f = multiply(f1, f2); + printf("multiplied: %d/%d\n", f.numerator, f.denominator); + f = divide(f1, f2); + printf("divided: %d/%d\n", f.numerator, f.denominator); + + return 0; +} + +struct fraction reduce(struct fraction f) { + int remainder; + struct fraction g = f; + + while (g.denominator != 0) { + remainder = g.numerator % g.denominator; + g.numerator = g.denominator; + g.denominator = remainder; + } + // g.numerator is the GCD of both now + f.numerator /= g.numerator; + f.denominator /= g.numerator; + + return f; +} + +struct fraction add(struct fraction f1, struct fraction f2) { + struct fraction f; + f.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator; + f.denominator = f1.denominator * f2.denominator; + + return reduce(f); +} + +struct fraction substract(struct fraction f1, struct fraction f2) { + struct fraction f; + f.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator; + f.denominator = f1.denominator * f2.denominator; + + return reduce(f); +} + +struct fraction multiply(struct fraction f1, struct fraction f2) { + struct fraction f; + f.numerator = f1.numerator * f2.numerator; + f.denominator = f1.denominator * f2.denominator; + + return reduce(f); +} + +struct fraction divide(struct fraction f1, struct fraction f2) { + struct fraction f; + f.numerator = f1.numerator * f2.denominator; + f.denominator = f1.denominator * f2.numerator; + + return reduce(f); +} diff --git a/16_Structures_Unions_Enumerations/Exercises/ex_08.c b/16_Structures_Unions_Enumerations/Exercises/ex_08.c new file mode 100644 index 0000000..c556a75 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Exercises/ex_08.c @@ -0,0 +1,14 @@ +/* + * ex_08.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + + +#define MAGNETA struct color(.red = 255, .blue = 255) + +struct color { + int red, green, blue; +}; diff --git a/16_Structures_Unions_Enumerations/Projects/pr_01/main.c b/16_Structures_Unions_Enumerations/Projects/pr_01/main.c new file mode 100644 index 0000000..7e85e09 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Projects/pr_01/main.c @@ -0,0 +1,52 @@ +/* + * main.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + +#include + +#define COUNTRY_COUNT \ + ((int) (sizeof(country_codes) / sizeof(country_codes[0]))) + +struct dialing_code { + char *country; + int code; +}; + +const struct dialing_code country_codes[] = + {{"Argentina", 54}, {"Bangladesh", 880}, + {"Brazil", 55}, {"Burma (Myanmar)", 95}, + {"China", 86}, {"Colombia", 57}, + {"Congo, Dem. Rep. of", 243}, {"Egypt", 20}, + {"Ethiopia", 251}, {"France", 33}, + {"Germany", 49}, {"India", 91}, + {"Indonesia", 62}, {"Iran", 98}, + {"Italy", 39}, {"Japan", 81}, + {"Mexico", 52}, {"Nigeria", 234}, + {"Pakistan", 92}, {"Philippines", 63}, + {"Poland", 48}, {"Russia", 7}, + {"South Africa", 27}, {"South Korea", 82}, + {"Spain", 34}, {"Sudan", 249}, + {"Thailand", 66}, {"Turkey", 90}, + {"Ukraine", 380}, {"United Kingdom", 44}, + {"United States", 1}, {"Vietnam", 84}}; + +int main(void) +{ + int code, i; + + printf("Enter dialing code: "); + scanf("%d", &code); + + for (i = 0; i < COUNTRY_COUNT; i++) + if (code == country_codes[i].code) { + printf("The country with dialing code %d is %s\n", + code, country_codes[i].country); + return 0; + } + + printf("No corresponding country found\n"); + return 0; +} diff --git a/16_Structures_Unions_Enumerations/Projects/pr_02/inventory.c b/16_Structures_Unions_Enumerations/Projects/pr_02/inventory.c new file mode 100644 index 0000000..2ddcdf4 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Projects/pr_02/inventory.c @@ -0,0 +1,167 @@ +/* + * inventory.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +/* Maintains a parts database (array version) + * Sorts output by part number before printing */ +#include +#include +#include "readline.h" +//#include "string.h" + +#define NAME_LEN 25 +#define MAX_PARTS 100 + +//typedef int (*compfn)(const void*, const void*); + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; +} inventory [MAX_PARTS]; + +int num_parts = 0; + +int find_part(int number); +void insert(void); +void search(void); +void update(void); +void print(void); +int compare(struct part *elem1, struct part *elem2); + +int main(void) { +// inventory[0].number = 3; +// strcpy(inventory[0].name, "b3"); +// inventory[0].on_hand = 1; +// +// inventory[1].number = 4; +// strcpy(inventory[1].name, "d4"); +// inventory[1].on_hand = 1; +// +// inventory[2].number = 2; +// strcpy(inventory[2].name, "c2"); +// inventory[2].on_hand = 1; +// +// inventory[3].number = 1; +// strcpy(inventory[3].name, "a1"); +// inventory[3].on_hand = 1; +// +// num_parts = 4; + + char code; + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return 0; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +int find_part(int number) { + int i; + + for (i = 0; i < num_parts; i++) + if (inventory[i].number == number) + return i; + return -1; +} + +void insert(void) { + int part_number; + + if (num_parts == MAX_PARTS) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &part_number); + + if (find_part(part_number) >= 0) { + printf("Part already exists.\n"); + return; + } + + inventory[num_parts].number = part_number; + printf("Enter part name: "); + read_line(inventory[num_parts].name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &inventory[num_parts].on_hand); + num_parts++; +} + +void search(void) { + int i, number; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Part name: %s\n", inventory[i].name); + printf("Quantity on hand: %d\n", inventory[i].on_hand); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int i, number, change; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + inventory[i].on_hand += change; + } + else + printf("Part not found.\n"); +} + +void print(void) { + int i; + printf("Part Number Part Name " + "Quantity on Hand\n"); + qsort(inventory, num_parts, sizeof(struct part), compare); + for (i = 0; i < num_parts; i++) + printf("%7d %-25s%11d\n", inventory[i].number, + inventory[i].name, inventory[i].on_hand); +} + +int compare(struct part *elem1, struct part *elem2) { + if ( elem1->number < elem2->number) + return -1; + + else if (elem1->number > elem2->number) + return 1; + + else + return 0; +} + diff --git a/16_Structures_Unions_Enumerations/Projects/pr_03/inventory.c b/16_Structures_Unions_Enumerations/Projects/pr_03/inventory.c new file mode 100644 index 0000000..19a0410 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Projects/pr_03/inventory.c @@ -0,0 +1,165 @@ +/* + * inventory.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ +// ORDERED LIST +#include +#include "readline.h" + +#define NAME_LEN 25 +#define MAX_PARTS 100 + +struct part { + int number; + char name[NAME_LEN+1]; + int on_hand; +}; + +int find_part(int number, const struct part inv[], int np); +void insert(struct part inv[], int *np); +void search(const struct part inv[], int np); +void update(struct part inv[], int np); +void print(const struct part inv[], int np); + +/********************************************************** + * main: Prompts the user to enter an operation code, * + * then calls a function to perform the requested * + * action. Repeats until the user enters the * + * command 'q'. Prints an error message if the user * + * enters an illegal code. * + **********************************************************/ +int main(void) +{ + char code; + struct part inventory[MAX_PARTS]; + int num_parts = 0; + + for (;;) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') /* skips to end of line */ + ; + switch (code) { + case 'i': insert(inventory, &num_parts); + break; + case 's': search(inventory, num_parts); + break; + case 'u': update(inventory, num_parts); + break; + case 'p': print(inventory, num_parts); + break; + case 'q': return 0; + default: printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +/********************************************************** + * find_part: Looks up a part number in the inv array. * + * Returns the array index if the part number * + * is found; otherwise, returns -1. * + **********************************************************/ +int find_part(int number, const struct part inv[], int np) +{ + int i; + + for (i = 0; i < np; i++) + if (inv[i].number == number) + return i; + return -1; +} + +/********************************************************** + * insert: Prompts the user for information about a new * + * part and then inserts the part into the inv * + * array. Prints an error message and returns * + * prematurely if the part already exists or the * + * array is full. * + **********************************************************/ +void insert(struct part inv[], int *np) +{ + int part_number; + + if (*np == MAX_PARTS) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &part_number); + if (find_part(part_number, inv, *np) >= 0) { + printf("Part already exists.\n"); + return; + } + + inv[*np].number = part_number; + printf("Enter part name: "); + read_line(inv[*np].name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &inv[*np].on_hand); + (*np)++; +} + +/********************************************************** + * search: Prompts the user to enter a part number, then * + * looks up the part in the inv array. If the * + * part exists, prints the name and quantity on * + * hand; if not, prints an error message. * + **********************************************************/ +void search(const struct part inv[], int np) +{ + int i, number; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number, inv, np); + if (i >= 0) { + printf("Part name: %s\n", inv[i].name); + printf("Quantity on hand: %d\n", inv[i].on_hand); + } else + printf("Part not found.\n"); +} + +/********************************************************** + * update: Prompts the user to enter a part number. * + * Prints an error message if the part can't be * + * found in the inv array; otherwise, prompts the * + * user to enter change in quantity on hand and * + * updates the array. * + **********************************************************/ +void update(struct part inv[], int np) +{ + int i, number, change; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number, inv, np); + if (i >= 0) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + inv[i].on_hand += change; + } else + printf("Part not found.\n"); +} + +/********************************************************** + * print: Prints a listing of all parts in the inv array, * + * showing the part number, part name, and * + * quantity on hand. Parts are printed in the * + * order in which they were entered into the * + * array. * + **********************************************************/ +void print(const struct part inv[], int np) +{ + int i; + + printf("Part Number Part Name " + "Quantity on Hand\n"); + for (i = 0; i < np; i++) + printf("%7d %-25s%11d\n", inv[i].number, + inv[i].name, inv[i].on_hand); +} diff --git a/16_Structures_Unions_Enumerations/Projects/pr_04/inventory.c b/16_Structures_Unions_Enumerations/Projects/pr_04/inventory.c new file mode 100644 index 0000000..4064f88 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Projects/pr_04/inventory.c @@ -0,0 +1,141 @@ +/* + * inventory.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +/* Maintains a parts database (array version) + * MODIFIED: added price */ +#include +#include "readline.h" + +#define NAME_LEN 25 +#define MAX_PARTS 100 + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; + double price; +} inventory [MAX_PARTS]; + +int num_parts = 0; + +int find_part(int number); +void insert(void); +void search(void); +void update(void); +void print(void); + +int main(void) { + char code; + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return 0; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +int find_part(int number) { + int i; + + for (i = 0; i < num_parts; i++) + if (inventory[i].number == number) + return i; + return -1; +} + +void insert(void) { + int part_number; + + if (num_parts == MAX_PARTS) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &part_number); + + if (find_part(part_number) >= 0) { + printf("Part already exists.\n"); + return; + } + + inventory[num_parts].number = part_number; + printf("Enter part name: "); + read_line(inventory[num_parts].name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &inventory[num_parts].on_hand); + printf("Enter price of a part: "); + scanf("%lf", &inventory[num_parts].price); + num_parts++; +} + +void search(void) { + int i, number; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Part name: %s\n", inventory[i].name); + printf("Quantity on hand: %d\n", inventory[i].on_hand); + printf("Price of the part: %d\n", inventory[i].price); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int i, number, change; + double changee; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + inventory[i].on_hand += change; + printf("Enter change in price: "); + scanf("%lf", &changee); + inventory[i].price += changee; + } + else + printf("Part not found.\n"); +} + +void print(void) { + int i; + printf("Part Number Part Name " + "Qty Price\n"); + for (i = 0; i < num_parts; i++) + printf("%7d %-25s%4d%15.2f\n", inventory[i].number, + inventory[i].name, inventory[i].on_hand, inventory[i].price); +} + + diff --git a/16_Structures_Unions_Enumerations/Projects/pr_05/departures.c b/16_Structures_Unions_Enumerations/Projects/pr_05/departures.c new file mode 100644 index 0000000..e50a8e8 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Projects/pr_05/departures.c @@ -0,0 +1,56 @@ +/* + * departures.c + * + * Created on: Jun 17, 2013 + * Author: delmadord + */ + +#include + +#define NUM_FLIGHTS \ + ((int) (sizeof(ft) / sizeof(ft[0]))) + +#define ABS(x) ((x) >= 0 ? (x) : -(x)) + +// number of minutes since midnight +struct flight { + int departure, arrival; +}; + +struct time { + int hours, minutes; +}; + +// Flight departures +int main(void) { + // Departures + const struct flight ft[] = { + {480, 616}, {583, 712}, {679, 811}, + {767, 900}, {840, 968}, {945, 1075}, + {1140, 1280}, {1305, 1438}}; + // Pointer to closest departure + struct flight *cp; + // Stored time + struct time t; + + printf("Enter a 24-hour time: "); + scanf("%2d:%2d", &t.hours, &t.minutes); + + // Minutes + int since_midnight = t.hours * 60 + t.minutes; + // Anything sooner than midnight (1440 min) will fit + int i, closest = 1440; + for (i = 0; i < NUM_FLIGHTS; i++) { + int delta = ABS(ft[i].departure - since_midnight); + if (delta < closest) { + closest = delta; + cp = &ft[i]; + } + } + + printf("Closest departure time is %2d:%.2d a.m., arriving at %2d:%.2d a.m.", + cp->departure / 60, cp->departure % 60, + cp->arrival /60, cp->arrival % 60); + + return 0; +} diff --git a/16_Structures_Unions_Enumerations/Projects/pr_06/sooner_date.c b/16_Structures_Unions_Enumerations/Projects/pr_06/sooner_date.c new file mode 100644 index 0000000..d42e215 --- /dev/null +++ b/16_Structures_Unions_Enumerations/Projects/pr_06/sooner_date.c @@ -0,0 +1,61 @@ +/* + * sooner_date.c + * + * Created on: Jun 17, 2013 + * Author: delmadord + */ + +#include + +struct date { + int day, month, year; +}; + +int day_of_year(struct date d); +int compare_dates(struct date d1, struct date d2); + +// Which date is sooner +int main(void) { + struct date d1, d2; + + printf("Enter first date: "); + scanf("%d/%d/%d", &d1.day, &d1.month, &d1.year); + printf("Enter second date: "); + scanf("%d/%d/%d", &d2.day, &d2.month, &d2.year); + + if (compare_dates(d1, d2) < 0) + printf("%d/%d/%d is earlier than %d/%d/%d.", + d1.day, d1.month, d1.year, d2.day, d2.month, d2.year); + else if (compare_dates(d1, d2) > 0) + printf("%d/%d/%d is earlier than %d/%d/%d.", + d2.day, d2.month, d2.year, d1.day, d1.month, d1.year); + else + printf("Dates are the same."); + + return 0; +} + +int day_of_year(struct date d) { + int feb = (d.year % 4 == 0) ? 29 : 28; + int days_in_months[] = {0, + 31, feb, 31, 30, 31, 30, + 31, 31, 30, 31, 30, 31}; + int i, days = d.day; + for (i = 1; i < d.month; i++) + days += days_in_months[i]; + + return days; +} + +int compare_dates(struct date d1, struct date d2) { + // Trasnforms date into days + int days1 = day_of_year(d1) + d1.year * 365 + (d1.year % 4); + int days2 = day_of_year(d2) + d2.year * 365 + (d2.year % 4); + + if (days1 < days2) + return -1; + else if (days1 == days2) + return 0; + else + return 1; +} diff --git a/17_Advanced_Uses_of_Pointers/Debug/17_Advanced_Uses_of_Pointers b/17_Advanced_Uses_of_Pointers/Debug/17_Advanced_Uses_of_Pointers new file mode 100644 index 0000000000000000000000000000000000000000..3f1fbe2a1a938b11bea4d86a8000d45ad88b2cf9 GIT binary patch literal 37840 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 literal 0 HcmV?d00001 diff --git a/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_06/subdir.mk b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_06/subdir.mk new file mode 100644 index 0000000..d42c34f --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_06/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_06/words_sort.c + +OBJS += \ +./Projects/pr_06/words_sort.o + +C_DEPS += \ +./Projects/pr_06/words_sort.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_06/%.o: ../Projects/pr_06/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.d b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.d new file mode 100644 index 0000000..95ad846 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.d @@ -0,0 +1 @@ +Projects/pr_07/remind2.d: ../Projects/pr_07/remind2.c diff --git a/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.o b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/remind2.o new file mode 100644 index 0000000000000000000000000000000000000000..291c62888aa676e2a7d353065629185c20deba42 GIT binary patch literal 69456 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 literal 0 HcmV?d00001 diff --git a/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/subdir.mk b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/subdir.mk new file mode 100644 index 0000000..2ae40fa --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Debug/Projects/pr_07/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Projects/pr_07/remind2.c + +OBJS += \ +./Projects/pr_07/remind2.o + +C_DEPS += \ +./Projects/pr_07/remind2.d + + +# Each subdirectory must supply rules for building sources it contributes +Projects/pr_07/%.o: ../Projects/pr_07/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/17_Advanced_Uses_of_Pointers/Debug/makefile b/17_Advanced_Uses_of_Pointers/Debug/makefile new file mode 100644 index 0000000..25fe705 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Projects/pr_07/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 17_Advanced_Uses_of_Pointers + +# Tool invocations +17_Advanced_Uses_of_Pointers: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "17_Advanced_Uses_of_Pointers" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 17_Advanced_Uses_of_Pointers + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/17_Advanced_Uses_of_Pointers/Debug/objects.mk b/17_Advanced_Uses_of_Pointers/Debug/objects.mk new file mode 100644 index 0000000..519277b --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Debug/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := -lm + diff --git a/17_Advanced_Uses_of_Pointers/Debug/sources.mk b/17_Advanced_Uses_of_Pointers/Debug/sources.mk new file mode 100644 index 0000000..3881b90 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Debug/sources.mk @@ -0,0 +1,17 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Projects/pr_07 \ + diff --git a/17_Advanced_Uses_of_Pointers/Examples/inventory2/inventory2.c b/17_Advanced_Uses_of_Pointers/Examples/inventory2/inventory2.c new file mode 100644 index 0000000..18344f6 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Examples/inventory2/inventory2.c @@ -0,0 +1,149 @@ +/* + * inventory2.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +/* Maintains a parts database (array version) */ +#include +#include +#include "readline.h" + +#define NAME_LEN 25 + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; + struct part *next; +}; + +struct part *inventory = NULL; + +struct part *find_part(int number); +void insert(void); +void search(void); +void update(void); +void print(void); + +int main(void) { + char code; + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return 0; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +struct part *find_part(int number) { + struct part *p; + + for (p = inventory; + p != NULL && number > p->number; + p = p->next) + ; + if (p != NULL && number == p->number) + return p; + return NULL; +} + +void insert(void) { + struct part *cur, *prev, *new_node; + + new_node = malloc(sizeof(struct part)); + if (new_node == NULL) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &new_node->number); + + for (cur = inventory, prev = NULL; + cur != NULL && new_node->number > cur->number; + prev = cur, cur = cur->next) + ; + + if (cur != NULL && new_node->number == cur->number) { + printf("Part already exists.\n"); + free(new_node); + return; + } + + printf("Enter part name: "); + read_line(new_node->name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &new_node->on_hand); + + new_node->next = cur; + if (prev == NULL) + inventory = new_node; + else + prev->next = new_node; +} + +void search(void) { + int number; + struct part *p; + + printf("Enter part number: "); + scanf("%d", &number); + p = find_part(number); + if (p != NULL) { + printf("Part name: %s\n", p->name); + printf("Quantity on hand: %d\n", p->on_hand); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int number, change; + struct part *p; + + printf("Enter part number: "); + scanf("%d", &number); + p = find_part(number); + if (p != NULL) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + p->on_hand += change; + } + else + printf("Part not found.\n"); +} + +void print(void) { + struct part *p; + printf("Part Number Part Name " + "Quantity on Hand\n"); + for (p = inventory; p != NULL; p = p->next) + printf("%7d %-25s%11d\n", p->number, + p->name, p->on_hand); +} + + diff --git a/17_Advanced_Uses_of_Pointers/Examples/remind2.c b/17_Advanced_Uses_of_Pointers/Examples/remind2.c new file mode 100644 index 0000000..dae2f28 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Examples/remind2.c @@ -0,0 +1,72 @@ +/* + * remind2.c + * + * Created on: Jun 17, 2013 + * Author: delmadord + */ + + + +// Prints a one-month reminder list + +#include +#include +#include + +#define MAX_REMIND 50 +#define MSG_LEN 60 + +int read_line(char str[], int n); + +int main(void) { + char *reminders[MAX_REMIND]; + char day_str[3], msg_str[MSG_LEN + 1]; + int day, i, j, num_remind = 0; + + while (1) { + if (num_remind == MAX_REMIND) { + printf("-- No space left --n"); + break; + } + + printf("Enter day reminder: "); + scanf("%2d", &day); + if (day == 0) + break; + sprintf(day_str, "%2d", day); + read_line(msg_str, MSG_LEN); + + for (i = 0; i < num_remind; i++) + if (strcmp(day_str, reminders[i]) < 0) + break; + for (j = num_remind; j > i; j--) + reminders[j] = reminders[j - i]; + + reminders[i] = malloc(2 + strlen(msg_str) + 1); + if (reminders[i] == NULL) { + printf("-- No space left --\n"); + break; + } + + strcpy(reminders[i], day_str); + strcat(reminders[i], msg_str); + + num_remind++; + } + + printf("\nDay Reminder\n"); + for (i = 0; i < num_remind; i++) + printf(" %s\n", reminders[i]); + + return 0; +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/17_Advanced_Uses_of_Pointers/Examples/tabulate.c b/17_Advanced_Uses_of_Pointers/Examples/tabulate.c new file mode 100644 index 0000000..4e1d1d7 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Examples/tabulate.c @@ -0,0 +1,53 @@ +/* + * tabulate.c + * + * Created on: Jun 17, 2013 + * Author: delmadord + */ + + +#include +#include + +void tabulate(double (*f)(double), double first, + double last, double incr); + +int main(void) { + double final, increment, initial; + + printf("Enter initial value: "); + scanf("%lf", &initial); + + printf("Enter final value: "); + scanf("%lf", &final); + + printf("Enter increment: "); + scanf("%lf", &increment); + + printf("\n x cos(x)" + "\n ------- -------\n"); + tabulate(cos, initial, final, increment); + + printf("\n x sin(x)" + "\n ------- -------\n"); + tabulate(sin, initial, final, increment); + + printf("\n x tan(x)" + "\n ------- -------\n"); + tabulate(tan, initial, final, increment); + + return 0; +} + +void tabulate(double (*f)(double), double first, + double last, double incr) { + double x; + int i, num_intervals; + + num_intervals = ceil((last - first) / incr); + for (i = 0; i <= num_intervals; i++) { + x = first + i * incr; + printf("%10.5f %10.5f\n", x, (*f)(x)); + } +} + diff --git a/17_Advanced_Uses_of_Pointers/Exercises/ex_01_05.c b/17_Advanced_Uses_of_Pointers/Exercises/ex_01_05.c new file mode 100644 index 0000000..4c3a0a3 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/ex_01_05.c @@ -0,0 +1,88 @@ +/* + * ex_01_05.c + * + * Created on: Jun 17, 2013 + * Author: delmadord + */ + +#include +#include +#include + +#define COUNT(x) ((int) (sizeof(x) / sizeof(x[0]))) + +// ex_01 +void *my_malloc(size_t size); +// ex_02 +char *duplicate(const char *s); +// ex_03 +int *create_array(int n, int init); +// ex_04 +struct point {int x, y; }; +struct rectangle {struct point upper_left, lower_right; }; +struct rectangle *p; +// ex_05 +struct { + union { + char a, b; + int c; + } d; + int e[5]; +} f, *q = &f; + + +int main(void) { + char *str = "String to duplicate."; + char *dup = duplicate(str); + printf("%s\n\n", dup); + + + + int i, n = 5, *a = create_array(n, 5); + printf("The a array: "); + for (i = 0; i < n; i++) + printf("%d ", a[i]); + printf("\n\n"); + + + p->upper_left.x = 10; + p->upper_left.x = 25; + p->lower_right.x = 20; + p->lower_right.x = 15; + + +// q->b = ' '; + q->e[3] = 10; + (*q).d.a = '*'; +// q->d->c = 20; + + + return 0; +} + + +void *my_malloc(size_t size) { + void *p = malloc(size); + if (p == NULL) { + printf("Memory allocation unsuccessful.\n"); + exit(EXIT_FAILURE); + } + return p; +} + +char *duplicate(const char *s) { + char *temp = malloc(strlen(s) + 1); + + if (temp == NULL) + return NULL; + + strcpy(temp, s); + return temp; +} + +int *create_array(int n, int init) { + int i, *a = my_malloc(n * sizeof(int)); + for (i = 0; i < n; i++) + a[i] = init; + return a; +} diff --git a/17_Advanced_Uses_of_Pointers/Exercises/ex_08.c/stack.c b/17_Advanced_Uses_of_Pointers/Exercises/ex_08.c/stack.c new file mode 100644 index 0000000..2ac1735 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/ex_08.c/stack.c @@ -0,0 +1,63 @@ +/* + * stack.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + +#include /* C99 only */ +#include +#include +#include "stack.h" + +struct node { + int value; + struct node *next; +}; + +struct node *top = NULL; + +void make_empty(void) { + struct node *temp; + + while (top != NULL) { + temp = top; + top = top->next; + free(temp); + } +} + +bool is_empty(void) { + return top == NULL; +} + +bool push(int i) { + struct node *new_node; + + new_node = malloc(sizeof(struct node)); + if (new_node == NULL) + return false; + + new_node->value = i; + new_node->next = top; + top = new_node; + + return true; +} + +int pop(void) { + struct node *temp; + int i; + + if (is_empty()) { + printf("*** Stack underflow; program terminated. ***\n"); + exit(EXIT_FAILURE); + } + + i = top->value; + temp = top; + top = top->next; + free(temp); + + return i; +} diff --git a/17_Advanced_Uses_of_Pointers/Exercises/ex_09.c b/17_Advanced_Uses_of_Pointers/Exercises/ex_09.c new file mode 100644 index 0000000..99e2e24 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/ex_09.c @@ -0,0 +1,34 @@ +/* + * ex_09.c + * + * Created on: Jun 18, 2013 + * Author: delmadord + */ +#include +#include +#include + + +struct node{ + int value; + struct node *next; +}; + +int main(void) { + // ex_09 + struct node x; + if ((&x)->value == (*(&x)).value) + printf("(&x)->value is the same as (*(&x)).value\n"); + if ((*(&x)).value == (*&x).value) + printf("(*(&x)).value is the same as (*&x).value\n"); + if ((*&x).value == x.value) + printf("(*&x).value is the same as x.value\n"); + if ((&x)->value == x.value) + printf("So (&x)->value is the same as x.value\n\n"); + + + + + return 0; +} + diff --git a/17_Advanced_Uses_of_Pointers/Exercises/ex_15.c b/17_Advanced_Uses_of_Pointers/Exercises/ex_15.c new file mode 100644 index 0000000..9e5e9b0 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/ex_15.c @@ -0,0 +1,34 @@ +/* + * ex_15.c + * + * Created on: Jun 19, 2013 + * Author: delmadord + */ + +//Answer: 3 +//The program tests the values of f2(0), f2(1), f2(2), and so on, +//stopping when f2 returns zero. It then prints the argument that +//was passed to f2 to make it return zero. + +#include + +int f1(int (*f)(int)); +int f2(int i); + +int main(void) { + printf("Answer: %d\n", f1(f2)); + + return 0; +} + +int f1(int (*f)(int)) { + int n = 0; + while ((*f)(n)) + n++; + + return n; +} + +int f2(int i) { + return i * i + i - 12; +} diff --git a/17_Advanced_Uses_of_Pointers/Exercises/ex_16.c b/17_Advanced_Uses_of_Pointers/Exercises/ex_16.c new file mode 100644 index 0000000..98e84b5 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/ex_16.c @@ -0,0 +1,30 @@ +/* + * ex_16.c + * + * Created on: Jun 20, 2013 + * Author: delmadord + */ +#include + + +int sum(int (*f)(int), int start, int end); +int square(int x); + +int main(void) { + int s, e; + scanf("%d %d", &s, &e); + printf("%d", sum(square, s, e)); + + return 0; +} + +int sum(int (*f)(int), int start, int end) { + int sum = 0; + while (start <= end) + sum += (*f)(start++); + return sum; +} + +int square(int x) { + return x * x; +} diff --git a/17_Advanced_Uses_of_Pointers/Exercises/ex_19.c b/17_Advanced_Uses_of_Pointers/Exercises/ex_19.c new file mode 100644 index 0000000..0382949 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/ex_19.c @@ -0,0 +1,90 @@ +/* + * ex_19.c + * + * Created on: Jun 20, 2013 + * Author: delmadord + */ + +#include +#include + +#define COUNT(x) ((int) (sizeof(x) / sizeof(x[0]))) + +void new_cmd(void); +void open_cmd(void); +void close_cmd(void); +void close_all_cmd(void); +void save_cmd(void); +void save_as_cmd(void); +void save_all_cmd(void); +void print_cmd(void); +void exit_cmd(void); + +struct { + char *cmd_name; + void (*cmd_pointer)(void); +} file_cmd[] = { + {"new", new_cmd}, + {"open", open_cmd}, + {"close", close_cmd}, + {"close_all", close_all_cmd}, + {"save", save_cmd}, + {"save as", save_as_cmd}, + {"save_all", save_all_cmd}, + {"print", print_cmd}, + {"exit", exit_cmd} +}; + +int main(void) { + char user_cmd[15]; + printf("Enter command: "); + scanf("%s", user_cmd); + + int i; + for (i = 0; i < COUNT(file_cmd); i++) + if (strcmp(file_cmd[i].cmd_name, user_cmd) == 0) { + printf("command found: "); + file_cmd[i].cmd_pointer(); + return 0; + } + + printf("command not found"); + return 0; +} + +void new_cmd(void) { + printf("new"); +} + +void open_cmd(void) { + printf("open"); +} + +void close_cmd(void) { + printf("close"); +} + +void close_all_cmd(void) { + printf("close all"); +} + +void save_cmd(void) { + printf("save"); +} + +void save_as_cmd(void) { + printf("save as"); +} + +void save_all_cmd(void) { + printf("save all"); +} + +void print_cmd(void) { + printf("print"); +} + +void exit_cmd(void) { + printf("exit"); +} + diff --git a/17_Advanced_Uses_of_Pointers/Exercises/linked_exercises.c b/17_Advanced_Uses_of_Pointers/Exercises/linked_exercises.c new file mode 100644 index 0000000..8f7b56a --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Exercises/linked_exercises.c @@ -0,0 +1,176 @@ +/* + * linked_exercises.c + * + * Created on: Jun 24, 2013 + * Author: delmadord + */ + +#include +#include + + +struct node{ + int value; + struct node *next; +}; + +struct node *add_list_beginnig(struct node *list, int n); +struct node *add_list_end(struct node **list, int n); +struct node *search_list(struct node *list, int n); +void delete_from_list(struct node **list, int n); + +void truncate_list(struct node *list); + +int count_occurences(struct node *list, int n); +struct node *find_last(struct node *list, int n); + +void *my_malloc(size_t size); + +int main(void) { + struct node *q, *list = NULL; + add_list_end(&list, 1); + add_list_end(&list, 2); + add_list_end(&list, 3); +// truncate_list(list); + add_list_end(&list, 4); + add_list_end(&list, 5); + add_list_end(&list, 6); + + delete_from_list(&list, 1); + + + // Change n + int i, n = 2, c = count_occurences(list, n); + printf("occurences of %d: %d\n", n, c); + if (c > 0) { + struct node *p, *last_n = find_last(list, n); + for (i = 1, p = list; p != last_n; p = p->next, i++) + ; + printf("last occurence of %d is at %d. node\n\n", n, i); + } + printf("list itself:\n"); + q = list; + while (q != NULL) { + printf("\t%d\n", list->value); + list = list->next; + } + + return 0; +} + + +struct node *add_list_beginnig(struct node *list, int n) { + struct node *new_node = my_malloc(sizeof(struct node)); + + new_node->value = n; + new_node->next = list; + return new_node; +} + +// adds element to the end of the list +// in some cases, the brackets around *list aren't necessary, +// but I left there for consistency +struct node *add_list_end(struct node **list, int n) { + // make list point to pointer to last element + // (that is pointing to NULL) + while ((*list) != NULL) + list = &((*list)->next); + + // now list points to pointer to new node + // (the new last element, which now points to NULL) + (*list) = my_malloc(sizeof(struct node)); + (*list)->value = n; + (*list)->next = NULL; + + // returns the pointer to the new node (last element) + return (*list); +} + +struct node *insert_into_ordered_list + (struct node *list, struct node *new_node) { + // new_node is empty + if (new_node == NULL) + return NULL; + + // list is empty + if (list == NULL) { + list = new_node; + list->next = NULL; + return list; + } + + struct node *cur = list, *prev = NULL; + while (cur->value <= new_node->value) { + prev = cur; + cur = cur->next; + } + + prev->next = new_node; + new_node->next = cur; + return list; +} + +struct node *search_list(struct node *list, int n) { + while (list != NULL && list->value != n) + list = list->next; + return list; +} + +void delete_from_list(struct node **list, int n) { + // make list point to pointer to node before node with n + while ((*list)->next->value != n) { + list = &((*list)->next); + // next iteration would cause SF (otherwise, n wasnt found) + if ((*list)->next == NULL) + return; + } + + struct node *jump = (*list)->next->next; + free((*list)->next); + (*list)->next = jump; +} + + +void truncate_list(struct node *list) { + struct node *temp, *p = list; + while (p != NULL) { + temp = p; + p = p->next; + free(temp); + } +} + + + +// find how many times n occurs in the list, +int count_occurences(struct node *list, int n) { + int count = 0; + while (list != NULL) { + if (list->value == n) + count++; + list = list->next; + } + + return count; +} + +// returns pointer to the last node cointaining n, NULL if n not found +struct node *find_last(struct node *list, int n) { + struct node *p = NULL; + while (list != NULL) { + if (list->value == n) + p = list; + list = list->next; + } + return p; +} + +void *my_malloc(size_t size) { + void *p = malloc(size); + if (p == NULL) { + printf("Memory allocation unsuccessful.\n"); + exit(EXIT_FAILURE); + } + return p; +} + diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_01/inventory.c b/17_Advanced_Uses_of_Pointers/Projects/pr_01/inventory.c new file mode 100644 index 0000000..172a707 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_01/inventory.c @@ -0,0 +1,147 @@ +/* + * inventory.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +/* Maintains a parts database (array version) */ +#include +#include +#include "readline.h" + +#define NAME_LEN 25 +#define INIT_PARTS 10 + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; +}; + +struct part *inventory; + +int num_parts = 0; +int max_parts = INIT_PARTS; + +int find_part(int number); +void insert(void); +void search(void); +void update(void); +void print(void); + +int main(void) { + char code; + + inventory = malloc(max_parts * sizeof(struct part)); + if (inventory == NULL) { + printf("Can't allocate initial inventory space.\n"); + exit(EXIT_FAILURE); + } + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return EXIT_SUCCESS; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +int find_part(int number) { + int i; + + for (i = 0; i < num_parts; i++) + if (inventory[i].number == number) + return i; + return -1; +} + +void insert(void) { + int part_number; + struct part *temp; + + if (num_parts == max_parts) { + max_parts *= 2; + temp = realloc(inventory, max_parts * sizeof(struct part)); + if (temp == NULL) { + printf("Insufficient memory; can't add more parts.\n"); + return; + } + inventory = temp; + } + + printf("Enter part number: "); + scanf("%d", &part_number); + if (find_part(part_number) >= 0) { + printf("Part already exists.\n"); + return; + } + + inventory[num_parts].number = part_number; + printf("Enter part name: "); + read_line(inventory[num_parts].name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &inventory[num_parts].on_hand); + num_parts++; +} + +void search(void) { + int i, number; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Part name: %s\n", inventory[i].name); + printf("Quantity on hand: %d\n", inventory[i].on_hand); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int i, number, change; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + inventory[i].on_hand += change; + } + else + printf("Part not found.\n"); +} + +void print(void) { + int i; + printf("Part Number Part Name " + "Quantity on Hand\n"); + for (i = 0; i < num_parts; i++) + printf("%7d %-25s%11d\n", inventory[i].number, + inventory[i].name, inventory[i].on_hand); +} + + diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_02/inventory.c b/17_Advanced_Uses_of_Pointers/Projects/pr_02/inventory.c new file mode 100644 index 0000000..35da8ac --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_02/inventory.c @@ -0,0 +1,169 @@ +/* + * inventory.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +// COPY OF 16_pr_02 + +/* Maintains a parts database (array version) + * Sorts output by part number before printing */ +#include +#include +#include "readline.h" +//#include "string.h" + +#define NAME_LEN 25 +#define MAX_PARTS 100 + +//typedef int (*compfn)(const void*, const void*); + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; +} inventory [MAX_PARTS]; + +int num_parts = 0; + +int find_part(int number); +void insert(void); +void search(void); +void update(void); +void print(void); +int compare(struct part *elem1, struct part *elem2); + +int main(void) { +// inventory[0].number = 3; +// strcpy(inventory[0].name, "b3"); +// inventory[0].on_hand = 1; +// +// inventory[1].number = 4; +// strcpy(inventory[1].name, "d4"); +// inventory[1].on_hand = 1; +// +// inventory[2].number = 2; +// strcpy(inventory[2].name, "c2"); +// inventory[2].on_hand = 1; +// +// inventory[3].number = 1; +// strcpy(inventory[3].name, "a1"); +// inventory[3].on_hand = 1; +// +// num_parts = 4; + + char code; + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return 0; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +int find_part(int number) { + int i; + + for (i = 0; i < num_parts; i++) + if (inventory[i].number == number) + return i; + return -1; +} + +void insert(void) { + int part_number; + + if (num_parts == MAX_PARTS) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &part_number); + + if (find_part(part_number) >= 0) { + printf("Part already exists.\n"); + return; + } + + inventory[num_parts].number = part_number; + printf("Enter part name: "); + read_line(inventory[num_parts].name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &inventory[num_parts].on_hand); + num_parts++; +} + +void search(void) { + int i, number; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Part name: %s\n", inventory[i].name); + printf("Quantity on hand: %d\n", inventory[i].on_hand); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int i, number, change; + + printf("Enter part number: "); + scanf("%d", &number); + i = find_part(number); + if (i >= 0) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + inventory[i].on_hand += change; + } + else + printf("Part not found.\n"); +} + +void print(void) { + int i; + printf("Part Number Part Name " + "Quantity on Hand\n"); + qsort(inventory, num_parts, sizeof(struct part), compare); + for (i = 0; i < num_parts; i++) + printf("%7d %-25s%11d\n", inventory[i].number, + inventory[i].name, inventory[i].on_hand); +} + +int compare(struct part *elem1, struct part *elem2) { + if ( elem1->number < elem2->number) + return -1; + + else if (elem1->number > elem2->number) + return 1; + + else + return 0; +} + diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_03/inventory2.c b/17_Advanced_Uses_of_Pointers/Projects/pr_03/inventory2.c new file mode 100644 index 0000000..eae66aa --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_03/inventory2.c @@ -0,0 +1,173 @@ +/* + * inventory2.c + * + * Created on: Jun 16, 2013 + * Author: delmadord + */ + + +/* Maintains a parts database (array version) */ +#include +#include +#include "readline.h" + +#define NAME_LEN 25 + +struct part { + int number; + char name[NAME_LEN + 1]; + int on_hand; + struct part *next; +}; + +struct part *inventory = NULL; + +struct part *find_part(int number); +void insert(void); +void erase(void); +void search(void); +void update(void); +void print(void); + +int main(void) { + char code; + + while (1) { + printf("Enter operation code: "); + scanf(" %c", &code); + while (getchar() != '\n') + ; + switch (code) { + case 'i': + insert(); + break; + case 'e': + erase(); + break; + case 's': + search(); + break; + case 'u': + update(); + break; + case 'p': + print(); + break; + case 'q': + return 0; + default: + printf("Illegal code\n"); + break; + } + printf("\n"); + } +} + +struct part *find_part(int number) { + struct part *p; + + for (p = inventory; + p != NULL && number > p->number; + p = p->next) + ; + if (p != NULL && number == p->number) + return p; + return NULL; +} + +void insert(void) { + struct part *cur, *prev, *new_node; + + new_node = malloc(sizeof(struct part)); + if (new_node == NULL) { + printf("Database is full; can't add more parts.\n"); + return; + } + + printf("Enter part number: "); + scanf("%d", &new_node->number); + + for (cur = inventory, prev = NULL; + cur != NULL && new_node->number > cur->number; + prev = cur, cur = cur->next) + ; + + if (cur != NULL && new_node->number == cur->number) { + printf("Part already exists.\n"); + free(new_node); + return; + } + + printf("Enter part name: "); + read_line(new_node->name, NAME_LEN); + printf("Enter quantity on hand: "); + scanf("%d", &new_node->on_hand); + + new_node->next = cur; + if (prev == NULL) + inventory = new_node; + else + prev->next = new_node; +} + +void erase(void) { + int number; + printf("Enter part number: "); + scanf("%d", &number); + struct part *p = inventory, *temp; + while (p->next != NULL) { + if (p->next->number == number) { + temp = p->next->next; + free(p->next); + p->next = temp; + printf("%d erased successfuly.\n", number); + return; + } + p = p->next; + } + + printf("%d not found.\n", number); +} + + +void search(void) { + int number; + struct part *p; + + printf("Enter part number: "); + scanf("%d", &number); + p = find_part(number); + if (p != NULL) { + printf("Part name: %s\n", p->name); + printf("Quantity on hand: %d\n", p->on_hand); + } + else + printf("Part not found.\n"); +} + +void update(void) { + int number, change; + struct part *p; + + printf("Enter part number: "); + scanf("%d", &number); + p = find_part(number); + if (p != NULL) { + printf("Enter change in quantity on hand: "); + scanf("%d", &change); + p->on_hand += change; + } + else + printf("Part not found.\n"); +} + +void print(void) { + struct part *p; + printf("Part Number Part Name " + "Quantity on Hand\n"); + for (p = inventory; p != NULL; p = p->next) + printf("%7d %-25s%11d\n", p->number, + p->name, p->on_hand); +} + + diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_04/NOTE b/17_Advanced_Uses_of_Pointers/Projects/pr_04/NOTE new file mode 100644 index 0000000..c6d9f1b --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_04/NOTE @@ -0,0 +1,8 @@ +Modify the justify program of section 15.3 by rewriting line.c file so that +it sotres the current line in a linked list. Each node in the list will +store a single word. The linr array will be replaced by a pointer variable +that points to the node containing the first word. This variable will store +a null pointer whenever the line is empty. + + +I DID NOT DO THIS...IT IS UNMODIFIED. \ No newline at end of file diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_04/line.c b/17_Advanced_Uses_of_Pointers/Projects/pr_04/line.c new file mode 100644 index 0000000..cc1c927 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_04/line.c @@ -0,0 +1,62 @@ +/* + * line.c + * + * Created on: Jun 13, 2013 + * Author: delmadord + */ + + +#include +#include +#include "line.h" + + +#define MAX_LINE_LEN 60 + +char line[MAX_LINE_LEN + 1]; +int line_len = 0; +int num_words = 0; + +void clear_line(void) { + line[0] = '\0'; + line_len = 0; + num_words = 0; +} + +void add_word(const char *word) { + if (num_words > 0) { + line[line_len] = ' '; + line[line_len + 1] = '\0'; + line_len++; + } + strcat(line, word); + line_len += strlen(word); + num_words++; +} + +int space_remainig(void) { + return MAX_LINE_LEN - line_len; +} + +void write_line(void) { + int extra_spaces, spaces_to_insert, i, j; + + extra_spaces = MAX_LINE_LEN - line_len; + for (i = 0; i < line_len; i++) { + if (line[i] != ' ') + putchar(line[i]); + else { + spaces_to_insert = extra_spaces / (num_words - 1); + for (j = 1; j <= spaces_to_insert + 1; j++) + putchar(' '); + extra_spaces -= spaces_to_insert; + num_words--; + } + } + putchar('\n'); +} + +void flush_line(void) { + if (line_len > 0) + puts(line); +} diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_05/NOTE b/17_Advanced_Uses_of_Pointers/Projects/pr_05/NOTE new file mode 100644 index 0000000..5d07a5b --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_05/NOTE @@ -0,0 +1 @@ +I DID PROJECT 6 WITHOUT PROJECT 5 \ No newline at end of file diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_06/words_sort.c b/17_Advanced_Uses_of_Pointers/Projects/pr_06/words_sort.c new file mode 100644 index 0000000..3cb4b87 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_06/words_sort.c @@ -0,0 +1,90 @@ +/* + * words_sort.c + * + * Created on: Jun 24, 2013 + * Author: delmadord + */ + + +#include +#include +#include + +#define WORD_LEN 20 +#define INIT_WORD_COUNT 10 + + +int read_line(char str[], int n); +void *my_malloc(size_t size); +void *my_realloc(void *p, size_t size); +int compare (const void *a, const void *b); + +int main(void) { + int wlen, count = 0, max = INIT_WORD_COUNT; + char **words = my_malloc(max * sizeof(char *)), word[WORD_LEN + 1]; + + while (1) { + printf("Enter word: "); + // there are some characters, not just enter + if ((wlen = read_line(word, WORD_LEN)) == 0) + break; + + // just make sure there is enough memory + if (count == max) { + max *= 2; + words = my_realloc(words, max * sizeof(char *)); + } + + // add pointer to newly added word to array of pointers to strings + words[count] = my_malloc(wlen + 1); + strcpy(words[count++], word); + } + + int i; +// printf("\nYou entered words: "); +// for (i = 0; i < count; i++) +// printf("%s ", words[i]); + + qsort(words, count, sizeof(char *), compare); + printf("\nIn sorted order: "); + for (i = 0; i < count; i++) + printf("%s ", words[i]); + + return EXIT_SUCCESS; +} + + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} + +void *my_malloc(size_t size) { + void *p = malloc(size); + if (p == NULL) { + printf("Memory allocation unsuccessful.\n"); + exit(EXIT_FAILURE); + } + return p; +} + +void *my_realloc(void *p, size_t size) { + void *temp = realloc(p, size); + if (temp == NULL) { + printf("Insufficient memory; can't add more items.\n"); + exit(EXIT_FAILURE); + } + return temp; +} + +int compare (const void *a, const void *b) { + const char **aa = (const char **)a; + const char **bb = (const char **)b; + + return strcmp(*aa, *bb); +} diff --git a/17_Advanced_Uses_of_Pointers/Projects/pr_07/remind2.c b/17_Advanced_Uses_of_Pointers/Projects/pr_07/remind2.c new file mode 100644 index 0000000..45589e9 --- /dev/null +++ b/17_Advanced_Uses_of_Pointers/Projects/pr_07/remind2.c @@ -0,0 +1,89 @@ +/* + * remind2.c + * + * Created on: Jun 17, 2013 + * Author: delmadord + */ + + + +// Prints a one-month reminder list + +// USING VSTRING STRUCTURE BUT FUCK IT, IT IS NOT WORKING + +#include +#include +#include + +#define MAX_REMIND 50 +#define MSG_LEN 60 + +struct vstring { + int len; + char chars[]; +}; + + +int read_line(char str[], int n); + +int main(void) { + + struct vstring *reminders[MAX_REMIND]; + char day_str[3], msg_str[MSG_LEN + 1]; + int day, i, j, k, n, num_remind = 0; + + while (1) { + if (num_remind == MAX_REMIND) { + printf("-- No space left --n"); + break; + } + + printf("Enter day reminder: "); + scanf("%2d", &day); + if (day == 0) + break; + sprintf(day_str, "%2d", day); + read_line(msg_str, MSG_LEN); + + for (i = 0; i < num_remind; i++) + if (strcmp(day_str, reminders[i]->chars) < 0) + break; + for (j = num_remind; j > i; j--) + reminders[j] = reminders[j - i]; + + n = strlen(msg_str); + reminders[i] = malloc(sizeof(struct vstring) + n); + if (reminders[i] == NULL) { + printf("-- No space left --\n"); + break; + } + reminders[i]->len = n; + + strcpy(reminders[i]->chars, day_str); + strcat(reminders[i]->chars, msg_str); + + num_remind++; + } + + printf("\nDay Reminder\n"); + for (i = 0; i < num_remind; i++) { + putchar(' '); + for (k = 0; k < reminders[i]->len; k++) + putchar(reminders[i]->chars); + putchar('\n'); + } + +// printf(" %s\n", reminders[i]->chars); + + return 0; +} + +int read_line(char str[], int n) { + int ch, i = 0; + + while ((ch = getchar()) != '\n') + if (i < n) + str[i++] = ch; + str[i] = '\0'; + return i; +} diff --git a/18_Declarations/Debug/18_Declarations b/18_Declarations/Debug/18_Declarations new file mode 100644 index 0000000000000000000000000000000000000000..0dd10115a77f168bb17c71b3fefc11018f5eba39 GIT binary patch literal 17136 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 literal 0 HcmV?d00001 diff --git a/20_Bitwise_Operators/Debug/Examples/subdir.mk b/20_Bitwise_Operators/Debug/Examples/subdir.mk new file mode 100644 index 0000000..5681688 --- /dev/null +++ b/20_Bitwise_Operators/Debug/Examples/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Examples/viewmemory.c + +OBJS += \ +./Examples/viewmemory.o + +C_DEPS += \ +./Examples/viewmemory.d + + +# Each subdirectory must supply rules for building sources it contributes +Examples/%.o: ../Examples/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/20_Bitwise_Operators/Debug/Exercises/ex_01.d b/20_Bitwise_Operators/Debug/Exercises/ex_01.d new file mode 100644 index 0000000..fbc388d --- /dev/null +++ b/20_Bitwise_Operators/Debug/Exercises/ex_01.d @@ -0,0 +1 @@ +Exercises/ex_01.d: ../Exercises/ex_01.c diff --git a/20_Bitwise_Operators/Debug/Exercises/ex_01.o b/20_Bitwise_Operators/Debug/Exercises/ex_01.o new file mode 100644 index 0000000000000000000000000000000000000000..8e1ac9f972c73d7e17185e00ee5543d571497781 GIT binary patch literal 45856 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 literal 0 HcmV?d00001 diff --git a/20_Bitwise_Operators/Debug/Exercises/subdir.mk b/20_Bitwise_Operators/Debug/Exercises/subdir.mk new file mode 100644 index 0000000..3c20f4e --- /dev/null +++ b/20_Bitwise_Operators/Debug/Exercises/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Exercises/ex_01.c + +OBJS += \ +./Exercises/ex_01.o + +C_DEPS += \ +./Exercises/ex_01.d + + +# Each subdirectory must supply rules for building sources it contributes +Exercises/%.o: ../Exercises/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/20_Bitwise_Operators/Debug/makefile b/20_Bitwise_Operators/Debug/makefile new file mode 100644 index 0000000..4a91b8e --- /dev/null +++ b/20_Bitwise_Operators/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Exercises/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: 20_Bitwise_Operators + +# Tool invocations +20_Bitwise_Operators: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "20_Bitwise_Operators" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) 20_Bitwise_Operators + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/20_Bitwise_Operators/Examples/msg b/20_Bitwise_Operators/Examples/msg new file mode 100644 index 0000000..415e20b --- /dev/null +++ b/20_Bitwise_Operators/Examples/msg @@ -0,0 +1,3 @@ +Trust not him with your secrets, who, when left +alone in your room, turns over your papers. + --Johann Kaspar Lavater (1741-1801) \ No newline at end of file diff --git a/20_Bitwise_Operators/Examples/newmsg b/20_Bitwise_Operators/Examples/newmsg new file mode 100644 index 0000000..0927d8b --- /dev/null +++ b/20_Bitwise_Operators/Examples/newmsg @@ -0,0 +1,3 @@ +rTSUR HIR NOK QORN _IST UCETCRU, QNI, QNCH JC@R +GJIHC OH _IST TIIK, RSTHU IPCT _IST VGVCTU. + --lINGHH mGUVGT jGPGRCT (1741-1801) \ No newline at end of file diff --git a/20_Bitwise_Operators/Examples/viewmemory.c b/20_Bitwise_Operators/Examples/viewmemory.c new file mode 100644 index 0000000..db060f6 --- /dev/null +++ b/20_Bitwise_Operators/Examples/viewmemory.c @@ -0,0 +1,52 @@ +/* + * viewmetmory.c + * + * Created on: Jun 28, 2013 + * Author: delmadord + */ + +/* Allows the user to view regions of computer memory */ + +#include +#include + +typedef unsigned char BYTE; + +int main(void) { + unsigned int addr; + int i, n; + BYTE *ptr; + + printf("Address of main function: %x\n", (unsigned int) main); + printf("Address of addr variable: %x\n", (unsigned int) &addr); + + printf("\nEnter a (hex) address: "); + scanf("%x", &addr); + printf("Enter number of bytes to view: "); + scanf("%d", &n); + + printf("\n"); + printf(" Address Bytes Characters\n"); + printf(" ------- ----------------------------- ----------\n"); + + ptr = (BYTE *) addr; + for (; n > 0; n -= 10) { + printf("%8X ", (unsigned int) ptr); + for (i = 0; i < 10 && i < n; i++) + printf("%.2X ", *(ptr + i)); + for (; i < 10; i++) + printf(" "); + printf(" "); + for (i = 0; i < 10 && i < n; i++) { + BYTE ch = *(ptr + i); + if (!isprint(ch)) + ch = '.'; + printf("%c", ch); + } + printf("\n"); + ptr += 10; + } + + return 0; +} + diff --git a/20_Bitwise_Operators/Examples/xor.c b/20_Bitwise_Operators/Examples/xor.c new file mode 100644 index 0000000..96518b6 --- /dev/null +++ b/20_Bitwise_Operators/Examples/xor.c @@ -0,0 +1,26 @@ +/* + * xor.c + * + * Created on: Jun 28, 2013 + * Author: delmadord + */ + +#include +#include + +#define KEY '&' + +int main(void) { + int orig_char, new_char; + + while ((orig_char = getchar()) != EOF) { + new_char = orig_char ^ KEY; + if (isprint(orig_char) && isprint(new_char)) + putchar(new_char); + else + putchar(orig_char); + } + + return 0; +} + diff --git a/20_Bitwise_Operators/Exercises/ex_01.c b/20_Bitwise_Operators/Exercises/ex_01.c new file mode 100644 index 0000000..ded6599 --- /dev/null +++ b/20_Bitwise_Operators/Exercises/ex_01.c @@ -0,0 +1,28 @@ +/* + * ex_01.c + * + * Created on: Jun 28, 2013 + * Author: delmadord + */ + +#include + +int main(void) { + unsigned short i, j, k; + + i = 8; j = 9; + printf("%d\n", i >> (1 + j) >> 1); // 0 + + i = 1; + printf("%d\n", i & ~i); // 0 + + i = 2; j = 1; k = 0; + printf("%d\n", (~i & j) ^ k); // 1 + + i = 7; j = 8; k = 9; + printf("%d\n", i ^ (j & k)); // 15 + + + + return 0; +}