From fe80d4c70ea8789234c787f3b1028738887f39a8 Mon Sep 17 00:00:00 2001 From: Alvie Rahman Date: Sun, 15 Oct 2023 15:29:46 +0100 Subject: [PATCH] remove things that aren't mechatronics lab1 --- Appendix1/Assertion/Assertions.c | 18 ---- Appendix1/CodeBlocking/Blocking.c | 45 -------- Appendix1/DebugAssertion/DebugAssertion.c | 11 -- Exercises/C10/ex2.c | 19 ---- Exercises/C10/ex3.c | 36 ------- Exercises/C10/ex4.c | 42 -------- Exercises/C10/ex5.c | 45 -------- Exercises/C10/function_example.c | 43 -------- Exercises/C10/void_function_example.c | 38 ------- Exercises/C11/array_loop_example_1.c | 16 --- Exercises/C11/array_loop_example_2.c | 25 ----- Exercises/C11/ex2.c | 15 --- Exercises/C11/ex3.c | 21 ---- Exercises/C11/initialise_string_example_1.c | 16 --- Exercises/C11/initialise_string_example_2.c | 15 --- Exercises/C12/scope_of_variables.c | 20 ---- .../accessing_via_pointers.c | 25 ----- Exercises/C13/assigning_pointers.c | 24 ----- Exercises/C13/ex2.c | 27 ----- Exercises/C13/ex3.c | 27 ----- Exercises/C14/Makefile | 1 - Exercises/C14/ex1.c | 32 ------ Exercises/C14/ex2.c | 29 ----- Exercises/C14/ex3.c | 33 ------ Exercises/C14/quadratic_solver.c | 55 ---------- Exercises/C14/quadratic_solver_function.c | 24 ----- Exercises/C15/pointer_array_example_1.c | 20 ---- Exercises/C15/pointer_array_example_2.c | 22 ---- Exercises/C15/pointer_array_example_3.c | 23 ---- Exercises/C15/pointer_array_example_4.c | 33 ------ Exercises/C16/alloc_example_1.c | 17 --- Exercises/C16/alloc_example_2.c | 14 --- Exercises/C16/alloc_example_3.c | 22 ---- Exercises/C16/alloc_example_4.c | 25 ----- Exercises/C16/ex2.c | 18 ---- Exercises/C16/ex3.c | 23 ---- .../arrays_to_functions_example_1.c | 40 ------- .../arrays_to_functions_example_2.c | 55 ---------- Exercises/C17/ex2.c | 62 ----------- .../C18/BinaryFile/binary_file_example.c | 64 ----------- Exercises/C18/BinaryFile/numbers.dat | Bin 44 -> 0 bytes Exercises/C18/FileOpen/file_open_example.c | 52 --------- Exercises/C18/TextFile/numbers.txt | 10 -- Exercises/C18/TextFile/text_file_example.c | 55 ---------- Exercises/C18/ex2.c | 55 ---------- Exercises/C18/ex3.c | 60 ----------- Exercises/C18/ex4.c | 92 ---------------- Exercises/C18/ex5.c | 88 ---------------- Exercises/C18/ex6.c | 51 --------- Exercises/C19/DefineExamples/define_example.c | 18 ---- Exercises/C19/enum_example.c | 22 ---- Exercises/C19/ex1.c | 20 ---- Exercises/C19/ex2.c | 25 ----- Exercises/C19/ex3.c | 27 ----- Exercises/C19/ex4.c | 50 --------- Exercises/C19/static_variable_example.c | 26 ----- .../conditional_directive_example.c | 15 --- .../formatting_directive_example.c | 15 --- Exercises/C20/macro_function_example.c | 8 -- Exercises/C21/sprintf_example.c | 19 ---- Exercises/C3/hello_world.c | 10 -- Exercises/C4/Correct_answer/correct_answer.c | 20 ---- Exercises/C4/Wrong_answer/wrong_answer.c | 20 ---- Exercises/C4/declare_a_string.c | 13 --- Exercises/C4/difficult_to_read_code.c | 4 - Exercises/C4/poor_layout/poor_layout.c | 4 - Exercises/C4/reformatted_code.c | 19 ---- Exercises/C4/simple_claculation.c | 8 -- Exercises/C4/well_laid_out_code.c | 8 -- .../C5/FormattingNumbers/formatting_numbers.c | 24 ----- Exercises/C5/displaying_variables.c | 15 --- Exercises/C5/ex4.c | 11 -- Exercises/C5/ex5.c | 11 -- Exercises/C5/not_displaying.c | 17 --- Exercises/C5/printf_example_1.c | 12 --- Exercises/C5/printf_example_2.c | 12 --- Exercises/C6/ex1.c | 28 ----- Exercises/C6/ex2.c | 14 --- Exercises/C6/ex3.c | 14 --- Exercises/C6/inc_dec_examples.c | 22 ---- Exercises/C7/Getchar/getchar_example.c | 20 ---- Exercises/C7/Scanf1/scanf_example_1.c | 28 ----- Exercises/C7/Scanf2/scanf_example_2.c | 28 ----- Exercises/C7/ex2.c | 11 -- Exercises/C7/ex3.c | 13 --- Exercises/C7/ex4.c | 11 -- Exercises/C7/ex5.c | 15 --- Exercises/C7/string_with_gets.c | 19 ---- Exercises/C7/string_with_scanf.c | 20 ---- Exercises/C8/ex2.c | 14 --- Exercises/C8/ex3.c | 14 --- Exercises/C8/ex4.c | 21 ---- Exercises/C8/ex7.c | 25 ----- Exercises/C8/if_example.c | 27 ----- Exercises/C8/switch_example_1.c | 29 ----- Exercises/C8/switch_example_2.c | 25 ----- Exercises/C8/switch_example_3.c | 23 ---- Exercises/C9/do_while_loop.c | 24 ----- Exercises/C9/ex2.c | 23 ---- Exercises/C9/ex3.c | 14 --- Exercises/C9/ex4.c | 21 ---- Exercises/C9/ex5.c | 9 -- Exercises/C9/ex6.c | 29 ----- Exercises/C9/ex7.c | 29 ----- Exercises/C9/ex8.c | 32 ------ Exercises/C9/for_loop_examples.c | 31 ------ Exercises/C9/infinite_while_loop.c | 23 ---- Exercises/C9/while_loop.c | 19 ---- ...=> InitialiseEncoderStateMachineAAR.drawio | 0 ...df => InitialiseEncoderStateMachineAAR.pdf | Bin Labs/Lab_1/Makefile | 7 -- .../SimpleFunctions1/simple_functions_1.c | 49 --------- .../SimpleFunctions2/simple_functions_2.c | 51 --------- Lectures/LC11/loop_into_array.c | 26 ----- Lectures/LC12/Global1/global_ex1.c | 28 ----- Lectures/LC12/Global2/global_ex2.c | 37 ------- Lectures/LC12/Global3/global_ex3.c | 57 ---------- Lectures/LC14/LineLength/LineLength.c | 26 ----- .../PointerFunc1/pointer_function_example_1.c | 32 ------ .../PointerFunc2/pointer_function_example_2.c | 31 ------ .../pointer_to_array_examples.c | 33 ------ .../LC15/PointerToArray1/pointer_to_array_1.c | 24 ----- .../LC15/PointerToArray2/pointer_to_array_2.c | 32 ------ Lectures/LC16/Dynamic1/Dynamic1.c | 46 -------- Lectures/LC16/Dynamic2/Dynamic2.c | 54 ---------- Lectures/LC16/Dynamic3/Dynamic3.c | 67 ------------ .../LC17/DynamicFunction/DynamicFunction.c | 81 -------------- Lectures/LC17/Quadratic_with_Pointers.c | 61 ----------- Lectures/LC18/EndOfFile/EndOfFile.c | 55 ---------- Lectures/LC18/EndOfFile/numbers.txt | 10 -- Lectures/LC18/EndOfFileBreak/EndOfFileBreak.c | 57 ---------- Lectures/LC18/EndOfFileBreak/numbers.txt | 10 -- Lectures/LC18/EndOfFileScanf/EndOfFileScanf.c | 54 ---------- Lectures/LC18/EndOfFileScanf/numbers.txt | 10 -- Lectures/LC18/FileMove/data.dat | Bin 44 -> 0 bytes Lectures/LC18/FileMove/filemove.c | 48 --------- Lectures/LC18/FileSize/data.dat | Bin 44 -> 0 bytes Lectures/LC18/FileSize/filesize.c | 38 ------- .../LC19/ConstHashDefine/ConstHashDefine.c | 33 ------ Lectures/LC19/Enum/enum.c | 24 ----- Lectures/LC19/FileHeader/file_header.c | 90 ---------------- Lectures/LC19/FileHeader/strdata.dat | Bin 412 -> 0 bytes .../LC19/FileHeaderMove/file_header_move.c | 99 ------------------ Lectures/LC19/FileHeaderMove/strdata.dat | Bin 412 -> 0 bytes Lectures/LC19/Static/Static.c | 45 -------- Lectures/LC19/Structure1/Structure_1.c | 27 ----- Lectures/LC19/Structure2/Structure_2.c | 39 ------- Lectures/LC19/Structure3/Structure_3.c | 59 ----------- .../LC19/StructureFunction/StructureFunc.c | 36 ------- Lectures/LC19/WriteHeaderArrayAndUpdate.c | 90 ---------------- .../LC19/WriteHeaderArrayAndUpdateAndSeek.c | 99 ------------------ Lectures/LC19/WriteHeaderWithArray.c | 77 -------------- Lectures/LC19/enumdefine.c | 41 -------- Lectures/LC19/swap.c | 72 ------------- Lectures/LC19/union.c | 31 ------ Lectures/LC20/AreaFunc.c | 17 --- Lectures/LC20/AreaFunc.h | 2 - Lectures/LC20/Main.c | 34 ------ Lectures/LC21/Cond/cond.c | 37 ------- Lectures/LC21/GetThem/getthem.c | 24 ----- Lectures/LC21/Simple/simple.c | 19 ---- Lectures/LC21/Sprints/sprints.c | 23 ---- Lectures/LC21/use.c | 29 ----- Lectures/LC4/hello_world.c | 9 -- Lectures/LC4/hello_world.exe | Bin 256808 -> 0 bytes Lectures/LC5/printf_example.c | 14 --- Lectures/LC7/FgetsString/fgets_string.c | 22 ---- Lectures/LC7/Getch/getch.c | 28 ----- Lectures/LC7/GetsString/gets_string.c | 22 ---- Lectures/LC7/ScanfString/scanf_string.c | 23 ---- Lectures/LC7/getchar.c | 27 ----- Lectures/LC7/scanf_examples.c | 36 ------- Lectures/LC8/ComplexIf/complex_if.c | 35 ------- Lectures/LC8/IfElseIfElse/if_else_if_else.c | 35 ------- Lectures/LC8/IfEquals/if_equals_example.c | 37 ------- Lectures/LC8/IfExamples/if_examples.c | 34 ------ Lectures/LC8/Switch1/switch_1.c | 31 ------ Lectures/LC8/Switch2/switch_2.c | 34 ------ Lectures/LC8/Switch3/switch_3.c | 33 ------ Lectures/LC9/DoWhile/do_while_example.c | 42 -------- Lectures/LC9/ForLoops/for_loops.c | 44 -------- Lectures/LC9/While1/while_example_version_1.c | 47 --------- Lectures/LC9/While2/while_example_version_2.c | 37 ------- Makefile | 7 ++ ...MotorEncoderAAR.ino => MotorEncoderAAR.ino | 0 .../TestEncoderAAR.c => TestEncoderAAR.c | 0 .../TestEncoderAAR.png => TestEncoderAAR.png | Bin Labs/Lab_1/TwoSensorsAAR.c => TwoSensorsAAR.c | 0 .../TwoSensorsAAR.ino => TwoSensorsAAR.ino | 0 .../TwoSensorsAAR.png => TwoSensorsAAR.png | Bin ...AAR.drawio => UpdateStateMachineAAR.drawio | 0 ...achineAAR.pdf => UpdateStateMachineAAR.pdf | Bin ...emplate for MMME3085 Lab 1 Programming.pdf | Bin {Labs/Lab_1/res => res}/lab_prep_sheet.pdf | Bin ...itialiseEncoderStateMachineSkeleton.drawio | 0 .../InitialiseEncoderStateMachineSkeleton.pdf | Bin .../UpdateStateMachineSkeleton.drawio | 0 .../UpdateStateMachineSkeleton.pdf | Bin .../MotorEncoderSkeleton.ino | 0 .../TestEncoder.c | 0 .../TestEncoder.ino | 0 .../TwoSensorsSkeleton.c | 0 .../TwoSensorsSkeleton.ino | 0 203 files changed, 7 insertions(+), 5392 deletions(-) delete mode 100644 Appendix1/Assertion/Assertions.c delete mode 100644 Appendix1/CodeBlocking/Blocking.c delete mode 100644 Appendix1/DebugAssertion/DebugAssertion.c delete mode 100644 Exercises/C10/ex2.c delete mode 100644 Exercises/C10/ex3.c delete mode 100644 Exercises/C10/ex4.c delete mode 100644 Exercises/C10/ex5.c delete mode 100644 Exercises/C10/function_example.c delete mode 100644 Exercises/C10/void_function_example.c delete mode 100644 Exercises/C11/array_loop_example_1.c delete mode 100644 Exercises/C11/array_loop_example_2.c delete mode 100644 Exercises/C11/ex2.c delete mode 100644 Exercises/C11/ex3.c delete mode 100644 Exercises/C11/initialise_string_example_1.c delete mode 100644 Exercises/C11/initialise_string_example_2.c delete mode 100644 Exercises/C12/scope_of_variables.c delete mode 100644 Exercises/C13/AccessingViaPointers/accessing_via_pointers.c delete mode 100644 Exercises/C13/assigning_pointers.c delete mode 100644 Exercises/C13/ex2.c delete mode 100644 Exercises/C13/ex3.c delete mode 100644 Exercises/C14/Makefile delete mode 100644 Exercises/C14/ex1.c delete mode 100644 Exercises/C14/ex2.c delete mode 100644 Exercises/C14/ex3.c delete mode 100644 Exercises/C14/quadratic_solver.c delete mode 100644 Exercises/C14/quadratic_solver_function.c delete mode 100644 Exercises/C15/pointer_array_example_1.c delete mode 100644 Exercises/C15/pointer_array_example_2.c delete mode 100644 Exercises/C15/pointer_array_example_3.c delete mode 100644 Exercises/C15/pointer_array_example_4.c delete mode 100644 Exercises/C16/alloc_example_1.c delete mode 100644 Exercises/C16/alloc_example_2.c delete mode 100644 Exercises/C16/alloc_example_3.c delete mode 100644 Exercises/C16/alloc_example_4.c delete mode 100644 Exercises/C16/ex2.c delete mode 100644 Exercises/C16/ex3.c delete mode 100644 Exercises/C17/ArraysToFunctions1/arrays_to_functions_example_1.c delete mode 100644 Exercises/C17/ArraysToFunctions2/arrays_to_functions_example_2.c delete mode 100644 Exercises/C17/ex2.c delete mode 100644 Exercises/C18/BinaryFile/binary_file_example.c delete mode 100644 Exercises/C18/BinaryFile/numbers.dat delete mode 100644 Exercises/C18/FileOpen/file_open_example.c delete mode 100644 Exercises/C18/TextFile/numbers.txt delete mode 100644 Exercises/C18/TextFile/text_file_example.c delete mode 100644 Exercises/C18/ex2.c delete mode 100644 Exercises/C18/ex3.c delete mode 100644 Exercises/C18/ex4.c delete mode 100644 Exercises/C18/ex5.c delete mode 100644 Exercises/C18/ex6.c delete mode 100644 Exercises/C19/DefineExamples/define_example.c delete mode 100644 Exercises/C19/enum_example.c delete mode 100644 Exercises/C19/ex1.c delete mode 100644 Exercises/C19/ex2.c delete mode 100644 Exercises/C19/ex3.c delete mode 100644 Exercises/C19/ex4.c delete mode 100644 Exercises/C19/static_variable_example.c delete mode 100644 Exercises/C20/ConditionalDirective/conditional_directive_example.c delete mode 100644 Exercises/C20/FormattingDirective/formatting_directive_example.c delete mode 100644 Exercises/C20/macro_function_example.c delete mode 100644 Exercises/C21/sprintf_example.c delete mode 100644 Exercises/C3/hello_world.c delete mode 100644 Exercises/C4/Correct_answer/correct_answer.c delete mode 100644 Exercises/C4/Wrong_answer/wrong_answer.c delete mode 100644 Exercises/C4/declare_a_string.c delete mode 100644 Exercises/C4/difficult_to_read_code.c delete mode 100644 Exercises/C4/poor_layout/poor_layout.c delete mode 100644 Exercises/C4/reformatted_code.c delete mode 100644 Exercises/C4/simple_claculation.c delete mode 100644 Exercises/C4/well_laid_out_code.c delete mode 100644 Exercises/C5/FormattingNumbers/formatting_numbers.c delete mode 100644 Exercises/C5/displaying_variables.c delete mode 100644 Exercises/C5/ex4.c delete mode 100644 Exercises/C5/ex5.c delete mode 100644 Exercises/C5/not_displaying.c delete mode 100644 Exercises/C5/printf_example_1.c delete mode 100644 Exercises/C5/printf_example_2.c delete mode 100644 Exercises/C6/ex1.c delete mode 100644 Exercises/C6/ex2.c delete mode 100644 Exercises/C6/ex3.c delete mode 100644 Exercises/C6/inc_dec_examples.c delete mode 100644 Exercises/C7/Getchar/getchar_example.c delete mode 100644 Exercises/C7/Scanf1/scanf_example_1.c delete mode 100644 Exercises/C7/Scanf2/scanf_example_2.c delete mode 100644 Exercises/C7/ex2.c delete mode 100644 Exercises/C7/ex3.c delete mode 100644 Exercises/C7/ex4.c delete mode 100644 Exercises/C7/ex5.c delete mode 100644 Exercises/C7/string_with_gets.c delete mode 100644 Exercises/C7/string_with_scanf.c delete mode 100644 Exercises/C8/ex2.c delete mode 100644 Exercises/C8/ex3.c delete mode 100644 Exercises/C8/ex4.c delete mode 100644 Exercises/C8/ex7.c delete mode 100644 Exercises/C8/if_example.c delete mode 100644 Exercises/C8/switch_example_1.c delete mode 100644 Exercises/C8/switch_example_2.c delete mode 100644 Exercises/C8/switch_example_3.c delete mode 100644 Exercises/C9/do_while_loop.c delete mode 100644 Exercises/C9/ex2.c delete mode 100644 Exercises/C9/ex3.c delete mode 100644 Exercises/C9/ex4.c delete mode 100644 Exercises/C9/ex5.c delete mode 100644 Exercises/C9/ex6.c delete mode 100644 Exercises/C9/ex7.c delete mode 100644 Exercises/C9/ex8.c delete mode 100644 Exercises/C9/for_loop_examples.c delete mode 100644 Exercises/C9/infinite_while_loop.c delete mode 100644 Exercises/C9/while_loop.c rename Labs/Lab_1/InitialiseEncoderStateMachineAAR.drawio => InitialiseEncoderStateMachineAAR.drawio (100%) rename Labs/Lab_1/InitialiseEncoderStateMachineAAR.pdf => InitialiseEncoderStateMachineAAR.pdf (100%) delete mode 100644 Labs/Lab_1/Makefile delete mode 100644 Lectures/LC10/SimpleFunctions1/simple_functions_1.c delete mode 100644 Lectures/LC10/SimpleFunctions2/simple_functions_2.c delete mode 100644 Lectures/LC11/loop_into_array.c delete mode 100644 Lectures/LC12/Global1/global_ex1.c delete mode 100644 Lectures/LC12/Global2/global_ex2.c delete mode 100644 Lectures/LC12/Global3/global_ex3.c delete mode 100644 Lectures/LC14/LineLength/LineLength.c delete mode 100644 Lectures/LC14/PointerFunc1/pointer_function_example_1.c delete mode 100644 Lectures/LC14/PointerFunc2/pointer_function_example_2.c delete mode 100644 Lectures/LC15/PointerToArray/pointer_to_array_examples.c delete mode 100644 Lectures/LC15/PointerToArray1/pointer_to_array_1.c delete mode 100644 Lectures/LC15/PointerToArray2/pointer_to_array_2.c delete mode 100644 Lectures/LC16/Dynamic1/Dynamic1.c delete mode 100644 Lectures/LC16/Dynamic2/Dynamic2.c delete mode 100644 Lectures/LC16/Dynamic3/Dynamic3.c delete mode 100644 Lectures/LC17/DynamicFunction/DynamicFunction.c delete mode 100644 Lectures/LC17/Quadratic_with_Pointers.c delete mode 100644 Lectures/LC18/EndOfFile/EndOfFile.c delete mode 100644 Lectures/LC18/EndOfFile/numbers.txt delete mode 100644 Lectures/LC18/EndOfFileBreak/EndOfFileBreak.c delete mode 100644 Lectures/LC18/EndOfFileBreak/numbers.txt delete mode 100644 Lectures/LC18/EndOfFileScanf/EndOfFileScanf.c delete mode 100644 Lectures/LC18/EndOfFileScanf/numbers.txt delete mode 100644 Lectures/LC18/FileMove/data.dat delete mode 100644 Lectures/LC18/FileMove/filemove.c delete mode 100644 Lectures/LC18/FileSize/data.dat delete mode 100644 Lectures/LC18/FileSize/filesize.c delete mode 100644 Lectures/LC19/ConstHashDefine/ConstHashDefine.c delete mode 100644 Lectures/LC19/Enum/enum.c delete mode 100644 Lectures/LC19/FileHeader/file_header.c delete mode 100644 Lectures/LC19/FileHeader/strdata.dat delete mode 100644 Lectures/LC19/FileHeaderMove/file_header_move.c delete mode 100644 Lectures/LC19/FileHeaderMove/strdata.dat delete mode 100644 Lectures/LC19/Static/Static.c delete mode 100644 Lectures/LC19/Structure1/Structure_1.c delete mode 100644 Lectures/LC19/Structure2/Structure_2.c delete mode 100644 Lectures/LC19/Structure3/Structure_3.c delete mode 100644 Lectures/LC19/StructureFunction/StructureFunc.c delete mode 100644 Lectures/LC19/WriteHeaderArrayAndUpdate.c delete mode 100644 Lectures/LC19/WriteHeaderArrayAndUpdateAndSeek.c delete mode 100644 Lectures/LC19/WriteHeaderWithArray.c delete mode 100644 Lectures/LC19/enumdefine.c delete mode 100644 Lectures/LC19/swap.c delete mode 100644 Lectures/LC19/union.c delete mode 100644 Lectures/LC20/AreaFunc.c delete mode 100644 Lectures/LC20/AreaFunc.h delete mode 100644 Lectures/LC20/Main.c delete mode 100644 Lectures/LC21/Cond/cond.c delete mode 100644 Lectures/LC21/GetThem/getthem.c delete mode 100644 Lectures/LC21/Simple/simple.c delete mode 100644 Lectures/LC21/Sprints/sprints.c delete mode 100644 Lectures/LC21/use.c delete mode 100644 Lectures/LC4/hello_world.c delete mode 100644 Lectures/LC4/hello_world.exe delete mode 100644 Lectures/LC5/printf_example.c delete mode 100644 Lectures/LC7/FgetsString/fgets_string.c delete mode 100644 Lectures/LC7/Getch/getch.c delete mode 100644 Lectures/LC7/GetsString/gets_string.c delete mode 100644 Lectures/LC7/ScanfString/scanf_string.c delete mode 100644 Lectures/LC7/getchar.c delete mode 100644 Lectures/LC7/scanf_examples.c delete mode 100644 Lectures/LC8/ComplexIf/complex_if.c delete mode 100644 Lectures/LC8/IfElseIfElse/if_else_if_else.c delete mode 100644 Lectures/LC8/IfEquals/if_equals_example.c delete mode 100644 Lectures/LC8/IfExamples/if_examples.c delete mode 100644 Lectures/LC8/Switch1/switch_1.c delete mode 100644 Lectures/LC8/Switch2/switch_2.c delete mode 100644 Lectures/LC8/Switch3/switch_3.c delete mode 100644 Lectures/LC9/DoWhile/do_while_example.c delete mode 100644 Lectures/LC9/ForLoops/for_loops.c delete mode 100644 Lectures/LC9/While1/while_example_version_1.c delete mode 100644 Lectures/LC9/While2/while_example_version_2.c rename Labs/Lab_1/MotorEncoderAAR.ino => MotorEncoderAAR.ino (100%) rename Labs/Lab_1/TestEncoderAAR.c => TestEncoderAAR.c (100%) rename Labs/Lab_1/TestEncoderAAR.png => TestEncoderAAR.png (100%) rename Labs/Lab_1/TwoSensorsAAR.c => TwoSensorsAAR.c (100%) rename Labs/Lab_1/TwoSensorsAAR.ino => TwoSensorsAAR.ino (100%) rename Labs/Lab_1/TwoSensorsAAR.png => TwoSensorsAAR.png (100%) rename Labs/Lab_1/UpdateStateMachineAAR.drawio => UpdateStateMachineAAR.drawio (100%) rename Labs/Lab_1/UpdateStateMachineAAR.pdf => UpdateStateMachineAAR.pdf (100%) rename {Labs/Lab_1/res => res}/Marking Template for MMME3085 Lab 1 Programming.pdf (100%) rename {Labs/Lab_1/res => res}/lab_prep_sheet.pdf (100%) rename {Labs/Lab_1/skeleton_flowcharts => skeleton_flowcharts}/InitialiseEncoderStateMachineSkeleton.drawio (100%) rename {Labs/Lab_1/skeleton_flowcharts => skeleton_flowcharts}/InitialiseEncoderStateMachineSkeleton.pdf (100%) rename {Labs/Lab_1/skeleton_flowcharts => skeleton_flowcharts}/UpdateStateMachineSkeleton.drawio (100%) rename {Labs/Lab_1/skeleton_flowcharts => skeleton_flowcharts}/UpdateStateMachineSkeleton.pdf (100%) rename {Labs/Lab_1/skeleton_programs => skeleton_programs}/MotorEncoderSkeleton.ino (100%) rename {Labs/Lab_1/skeleton_programs => skeleton_programs}/TestEncoder.c (100%) rename {Labs/Lab_1/skeleton_programs => skeleton_programs}/TestEncoder.ino (100%) rename {Labs/Lab_1/skeleton_programs => skeleton_programs}/TwoSensorsSkeleton.c (100%) rename {Labs/Lab_1/skeleton_programs => skeleton_programs}/TwoSensorsSkeleton.ino (100%) diff --git a/Appendix1/Assertion/Assertions.c b/Appendix1/Assertion/Assertions.c deleted file mode 100644 index 40a0388..0000000 --- a/Appendix1/Assertion/Assertions.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -int main() -{ - int x = 7; - - /* Some big code in between and let's say x -       is accidentally changed to 9 */ - x = 9; - - // Programmer assumes x to be 7 in rest of the code - assert(x==7); - - /* Rest of the code */ - - return 0; -} \ No newline at end of file diff --git a/Appendix1/CodeBlocking/Blocking.c b/Appendix1/CodeBlocking/Blocking.c deleted file mode 100644 index ac55f27..0000000 --- a/Appendix1/CodeBlocking/Blocking.c +++ /dev/null @@ -1,45 +0,0 @@ -#include - -#define BLOCKSIZE (8) - -int main(void) -{ - int i = 0; - int limit = 19; /* could be anything */ - int blocklimit; - - /* The limit may not be divisible by BLOCKSIZE, - * go as near as we can first, then tidy up. - */ - blocklimit = (limit / BLOCKSIZE) * BLOCKSIZE; - /* unroll the loop in blocks of 8 */ - while( i < blocklimit ) - { - printf("process(%d)\n", i); - printf("process(%d)\n", i+1); - printf("process(%d)\n", i+2); - printf("process(%d)\n", i+3); - printf("process(%d)\n", i+4); - printf("process(%d)\n", i+5); - printf("process(%d)\n", i+6); - printf("process(%d)\n", i+7); - - /* update the counter */ - i += 8; - } - if( i < limit ) - { - /* Jump into the case at the place that will allow - * us to finish off the appropriate number of items. */ - switch( limit - i ) - { - case 7 : printf("process(%d)\n", i); i++; - case 6 : printf("process(%d)\n", i); i++; - case 5 : printf("process(%d)\n", i); i++; - case 4 : printf("process(%d)\n", i); i++; - case 3 : printf("process(%d)\n", i); i++; - case 2 : printf("process(%d)\n", i); i++; - case 1 : printf("process(%d)\n", i); - } - } -} \ No newline at end of file diff --git a/Appendix1/DebugAssertion/DebugAssertion.c b/Appendix1/DebugAssertion/DebugAssertion.c deleted file mode 100644 index 6f7c59c..0000000 --- a/Appendix1/DebugAssertion/DebugAssertion.c +++ /dev/null @@ -1,11 +0,0 @@ -# define NDEBUG -#include -# include - -int main() -{ - int x = 7; - assert (x==5); - printf("x = %d\n", x); - return 0; -} \ No newline at end of file diff --git a/Exercises/C10/ex2.c b/Exercises/C10/ex2.c deleted file mode 100644 index ea510fe..0000000 --- a/Exercises/C10/ex2.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - -int main() { - float input, output; - printf("Enter an angle in degrees: "); - scanf("%f", &input); - - output = degrees_to_radians(input); - - printf("%f radians\n", output); - - return 0; -} diff --git a/Exercises/C10/ex3.c b/Exercises/C10/ex3.c deleted file mode 100644 index d633fb5..0000000 --- a/Exercises/C10/ex3.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - - -int main() { - int rc, start, end; - - printf("Start: "); - rc = scanf("%d", &start); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - printf("End: "); - rc = scanf("%d", &end); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - - if (start > end) { - printf("Please ensure that start value is smaller than end value\n"); - return 1; - } - - for (int i = start; i <= end; i++) { - printf("%d %f\n", i, degrees_to_radians((float)i)); - } - - return 0; -} diff --git a/Exercises/C10/ex4.c b/Exercises/C10/ex4.c deleted file mode 100644 index f060508..0000000 --- a/Exercises/C10/ex4.c +++ /dev/null @@ -1,42 +0,0 @@ -#include - -int date_to_day(int year, int month, int day) { - if (month < 3) { - month += 12; - year -= 1; - } - - return ((13*month+3)/5 + day + year + year/4 - year/100 + year/400) % 7; -} - -int main() { - int rc, year, month, day, nd; - - printf("Enter a day (yyyy-mm-dd): "); - rc = scanf("%d-%d-%d", &year, &month, &day); - if (rc != 3) { - printf("Failed to parse date\n"); - return 1; - } - - nd = date_to_day(year, month, day); - - switch (nd) { - case 0: - printf("Monday\n"); break; - case 1: - printf("Tuesday\n"); break; - case 2: - printf("Wednesday\n"); break; - case 3: - printf("Thursday\n"); break; - case 4: - printf("Friday\n"); break; - case 5: - printf("Saturday\n"); break; - case 6: - printf("Sunday\n"); break; - } - - return 0; -} diff --git a/Exercises/C10/ex5.c b/Exercises/C10/ex5.c deleted file mode 100644 index 0899684..0000000 --- a/Exercises/C10/ex5.c +++ /dev/null @@ -1,45 +0,0 @@ -#include - -int date_to_day(int year, int month, int day) { - if (month < 3) { - month += 12; - year -= 1; - } - - return ((13*month+3)/5 + day + year + year/4 - year/100 + year/400) % 7; -} - -void print_day_of_week(int day) { - switch (day) { - case 0: - printf("Monday\n"); break; - case 1: - printf("Tuesday\n"); break; - case 2: - printf("Wednesday\n"); break; - case 3: - printf("Thursday\n"); break; - case 4: - printf("Friday\n"); break; - case 5: - printf("Saturday\n"); break; - case 6: - printf("Sunday\n"); break; - } -} - -int main() { - int rc, year, month, day, nd; - - printf("Enter a day (yyyy-mm-dd): "); - rc = scanf("%d-%d-%d", &year, &month, &day); - if (rc != 3) { - printf("Failed to parse date\n"); - return 1; - } - - nd = date_to_day(year, month, day); - print_day_of_week(nd); - - return 0; -} diff --git a/Exercises/C10/function_example.c b/Exercises/C10/function_example.c deleted file mode 100644 index 23e97c3..0000000 --- a/Exercises/C10/function_example.c +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -// Define HOW the function is to be used, code comes later -float CalculateSurfaceAreaOfCylinder ( float R, float L ); - -// Function to calculate the volume of a cylinder -float CalculateVolumneOfCylinder ( float R, float L ) -{ - // Calculate \& return value - float Result; - Result = (M_PI * R * R * L); - return (Result); -} -int main(void) -{ - // Declare variables - float r, l, SurfaceArea, Volume; - - // Obtain values - printf("\nPlease enter the radius"); - scanf("%f", &r); - - printf("\nPlease enter the length"); - scanf("%f", &l); - - // Get and display the volume - Volume = CalculateVolumneOfCylinder(r, l); - printf ("\nThe volume is %f", Volume); - - // Get and display the surface area - SurfaceArea = CalculateSurfaceAreaOfCylinder(r, l); - printf ("\nThe surface area is %f", SurfaceArea); - - return 0; -} -// Calculate the surface areas of a cylinder -float CalculateSurfaceAreaOfCylinder ( float R, float L ) -{ - // Calculate \& return value - return (2 * M_PI * R * R ) + ( 2 * M_PI * R * L); -} \ No newline at end of file diff --git a/Exercises/C10/void_function_example.c b/Exercises/C10/void_function_example.c deleted file mode 100644 index 8710c4e..0000000 --- a/Exercises/C10/void_function_example.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -// Define HOW the function is to be used, code comes later -void DisplayDayOfTheWeek ( int Day ); - -int main(void) // Execution starts here -{ - int d; // Declare variable - - // Obtain values - printf("\nPlease enter a number betwwen 0 and 6"); - scanf("%d", &d); - - // Use a function to display the day of the week - DisplayDayOfTheWeek(d); - - return 0; -} - -// Function to display day of week - nothing is returned -void DisplayDayOfTheWeek ( int Day ) -{ - // Display date based on value - // Case values on one line as easier to cut/paste :-) - switch (Day) - { - case 0 : printf ("Sunday") ; break; - case 1 : printf ("Monday") ; break; - case 2 : printf ("Tuesday") ; break; - - /* etc. for other days of the week */ - - default: - printf ("Invaid day provided"); - } - return; // No value needed as the return type is void -} diff --git a/Exercises/C11/array_loop_example_1.c b/Exercises/C11/array_loop_example_1.c deleted file mode 100644 index 06027a1..0000000 --- a/Exercises/C11/array_loop_example_1.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include - -int main(void) // Main : Execution starts here... -{ - // Declare variables - pre-populate the array - int Ages[10] = {12,34,23,11,8,19,6,44,9,16}; - int i; - - // Loop from 0 to 9 inclusive - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n",i ,Ages[i]); - - // Exit the application - return 0; -} \ No newline at end of file diff --git a/Exercises/C11/array_loop_example_2.c b/Exercises/C11/array_loop_example_2.c deleted file mode 100644 index 5979dab..0000000 --- a/Exercises/C11/array_loop_example_2.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declare variables - int SampleData[10]; - int a=0; - - // Show initial value of a - printf ("Values in a is %d \n", a); - - // Change an array item that IS NOT DEFINED - SampleData[10] = 20; - - - // See how thi affect the value in a - printf ("Values in a is %d \n", a); - - // Note: we can retieive this 'invalid' value - it is however 'a' we are getting - printf ("Values in SampleData[10] is %d \n", SampleData[10]); - - return (0); // Exit indicating sucess -} \ No newline at end of file diff --git a/Exercises/C11/ex2.c b/Exercises/C11/ex2.c deleted file mode 100644 index cf5dbae..0000000 --- a/Exercises/C11/ex2.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -#define ARRAY_LEN 90 - -int main() { - int i; - float arr[ARRAY_LEN]; - - for (i = 0; i < ARRAY_LEN; i++) { - arr[i] = (float)i; - } - for (i = 0; i < ARRAY_LEN; i++) { - printf("%d %f\n", i, arr[i]); - } -} diff --git a/Exercises/C11/ex3.c b/Exercises/C11/ex3.c deleted file mode 100644 index b8fd202..0000000 --- a/Exercises/C11/ex3.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include - -#define ARRAY_LEN 90 - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - -int main() { - int i; - float arr[ARRAY_LEN]; - - for (i = 0; i < ARRAY_LEN; i++) { - arr[i] = degrees_to_radians((float)i); - } - - for (i = 0; i < ARRAY_LEN; i++) { - printf("%d %f\n", i, arr[i]); - } -} diff --git a/Exercises/C11/initialise_string_example_1.c b/Exercises/C11/initialise_string_example_1.c deleted file mode 100644 index f19d9bb..0000000 --- a/Exercises/C11/initialise_string_example_1.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include - -// Main : Execution starts here... -int main(void) -{ - // Declare variable - pre-populate the array - char msg[] = {'H','i',' ','W','o','r','l','d','\0'}; - - // Output with printf - printf ("The text is: %s\n", msg); - - puts(msg); // We could also use puts to display the string - - return 0; // Exit the application -} \ No newline at end of file diff --git a/Exercises/C11/initialise_string_example_2.c b/Exercises/C11/initialise_string_example_2.c deleted file mode 100644 index 0df3449..0000000 --- a/Exercises/C11/initialise_string_example_2.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include - -int main(void) // Main : Execution starts here... -{ - // Declare variable - pre-populate the array - char msg[] = "Hello World"; - - // Output with printf - printf ("The text is: %s\n", msg); - - puts(msg); // We could also use puts to display the string - - return 0; // Exit the application -} \ No newline at end of file diff --git a/Exercises/C12/scope_of_variables.c b/Exercises/C12/scope_of_variables.c deleted file mode 100644 index d827b6f..0000000 --- a/Exercises/C12/scope_of_variables.c +++ /dev/null @@ -1,20 +0,0 @@ -void SampleFunction1 ( int x ) -{ - int i,j,k; - return; -} - -void SampleFunction2 ( int x ) -{ - int i,j,k; - SampleFunction1(x); - return; -} - -// Main : Execution starts here... -int main(void) -{ - int i = 1; - SampleFunction2(i); - return 0; -} \ No newline at end of file diff --git a/Exercises/C13/AccessingViaPointers/accessing_via_pointers.c b/Exercises/C13/AccessingViaPointers/accessing_via_pointers.c deleted file mode 100644 index 52fcf7a..0000000 --- a/Exercises/C13/AccessingViaPointers/accessing_via_pointers.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -int main (void ) -{ - // Declare a in integer - int c,d; - - // Declar and integer pointer - int *ptrC; - - // Some assgnments - c = 10; // C now contains the value 10 - ptrC = &c; // ptrC now 'Points' to c - - // Get the value of c via the pointer and store in d - d = *ptrC; // d now contains 10 - printf ("\nThe value in d is %d", d); - - // Change the value of c via the pointer ptrC - *ptrC = 1; //c now contains 1 - printf ("\nThe value in c is %d", c); - - return 0; // exit -} \ No newline at end of file diff --git a/Exercises/C13/assigning_pointers.c b/Exercises/C13/assigning_pointers.c deleted file mode 100644 index 32da375..0000000 --- a/Exercises/C13/assigning_pointers.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -int main (void ) -{ - // Integer variables - int a, ValueB, d; - - // integer pointers - int *ptrA=&a, *B=&ValueB, *Data=&d; - - // Float variables - float f,y,z; - - // Float pointers - float *pf=&f , *q=&y, *Zvalue=&z; - - // We could also do this on separate lines e.g. - int SomeData; - int *Another; - Another = &SomeData; - - return 0; -} \ No newline at end of file diff --git a/Exercises/C13/ex2.c b/Exercises/C13/ex2.c deleted file mode 100644 index 1b7f012..0000000 --- a/Exercises/C13/ex2.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -int main (void ) -{ - // Declare a in integer - int c,d; - - // Declar and integer pointer - int *ptrC; - - // Some assgnments - c = 10; // C now contains the value 10 - ptrC = &c; // ptrC now 'Points' to c - - *ptrC = 20; - - // Get the value of c via the pointer and store in d - d = *ptrC; // d now contains 10 - printf ("The value in d is %d\n", d); - - // Change the value of c via the pointer ptrC - *ptrC = 1; //c now contains 1 - printf ("The value in c is %d\n", c); - - return 0; // exit -} diff --git a/Exercises/C13/ex3.c b/Exercises/C13/ex3.c deleted file mode 100644 index 7111359..0000000 --- a/Exercises/C13/ex3.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -int main (void ) -{ - // Declare a in integer - float c,d; - - // Declar and integer pointer - float *ptrC; - - // Some assgnments - c = 10; // C now contains the value 10 - ptrC = &c; // ptrC now 'Points' to c - - *ptrC = 20; - - // Get the value of c via the pointer and store in d - d = *ptrC; // d now contains 10 - printf ("The value in d is %f\n", d); - - // Change the value of c via the pointer ptrC - *ptrC = 1; //c now contains 1 - printf ("The value in c is %f\n", c); - - return 0; // exit -} diff --git a/Exercises/C14/Makefile b/Exercises/C14/Makefile deleted file mode 100644 index 3924bfd..0000000 --- a/Exercises/C14/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../Makefile diff --git a/Exercises/C14/ex1.c b/Exercises/C14/ex1.c deleted file mode 100644 index eebd18d..0000000 --- a/Exercises/C14/ex1.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -void cartesian_to_polar(float x, float y, float *r, float *theta) { - *r = sqrtf(x*x + y*y); - *theta = y/x; -} - -int main() { - int rc; - float x, y, r, theta; - - printf("x: "); - rc = scanf("%f", &x); - // check that scanf was successful by checking if it returned 1 (1 successfully scanned item) - if (rc != 1) { - printf("Please enter a real number\n"); - return 1; - } - - printf("y: "); - rc = scanf("%f", &y); - if (rc != 1) { - printf("Please enter a real number\n"); - return 1; - } - - cartesian_to_polar(x, y, &r, &theta); - printf("r=%f theta=%f\n", r, theta); - - return 0; -} diff --git a/Exercises/C14/ex2.c b/Exercises/C14/ex2.c deleted file mode 100644 index 28d0a70..0000000 --- a/Exercises/C14/ex2.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - -void process(float degrees, float* radians, float* sin_val, float* cos_val, float* tan_val) { - *radians = degrees_to_radians(degrees); - *sin_val = sin(*radians); - *cos_val = cos(*radians); - *tan_val = tan(*radians); -} - - -int main() { - float degrees, radians, sin_val, cos_val, tan_val; - - printf("Degrees: "); - scanf("%f", °rees); - - process(degrees, &radians, &sin_val, &cos_val, &tan_val); - - printf("Radians: %f\n", radians); - printf("Sine: %f\n", sin_val); - printf("Cosine: %f\n", cos_val); - printf("Tangent: %f\n", tan_val); -} diff --git a/Exercises/C14/ex3.c b/Exercises/C14/ex3.c deleted file mode 100644 index de55733..0000000 --- a/Exercises/C14/ex3.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - -void process(float degrees, float* radians, float* sin_val, float* cos_val, float* tan_val) { - *radians = degrees_to_radians(degrees); - *sin_val = sin(*radians); - *cos_val = cos(*radians); - *tan_val = tan(*radians); -} - - -int main() { - int degrees_start, degrees_end; - float radians, sin_val, cos_val, tan_val; - - printf("Start: "); - scanf("%d", °rees_start); - printf("End: "); - scanf("%d", °rees_end); - printf("Degs\tRad\tsin\tcos\ttan\n"); - - for (int i = degrees_start; i <= degrees_end; i++) { - process((float)i, &radians, &sin_val, &cos_val, &tan_val); - printf("%d\t%0.3f\t%0.3f\t%0.3f\t%0.3f\n", i, radians, sin_val, cos_val, tan_val); - } - - -} diff --git a/Exercises/C14/quadratic_solver.c b/Exercises/C14/quadratic_solver.c deleted file mode 100644 index 37f01e4..0000000 --- a/Exercises/C14/quadratic_solver.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include - -int SolveQuadraticEquation(float a, float b, float c, float *x1, float *x2) -{ - float d; // For storing b^2 - 4*a*c - - if ( a == 0) // Not a quadratie - { - return -1; - } - - // calculate and store b*b-4*a*c for testing ans use later (if OK) - d = b*b - 4*a*c; - - if ( d < 0 ) - { - return -1; // Complex - } - - // If we have got to here, we can calculate x1 and x2 - *x1 = ( -b + sqrt (d)) / (2 * a); // Note the use of the * before x1 & x2 - *x2 = ( -b - sqrt (d)) / (2 * a); // to write to the relevant memory locations - - // As we got here OK, return 0 to indicate all is OK - return 0; -} - -int main (void ) -{ - float A,B,C,x1,x2; - int retval; - - printf ("Please enter coefficients A,B and C separated by a space\n"); - scanf ("%f %f %f", &A, &B, &C); - - // Make use of the function - retval = SolveQuadraticEquation(A, B, C, &x1, &x2); - - // Use the retval to determine if we can display the answers or an derror message - if ( retval == -1 ) - { - printf ("Not a quadratic\n"); - } - else if (retval == -1) - { - printf ("The solution is complex - I cannot solve these\n"); - } - else - { - printf("\nThe solutions are x1=%f, x2=%f", x1, x2); - } - return 0; // exit -} \ No newline at end of file diff --git a/Exercises/C14/quadratic_solver_function.c b/Exercises/C14/quadratic_solver_function.c deleted file mode 100644 index 31158dc..0000000 --- a/Exercises/C14/quadratic_solver_function.c +++ /dev/null @@ -1,24 +0,0 @@ -int SolveQuadraticEquation(float a, float b, float c, float *x1, float *x2) -{ - float d; // For storing b^2 - 4*a*c - - if ( a == 0) // Not a quadratie - { - return -1; - } - - // calculate and store b*b-4*a*c for testing ans use later (if OK) - d = b*b - 4*a*c; - - if ( d < 0 ) - { - return -1; // Complex - } - - // If we have got to here, we can calculate x1 and x2 - *x1 = ( -b + sqrt (d)) / (2 * a); // Note the use of the * before x1 & x2 - *x2 = ( -b - sqrt (d)) / (2 * a); // to write to the relevant memory locations - - // As we got here OK, return 0 to indicate all is OK - return 0; -} \ No newline at end of file diff --git a/Exercises/C15/pointer_array_example_1.c b/Exercises/C15/pointer_array_example_1.c deleted file mode 100644 index ac47055..0000000 --- a/Exercises/C15/pointer_array_example_1.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare and populate an integer array - int MyArray[10] = {2,4,6,8,10,12,14,18,20}; - - // Declate an integer pointer - int *pI; - - // Get the start address by asking for the address iof array item [0] - pI = &MyArray[0]; - - // Or, use the fact the array name on its own is the start address of the array - pI = MyArray; - - return 0; // Exit -} \ No newline at end of file diff --git a/Exercises/C15/pointer_array_example_2.c b/Exercises/C15/pointer_array_example_2.c deleted file mode 100644 index 9c9630f..0000000 --- a/Exercises/C15/pointer_array_example_2.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare an integer array and an integer pointer - int MyArray[10] = {2,4,6,8,10,12,14,16,18,20}; - int *pI; - - // Get the start address by asking for the address iof array item [0] - pI = &MyArray[0]; // Or use: pI = MyArray; - - // Display the 1st item in the array, first be accessing rhe array - printf("The value at array item [0] is %d\n", MyArray[0]); - - // Since the pointer points to the address of the 1st item we can - // access it as we would for a pointer pointing to any single variable - - printf("The value at the memory address held in pI is %d\n", *pI); - - return 0; // Exit -} \ No newline at end of file diff --git a/Exercises/C15/pointer_array_example_3.c b/Exercises/C15/pointer_array_example_3.c deleted file mode 100644 index 046e249..0000000 --- a/Exercises/C15/pointer_array_example_3.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare an integer array and an integer pointer - int MyArray[10] = {2,4,6,8,10,12,14,16,18,20}; - int *pI; - int i; - - // Get the start address by asking for the address iof array item [0] - pI = &MyArray[0]; // or use: pI = MyArray; - - // Use loop to display values - for ( i = 0 ; i < 10 ; i++ ) - { - printf ("Value at index %d (direct access to the arrays) is: %d\n", i, MyArray[i]); - printf ("Value at index %d (access via the pointer) is: %d\n", i, pI[i]); - } - - return 0; // Exit -} \ No newline at end of file diff --git a/Exercises/C15/pointer_array_example_4.c b/Exercises/C15/pointer_array_example_4.c deleted file mode 100644 index 519d6bf..0000000 --- a/Exercises/C15/pointer_array_example_4.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare an integer array and an integer pointer - int MyArray[10]; - int *pI; - int i; - - // Get the start address by asking for the address iof array item [0] - pI = &MyArray[0]; // or use: pI = MyArray; - - // Use loop to display values - for ( i = 0 ; i < 10 ; i++ ) - { - // Set the value then use the increment operator to move the pointer - // to the next memory location. you can picture this as two steps: ' - // - // *pI = 5 + 4*i; - // then - // *pI++; - - *pI++ = 5 + 4*i; // set value at index[i] to 5+4*i - } - - // Display the values placed in the array - for ( i = 0 ; i < 10 ; i++) - { - printf("%d ", MyArray[i]); - } - return 0; // Exit -} \ No newline at end of file diff --git a/Exercises/C16/alloc_example_1.c b/Exercises/C16/alloc_example_1.c deleted file mode 100644 index a200700..0000000 --- a/Exercises/C16/alloc_example_1.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare an integer array and an integer pointer - int *pData; - - // Using malloc - pData = malloc ( 10000 * sizeof (int)); - - // Using calloc - pData = calloc ( 10000 , sizeof (int)); - - return 0; // Exit -} \ No newline at end of file diff --git a/Exercises/C16/alloc_example_2.c b/Exercises/C16/alloc_example_2.c deleted file mode 100644 index 9b7aa35..0000000 --- a/Exercises/C16/alloc_example_2.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare an integer array and an integer pointer - int *pData; - - pData = calloc ( 10000 , sizeof (float)); // No warning - pData = (float *)calloc ( 10000 , sizeof (float)); // Warning - - return 0; // Exit -} \ No newline at end of file diff --git a/Exercises/C16/alloc_example_3.c b/Exercises/C16/alloc_example_3.c deleted file mode 100644 index bfa379c..0000000 --- a/Exercises/C16/alloc_example_3.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare an integer array and an integer pointer - int *pData; - - // Using calloc (same approach malloc) - pData = calloc ( 10000 , sizeof (int)); - - if ( pData == NULL) - { - printf ("\nMemory could not be allocated - terminating"); - return -1; // Use minus one as we did not exit successfully - } - - // We have our memory, make use of it here! - - return 0; // Exit successfully -} \ No newline at end of file diff --git a/Exercises/C16/alloc_example_4.c b/Exercises/C16/alloc_example_4.c deleted file mode 100644 index 168b3da..0000000 --- a/Exercises/C16/alloc_example_4.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare an integer array and an integer pointer - int *pData; - - // Using calloc (same approach malloc) - pData = calloc ( 10000 , sizeof (int)); - - if ( pData == NULL) - { - printf ("\nMemory could not be allocated - terminating"); - return -1; // Use minus one as we did not exit sucesfully - } - - // We have our memory, make use of it here! - - // Free up the allocated memoey - free (pData); - - return 0; // Exit sucesfully -} \ No newline at end of file diff --git a/Exercises/C16/ex2.c b/Exercises/C16/ex2.c deleted file mode 100644 index 6137a98..0000000 --- a/Exercises/C16/ex2.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare an integer array and an integer pointer - int *pData; - int datlen; - - printf("Length of data to be allocated: "); - scanf("%d", &datlen); - - // Using malloc - pData = malloc ( datlen * sizeof (int)); - - free(pData); - return 0; // Exit -} diff --git a/Exercises/C16/ex3.c b/Exercises/C16/ex3.c deleted file mode 100644 index 9a2323c..0000000 --- a/Exercises/C16/ex3.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare an integer array and an integer pointer - int *pData; - int datlen; - - printf("Length of data to be allocated: "); - scanf("%d", &datlen); - - // Using malloc - pData = malloc ( datlen * sizeof (int)); - - for (int i = 0; i < datlen; i++) { - pData[i] = i; - printf("%d %d\n", i, i); - } - - free(pData); - return 0; // Exit -} diff --git a/Exercises/C17/ArraysToFunctions1/arrays_to_functions_example_1.c b/Exercises/C17/ArraysToFunctions1/arrays_to_functions_example_1.c deleted file mode 100644 index 5d31e47..0000000 --- a/Exercises/C17/ArraysToFunctions1/arrays_to_functions_example_1.c +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include - -// Simple function to populate an integer array -void PopulateTheArray ( int Size, int ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - ArrayData[i] = 2*i + 1; // Treat it like a normal array - } -} - - -// Simple function to display contents of an integer array -void DisplayTheArray ( int Size, int ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - printf ("Item %d of the array contains %d\n", i, ArrayData[i]); - } -} - -// Main () - execution starts here -int main (void) -{ - int Data[10]; - - // Pass the size of the array and the array to our function - - // remembering that the array name on its own is the base address, - // and so is the same as passing &Data[0] - - PopulateTheArray(10, Data); - DisplayTheArray(10, Data); - - return (0); // Exit indicating sucess -} diff --git a/Exercises/C17/ArraysToFunctions2/arrays_to_functions_example_2.c b/Exercises/C17/ArraysToFunctions2/arrays_to_functions_example_2.c deleted file mode 100644 index 4a76f18..0000000 --- a/Exercises/C17/ArraysToFunctions2/arrays_to_functions_example_2.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include - -// Simple function to populate an integer array -void PopulateTheArray ( int Size, int ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - ArrayData[i] = 2*i + 1; // Treat it like a normal array - } -} -// Simple function do display contents an integer array -void DisplayTheArray ( int Size, int ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - printf ("Item %d of the array contains %d\n", i, ArrayData[i]); - } -} -// Main () - execution starts here -int main (void) -{ - - int iSizeForArray; - int *pData; // A pointer to hold the base address of out array - - // Ask for the size of the array and store result - - printf("\nPlease enter the size of the array to dynamically allocate"); - scanf ("%d", &iSizeForArray); - - // Use calloc with checking - pData = calloc ( iSizeForArray, sizeof (int)); - - // Check we got the memory - if ( pData == NULL) - { - printf ("\nSorry, I could not allocate the memory, bye!"); - return -1; - } - - // Pass the size, iSizeForArray) and the pointer created - // which points to the start of the sucesfully allocated memory - - PopulateTheArray(iSizeForArray, pData); - DisplayTheArray(iSizeForArray, pData); - - free (pData); // Free up the memory before exiting - - return (0); // Exit indicating sucess -} \ No newline at end of file diff --git a/Exercises/C17/ex2.c b/Exercises/C17/ex2.c deleted file mode 100644 index c26b245..0000000 --- a/Exercises/C17/ex2.c +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - - -// Simple function to populate an integer array -void PopulateTheArray ( int Size, float ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - ArrayData[i] = degrees_to_radians(i); // Treat it like a normal array - } -} -// Simple function do display contents an integer array -void DisplayTheArray ( int Size, float ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - printf ("%d\t%0.3f\n", i, ArrayData[i]); - } -} -// Main () - execution starts here -int main (void) -{ - - int iSizeForArray; - float *pData; // A pointer to hold the base address of out array - - // Ask for the size of the array and store result - - printf("Please enter the size of the array to dynamically allocate: "); - scanf ("%d", &iSizeForArray); - - // Use calloc with checking - pData = calloc( iSizeForArray, sizeof (float)); - - // Check we got the memory - if ( pData == NULL) - { - printf ("Sorry, I could not allocate the memory, bye!\n"); - return -1; - } - - // Pass the size, iSizeForArray) and the pointer created - // which points to the start of the sucesfully allocated memory - - PopulateTheArray(iSizeForArray, pData); - DisplayTheArray(iSizeForArray, pData); - - free(pData); // Free up the memory before exiting - - return (0); // Exit indicating sucess -} diff --git a/Exercises/C18/BinaryFile/binary_file_example.c b/Exercises/C18/BinaryFile/binary_file_example.c deleted file mode 100644 index 00a2023..0000000 --- a/Exercises/C18/BinaryFile/binary_file_example.c +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - - // Declate file stream variables - FILE *fInput, *fOutput; - - // Other variables needed - int i; - int SampleArray[10] = {1,2,3,4,5,6,7,8,9,10}; - float f = 23.4; - - // Try and open the binary "numbers.dat" (in the current directory) file for writing - fOutput = fopen ("numbers.dat", "wb"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("\nThe file could not be opened for writing, exiting"); - return -1; - } - - // Write out a single float to the binary file - fwrite ( &f, sizeof(float), 1 , fOutput); - - // Now the entire array on one go - fwrite ( SampleArray, sizeof(int), 10 , fOutput); - - // And close the file - fclose (fOutput); - - - // Try and open the binary "numbers.dat" (in the current directory) file for reading - fInput = fopen ("numbers.dat", "rb"); - - // Check we were able to open the file - if ( fInput== NULL) - { - printf ("\nthe file could not be opened for reading, exiting"); - return -1; - } - - // Read a single float from the binary file into f - fread ( &f, sizeof(float), 1 , fOutput); - - // Now read the entire array on one go - fread ( SampleArray, sizeof(int), 10 , fOutput); - - // Display the values read from the file on the screen - printf ("The value read into f is %f\n", f);; - for ( i = 0 ; i < 10 ; i++) - { - printf ("Item %d of the array contains %d\n",i, SampleArray[i]); - } - - // And close the file - fclose (fInput); - - - return (0); // Exit indicating sucess -} \ No newline at end of file diff --git a/Exercises/C18/BinaryFile/numbers.dat b/Exercises/C18/BinaryFile/numbers.dat deleted file mode 100644 index a7a19b2851848a743fa87e7b01ccebeeaa5f2142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 lcmXpu-tEZ9z`(!+#LPg<0>rF9%m&2lK+FNeoIuP4!~i}B0h#~+ diff --git a/Exercises/C18/FileOpen/file_open_example.c b/Exercises/C18/FileOpen/file_open_example.c deleted file mode 100644 index 6cc5e3e..0000000 --- a/Exercises/C18/FileOpen/file_open_example.c +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - - // Declate file stream variables - FILE *fInput, *fOutput, *fRecords; - - - // Try and open the text "sample.txt" (in the current directory) file for reading - fInput = fopen ("sample.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("\nthe file could not be opened"); - return -1; // Exit as unsuccessful - } - - fclose (fInput); // Close the file - - // Try and open the binary "samples.dat" (in the current directory) file for writing - // if a file of this name already exists it will be deleted - fOutput = fopen ("samples.dat", "wb"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("\nthe file could not be opened"); - return -1; // Exit as unsuccessful - } - - fclose (fOutput); // Close the file - - // Open, for appending, the text file "records.txt". If the file does not already - // exists, a new one of this name will be created (as if "w") were the mocde - fRecords = fopen ("records.txt", "a"); - - // Check we were able to open the file - if ( fRecords == NULL) - { - printf ("\nthe file could not be opened"); - return -1; // Exit as unsuccessful - } - - fclose (fRecords); - - - return (0); // Exit indicating sucess -} \ No newline at end of file diff --git a/Exercises/C18/TextFile/numbers.txt b/Exercises/C18/TextFile/numbers.txt deleted file mode 100644 index f00c965..0000000 --- a/Exercises/C18/TextFile/numbers.txt +++ /dev/null @@ -1,10 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 diff --git a/Exercises/C18/TextFile/text_file_example.c b/Exercises/C18/TextFile/text_file_example.c deleted file mode 100644 index 9e29c10..0000000 --- a/Exercises/C18/TextFile/text_file_example.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declate file stream variables - FILE *fInput, *fOutput; - - // Other variables needed - int i,d; - - // Try and open the text "sample.txt" (in the current directory) file for writing - fOutput = fopen ("numbers.txt", "w"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("\nthe file could not be opened for writing, exiting"); - return -1; - } - - // Use a loop to write values to the newly created file - for ( i = 1 ; i <= 10 ; i++) - { - fprintf (fOutput, "%d\n", i); - } - - // And close the file - fclose (fOutput); - - // Try and open the binary "numbers " (in the current directory) file for reading - - fInput = fopen ("numbers.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("\nthe file could not be opened for reading, exiting"); - return -1; - } - - // Read, line by line the 10 values written into variable d - // and then display the contents of d on the screen - for ( i = 1 ; i <= 10 ; i++) - { - fscanf (fInput, "%d", &d); - printf ("Value read from file %d\n",d); - } - - // And close the file - fclose (fInput); - - return (0); // Exit indicating success -} \ No newline at end of file diff --git a/Exercises/C18/ex2.c b/Exercises/C18/ex2.c deleted file mode 100644 index 1217fe9..0000000 --- a/Exercises/C18/ex2.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declate file stream variables - FILE *fInput, *fOutput; - - // Other variables needed - int i, d, d2; - - // Try and open the text "sample.txt" (in the current directory) file for writing - fOutput = fopen ("numbers.txt", "w"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("The file could not be opened for writing, exiting\n"); - return -1; - } - - // Use a loop to write values to the newly created file - for ( i = 1 ; i <= 10 ; i++) - { - fprintf (fOutput, "%d %d\n", i, i*i); - } - - // And close the file - fclose (fOutput); - - // Try and open the binary "numbers " (in the current directory) file for reading - - fInput = fopen ("numbers.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("The file could not be opened for reading, exiting\n"); - return -1; - } - - // Read, line by line the 10 values written into variable d - // and then display the contents of d on the screen - for ( i = 1 ; i <= 10 ; i++) - { - fscanf (fInput, "%d %d", &d, &d2); - printf ("Value read from file: %d %d\n", d, d2); - } - - // And close the file - fclose (fInput); - - return (0); // Exit indicating success -} diff --git a/Exercises/C18/ex3.c b/Exercises/C18/ex3.c deleted file mode 100644 index 2b8dec4..0000000 --- a/Exercises/C18/ex3.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declate file stream variables - FILE *fInput, *fOutput; - // 8x the maximum filename length on most filesystems should be a decent size - char filename[2049] = { 0 }; - - printf("Enter filename: "); - scanf("%2048s", filename); - - // Other variables needed - int i, d, d2; - - // Try and open the text "sample.txt" (in the current directory) file for writing - fOutput = fopen (filename, "w"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("The file could not be opened for writing, exiting\n"); - return -1; - } - - // Use a loop to write values to the newly created file - for ( i = 1 ; i <= 10 ; i++) - { - fprintf (fOutput, "%d %d\n", i, i*i); - } - - // And close the file - fclose (fOutput); - - // Try and open the binary "numbers " (in the current directory) file for reading - - fInput = fopen ("numbers.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("The file could not be opened for reading, exiting\n"); - return -1; - } - - // Read, line by line the 10 values written into variable d - // and then display the contents of d on the screen - for ( i = 1 ; i <= 10 ; i++) - { - fscanf (fInput, "%d %d", &d, &d2); - printf ("Value read from file: %d %d\n", d, d2); - } - - // And close the file - fclose (fInput); - - return (0); // Exit indicating success -} diff --git a/Exercises/C18/ex4.c b/Exercises/C18/ex4.c deleted file mode 100644 index 42aaf52..0000000 --- a/Exercises/C18/ex4.c +++ /dev/null @@ -1,92 +0,0 @@ -#include -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - - -// Simple function to populate an integer array -void PopulateTheArray ( int Size, float ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - ArrayData[i] = degrees_to_radians(i); // Treat it like a normal array - } -} -// Simple function do display contents an integer array -void DisplayTheArray ( int Size, float ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - printf ("%d\t%0.3f\n", i, ArrayData[i]); - } -} - -int SaveArray (char *filename, int Size, float ArrayData[]) -{ - FILE *fp; // File Pointer - int i; // Variable to use in our loop - - fp = fopen(filename, "w"); - // if file open failed, return error to caller - if (fp == NULL) { - return 1; - } - - - for ( i = 0 ; i < Size ; i++) - { - fprintf(fp, "%d\t%0.3f\n", i, ArrayData[i]); - } - - // close file, returns 0 on successful closing (therefore function has executed sucessfully) - return fclose(fp); -} -// Main () - execution starts here -int main (void) -{ - char filename[2049]; - int rc, iSizeForArray; - float *pData; // A pointer to hold the base address of out array - - // Ask for the size of the array and store result - - printf("Please enter the size of the array to dynamically allocate: "); - scanf ("%d", &iSizeForArray); - - // Use calloc with checking - pData = calloc( iSizeForArray, sizeof (float)); - - // Check we got the memory - if ( pData == NULL) - { - printf ("Sorry, I could not allocate the memory, bye!\n"); - return -1; - } - - // Pass the size, iSizeForArray) and the pointer created - // which points to the start of the sucesfully allocated memory - - PopulateTheArray(iSizeForArray, pData); - DisplayTheArray(iSizeForArray, pData); - - // Exercise doesn't ask to use function but kind of pointless without - printf("Enter filename: "); - scanf("%2048s", filename); - rc = SaveArray(filename, iSizeForArray, pData); - if (rc != 0) { - printf("Error saving file\n"); - free(pData); - return rc; - } - - free(pData); // Free up the memory before exiting - return (0); // Exit indicating sucess -} diff --git a/Exercises/C18/ex5.c b/Exercises/C18/ex5.c deleted file mode 100644 index a5a8136..0000000 --- a/Exercises/C18/ex5.c +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include -#include - - -float degrees_to_radians(float degrees) { - return M_PI * degrees / 180.0; -} - - -// Simple function to populate an integer array -void PopulateTheArray ( int Size, float ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - ArrayData[i] = degrees_to_radians(i); // Treat it like a normal array - } -} -// Simple function do display contents an integer array -void DisplayTheArray ( int Size, float ArrayData[]) -{ - int i; // Variable to use in our loop - - for ( i = 0 ; i < Size ; i++) - { - printf ("%d\t%0.3f\n", i, ArrayData[i]); - } -} - -int SaveArrayBinary (char *filename, int Size, float ArrayData[]) -{ - FILE *fp; // File Pointer - int i; // Variable to use in our loop - - fp = fopen(filename, "wb"); - // if file open failed, return error to caller - if (fp == NULL) { - return 1; - } - - // write data - fwrite(ArrayData, sizeof(float), Size, fp); - // close file, returns 0 on successful closing (therefore function has executed sucessfully) - return fclose(fp); -} -// Main () - execution starts here -int main (void) -{ - char filename[2049]; - int rc, iSizeForArray; - float *pData; // A pointer to hold the base address of out array - - // Ask for the size of the array and store result - - printf("Please enter the size of the array to dynamically allocate: "); - scanf ("%d", &iSizeForArray); - - // Use calloc with checking - pData = calloc( iSizeForArray, sizeof (float)); - - // Check we got the memory - if ( pData == NULL) - { - printf ("Sorry, I could not allocate the memory, bye!\n"); - return -1; - } - - // Pass the size, iSizeForArray) and the pointer created - // which points to the start of the sucesfully allocated memory - - PopulateTheArray(iSizeForArray, pData); - DisplayTheArray(iSizeForArray, pData); - - // Exercise doesn't ask to use function but kind of pointless without - printf("Enter filename: "); - scanf("%2048s", filename); - rc = SaveArrayBinary(filename, iSizeForArray, pData); - if (rc != 0) { - printf("Error saving file\n"); - free(pData); - return rc; - } - - free(pData); // Free up the memory before exiting - return (0); // Exit indicating sucess -} diff --git a/Exercises/C18/ex6.c b/Exercises/C18/ex6.c deleted file mode 100644 index f315699..0000000 --- a/Exercises/C18/ex6.c +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include - - -int main() { - FILE *fp; // file pointer - float *data; // data pointer (array of floats) - int i, file_size, arr_size; - char filename[2049]; - - printf("Enter filename to read: "); - scanf("%2048s", filename); - - fp = fopen(filename, "rb"); - if (fp == NULL) { - printf("Failed to open file\n"); - return 1; - } - - // get file size (technically isn't the best way because SEEK_END is undefined behaviour: - // - // "Library implementations are allowed to not meaningfully support SEEK_END - // (therefore, code using it has no real standard portability)." - // ~ https://cplusplus.com/reference/cstdio/fseek/ - // - // " Setting the file position indicator to end-of-file, as with fseek(file, 0, SEEK_END), - // has undefined behavior for a binary stream (because of possible trailing null characters) or - // for any stream with state-dependent encoding that does not assuredly end in the initial shift - // state. " - // ~ https://port70.net/~nsz/c/c11/n1570.html#note268 - // - // it is also limited to 2GB files as it returns a signed integer - // better to use something like this probably: - // https://stackoverflow.com/a/238609 - // - // but louise uses fseek so i will too - fseek(fp, 0, SEEK_END); - file_size = ftell(fp); - arr_size = file_size/sizeof(float); - rewind(fp); - - // allocate memory and read data - data = malloc(file_size); - fread(data, sizeof(float), arr_size, fp); - - for (i = 0; i < arr_size; i++) { - printf("%d %0.3f\n", i, data[i]); - } - - free(data); -} diff --git a/Exercises/C19/DefineExamples/define_example.c b/Exercises/C19/DefineExamples/define_example.c deleted file mode 100644 index a088ad5..0000000 --- a/Exercises/C19/DefineExamples/define_example.c +++ /dev/null @@ -1,18 +0,0 @@ -#define UP 1 -#define DOWN 2 - -int main() -{ - int i = 1; - - if (i == UP ) - { - // Do something - } - - if ( i == DOWN) - { - // Doe something else - } - return 0; -} \ No newline at end of file diff --git a/Exercises/C19/enum_example.c b/Exercises/C19/enum_example.c deleted file mode 100644 index 996041b..0000000 --- a/Exercises/C19/enum_example.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -enum DOW { sun, mon, tue, wed, thu, fri, sat } ; - -// Main () - execution starts here -int main (void) -{ - enum DOW day; - - /* Code that get a value for 'day' */ - day = tue; - - switch (day) - { - case sun : printf ("Sunday\n") ; break ; - case mon : printf ("Monday\n") ; break ; - case tue : printf ("Tuesday\n") ; break ; - /* etc. */ - } - return (0); // Exit indicating success -} \ No newline at end of file diff --git a/Exercises/C19/ex1.c b/Exercises/C19/ex1.c deleted file mode 100644 index f6dcd03..0000000 --- a/Exercises/C19/ex1.c +++ /dev/null @@ -1,20 +0,0 @@ -#include - - -struct Person { - int age; - char forename[30]; - char surname[50]; -}; - - -int main() { - struct Person p; - - printf("Enter age: "); scanf("%d", &p.age); - printf("Enter forename: "); scanf("%29s", p.forename); - printf("Enter surname: "); scanf("%49s", p.surname); - - printf("p.age=%d p.forename=%s p.surname=%s\n", p.age, p.forename, p.surname); - return 0; -} diff --git a/Exercises/C19/ex2.c b/Exercises/C19/ex2.c deleted file mode 100644 index 51e153c..0000000 --- a/Exercises/C19/ex2.c +++ /dev/null @@ -1,25 +0,0 @@ -#include - - -struct Person { - int age; - char forename[30]; - char surname[50]; -}; - - -void print_person(struct Person p) { - printf("p.age=%d p.forename=%s p.surname=%s\n", p.age, p.forename, p.surname); -} - - -int main() { - struct Person p; - - printf("Enter age: "); scanf("%d", &p.age); - printf("Enter forename: "); scanf("%29s", p.forename); - printf("Enter surname: "); scanf("%49s", p.surname); - - print_person(p); - return 0; -} diff --git a/Exercises/C19/ex3.c b/Exercises/C19/ex3.c deleted file mode 100644 index 96dc041..0000000 --- a/Exercises/C19/ex3.c +++ /dev/null @@ -1,27 +0,0 @@ -#include - - -struct Person { - int age; - int year_of_birth; - char forename[30]; - char surname[50]; -}; - - -void print_person(struct Person p) { - printf("p.age=%d p.year_of_birth=%d p.forename=%s p.surname=%s\n", p.age, p.year_of_birth, p.forename, p.surname); -} - - -int main() { - struct Person p; - - printf("Enter age: "); scanf("%d", &p.age); - printf("Enter birth year: "); scanf("%d", &p.year_of_birth); - printf("Enter forename: "); scanf("%29s", p.forename); - printf("Enter surname: "); scanf("%49s", p.surname); - - print_person(p); - return 0; -} diff --git a/Exercises/C19/ex4.c b/Exercises/C19/ex4.c deleted file mode 100644 index 76b47cf..0000000 --- a/Exercises/C19/ex4.c +++ /dev/null @@ -1,50 +0,0 @@ -#include - - -struct Person { - int age; - int year_of_birth; - char forename[30]; - char surname[50]; -}; - - -void print_person(struct Person p) { - printf("p.age=%d p.year_of_birth=%d p.forename=%s p.surname=%s\n", p.age, p.year_of_birth, p.forename, p.surname); -} - - -int main() { - struct Person p; - FILE *fp; - char choice; - char filename[4097]; - - printf("Read or write a file? (r/w) "); scanf("%c", &choice); - - if (choice == 'w') { - printf("Enter age: "); scanf("%d", &p.age); - printf("Enter birth year: "); scanf("%d", &p.year_of_birth); - printf("Enter forename: "); scanf("%29s", p.forename); - printf("Enter surname: "); scanf("%49s", p.surname); - - printf("Enter filename to save to: "); scanf("%4096s", filename); - fp = fopen(filename, "wb"); - if (fp == NULL) { - printf("Failed to open file for writing\n"); - return 1; - } - fwrite(&p, 1, sizeof(p), fp); - } else { - printf("Enter file to read from: "); scanf("%4096s", filename); - fp = fopen(filename, "rb"); - if (fp == NULL) { - printf("Failed to open file for reading\n"); - return 1; - } - fread(&p, 1, sizeof(p), fp); - } - - print_person(p); - return 0; -} diff --git a/Exercises/C19/static_variable_example.c b/Exercises/C19/static_variable_example.c deleted file mode 100644 index 4fb626c..0000000 --- a/Exercises/C19/static_variable_example.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include - -void DisplayHelloWorld (void) -{ - static int k = 0; // Counter for how many times the function is called - - printf ("Hello World\n"); - - // Increment counter and display value - k = k + 1; - printf ("I have now said this %d times\n",k); -} -// Main () - execution starts here -int main (void) -{ - int i; - - // Loop calling out function 10 times - for ( i =0 ; i < 10 ; i++ ) - { - DisplayHelloWorld(); - } - - return (0); // Exit indicating success -} \ No newline at end of file diff --git a/Exercises/C20/ConditionalDirective/conditional_directive_example.c b/Exercises/C20/ConditionalDirective/conditional_directive_example.c deleted file mode 100644 index c2fffe2..0000000 --- a/Exercises/C20/ConditionalDirective/conditional_directive_example.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include - -#define DEBUG_ON 0 - -int main(void) -{ -#if DEBUG_ON == 1 - printf("Debug mode - about to do something\n"); -#else - printf("Running in standard mode"); -#endif - - return 0; -} \ No newline at end of file diff --git a/Exercises/C20/FormattingDirective/formatting_directive_example.c b/Exercises/C20/FormattingDirective/formatting_directive_example.c deleted file mode 100644 index 1973848..0000000 --- a/Exercises/C20/FormattingDirective/formatting_directive_example.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include - -//#define DEBUG_ON 0 - -int main(void) -{ -#ifdef DEBUG_ON - printf("Debug mode - about to do something\n"); -#else - printf("Running in standard mode"); -#endif - -return 0; -} \ No newline at end of file diff --git a/Exercises/C20/macro_function_example.c b/Exercises/C20/macro_function_example.c deleted file mode 100644 index 3627fc6..0000000 --- a/Exercises/C20/macro_function_example.c +++ /dev/null @@ -1,8 +0,0 @@ -#include -#define MIN(a,b) ((a)<(b)?(a):(b)) - -int main(void) -{ - printf("The minimum value of 10 and 20 is: %d\n", MIN(10,20)); - return 0; -} \ No newline at end of file diff --git a/Exercises/C21/sprintf_example.c b/Exercises/C21/sprintf_example.c deleted file mode 100644 index ce38214..0000000 --- a/Exercises/C21/sprintf_example.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -int main() -{ - int i; - char FileName[100]; - - for ( i = 1 ; i < 10 ; i++) - { - //'Print' text into string - sprintf(FileName , "file%d.dat" , i); - - // Sidplay the name created - printf("Current file name: %s\n", FileName); - } - - return 0; -} \ No newline at end of file diff --git a/Exercises/C3/hello_world.c b/Exercises/C3/hello_world.c deleted file mode 100644 index 7141063..0000000 --- a/Exercises/C3/hello_world.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -/* My first program */ -int main(void) -{ - // This is a single line of comment - printf("Hello World\n"); - return 0; -} diff --git a/Exercises/C4/Correct_answer/correct_answer.c b/Exercises/C4/Correct_answer/correct_answer.c deleted file mode 100644 index a9f0f76..0000000 --- a/Exercises/C4/Correct_answer/correct_answer.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare and initialise as required - int a = 1,b = 4; - float ans; - - // Perform calculation - // This time a & b are treated as if they are floats - // the result of this float calculation is stored in ans - ans = (float)a / (float)b; - - // Display answer - printf ("\nThe answer is %f",ans); - - return 0; - -} \ No newline at end of file diff --git a/Exercises/C4/Wrong_answer/wrong_answer.c b/Exercises/C4/Wrong_answer/wrong_answer.c deleted file mode 100644 index d5eceb4..0000000 --- a/Exercises/C4/Wrong_answer/wrong_answer.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare and initialise as required - int a = 1,b = 4; - float ans; - - // Perform calculation - // a and b are integers so the answer will be the result of the integer division - - ans = a / b; - - // Display answer - printf ("\nThe answer is %f",ans); - - return 0; - -} \ No newline at end of file diff --git a/Exercises/C4/declare_a_string.c b/Exercises/C4/declare_a_string.c deleted file mode 100644 index 591b072..0000000 --- a/Exercises/C4/declare_a_string.c +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -int main(void) -{ - // A variable to store a name (maximum 49 characters) - char Name[50]; - - // Declare multiple strings on the same line - char AddressLine1[100], AddressLine2[100], PostCode[10]; - - // all done - return 0; -} \ No newline at end of file diff --git a/Exercises/C4/difficult_to_read_code.c b/Exercises/C4/difficult_to_read_code.c deleted file mode 100644 index 53300e2..0000000 --- a/Exercises/C4/difficult_to_read_code.c +++ /dev/null @@ -1,4 +0,0 @@ -#include -int main(void) { int revenue = 80; int cost = 50; int roi; -roi = (100 * (revenue - cost)) / cost; if (roi >= 0) { -printf ("%d\n", roi); } return 0; } \ No newline at end of file diff --git a/Exercises/C4/poor_layout/poor_layout.c b/Exercises/C4/poor_layout/poor_layout.c deleted file mode 100644 index b018462..0000000 --- a/Exercises/C4/poor_layout/poor_layout.c +++ /dev/null @@ -1,4 +0,0 @@ -#include - - /* My first program */ -int main(void) { printf("Hello World"); return 0; } \ No newline at end of file diff --git a/Exercises/C4/reformatted_code.c b/Exercises/C4/reformatted_code.c deleted file mode 100644 index a253d00..0000000 --- a/Exercises/C4/reformatted_code.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -int main(void) -{ - // Declare variables and give initial values - int revenue = 80; - int cost = 50; - int roi; - - // Perform calculation - roi = (100 * (revenue - cost)) / cost; - - // Make decision based on value of roi - if (roi >= 0) - { - printf ("%d\n", roi); - } - - return 0; // Exit indicating success -} \ No newline at end of file diff --git a/Exercises/C4/simple_claculation.c b/Exercises/C4/simple_claculation.c deleted file mode 100644 index 0544520..0000000 --- a/Exercises/C4/simple_claculation.c +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -int main(void) -{ - int a = 6,b = 7,c; // Declare and initialiase as required - c = a + b; // Add the values and store in c - -} \ No newline at end of file diff --git a/Exercises/C4/well_laid_out_code.c b/Exercises/C4/well_laid_out_code.c deleted file mode 100644 index 127af97..0000000 --- a/Exercises/C4/well_laid_out_code.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -/* My first program */ -int main(void) -{ - printf("Hello World"); - return 0; -} \ No newline at end of file diff --git a/Exercises/C5/FormattingNumbers/formatting_numbers.c b/Exercises/C5/FormattingNumbers/formatting_numbers.c deleted file mode 100644 index 49fc8cd..0000000 --- a/Exercises/C5/FormattingNumbers/formatting_numbers.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a = 123; - float f = 12.456f; - - // Use printf display text on the screen - printf ("Examples of integer formatting\n"); - printf ("a = %d (no modifier)\n", a); - printf ("a = %6d (w:6, justify:right)\n", a); - printf ("a = %-6d (w:6 )\n", a); - - // Use printf display text on the screen - printf ("Examples of float formatting\n"); - printf ("f = %f (no modifier)\n", f); - printf ("f = %6.2f (w:6, 2dp, justify:right)\n", f); - printf ("f = %-6.1f (w:6, 1dp)\n", f); - - // Exit from main - return 0; -} \ No newline at end of file diff --git a/Exercises/C5/displaying_variables.c b/Exercises/C5/displaying_variables.c deleted file mode 100644 index 39ef929..0000000 --- a/Exercises/C5/displaying_variables.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a = 1, b = 2; - float f = 1.23f; - - // Use printf display text on the screen - printf ("The variables are\na = %d\nb=%d\nf=%f", a, b, f); - - // Exit from main - return 0; -} \ No newline at end of file diff --git a/Exercises/C5/ex4.c b/Exercises/C5/ex4.c deleted file mode 100644 index d5c7cb8..0000000 --- a/Exercises/C5/ex4.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include - -int main() { - float r; - printf("Enter radius: "); - scanf("%f", &r); - - printf("Area of sphere: %f\n", 4.0*M_PI*r*r); - printf("Volume of sphere: %f\n", M_PI*r*r*r*4.0/3.0); -} diff --git a/Exercises/C5/ex5.c b/Exercises/C5/ex5.c deleted file mode 100644 index 9fb188e..0000000 --- a/Exercises/C5/ex5.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include - -int main() { - float r; - printf("Enter radius: "); - scanf("%f", &r); - - printf("Area of circle: %0.2f\n", M_PI*r*r); - printf("Volume of sphere: %.02f\n", M_PI*r*r*r*4.0/3.0); -} diff --git a/Exercises/C5/not_displaying.c b/Exercises/C5/not_displaying.c deleted file mode 100644 index 178845a..0000000 --- a/Exercises/C5/not_displaying.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -int main(void) -{ - - // Declare some variables - int a = 1, b = 2; - float f = 1.23f; - - // Use printf display text on the screen - printf ("The variables are a, b and f"); - - // Exit from main - return 0; - -} \ No newline at end of file diff --git a/Exercises/C5/printf_example_1.c b/Exercises/C5/printf_example_1.c deleted file mode 100644 index 2d602e6..0000000 --- a/Exercises/C5/printf_example_1.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -int main(void) -{ - - printf ("This is my first computer program"); - printf ("Hello World"); - - return 0; - -} \ No newline at end of file diff --git a/Exercises/C5/printf_example_2.c b/Exercises/C5/printf_example_2.c deleted file mode 100644 index 4b489fb..0000000 --- a/Exercises/C5/printf_example_2.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -int main(void) -{ - - printf ("This is my first computer program\n"); - printf ("Hello World\n"); - - return 0; - -} \ No newline at end of file diff --git a/Exercises/C6/ex1.c b/Exercises/C6/ex1.c deleted file mode 100644 index 2e15ea7..0000000 --- a/Exercises/C6/ex1.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a, b; - - // Note: Order of a,b indicates the order in which operations are carried out on execution - - // Increment operators - b = 3; - printf("a=%d b=%d\n", a, b); - a = ++b; // b is now 4, a is also 4 - printf("a=%d b=%d\n", a, b); - a = b++; // a is 4, b is now 5, - printf("a=%d b=%d\n", a, b); - - // Decrement operators (reset a back to 3) - b = 3; - printf("a=%d b=%d\n", a, b); - a = b--; // a is 3, b is now 2 - printf("a=%d b=%d\n", a, b); - a = --b; // b is now 1, a is also 1 - printf("a=%d b=%d\n", a, b); - - return 0; // Exit from main -} diff --git a/Exercises/C6/ex2.c b/Exercises/C6/ex2.c deleted file mode 100644 index 05994e7..0000000 --- a/Exercises/C6/ex2.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -int main() { - unsigned int a = 60; - unsigned int b = 13; - unsigned int r; - - r = a & b; - printf("bitwise AND of 60 and 13: %d\n", r); - r = a | b; - printf("bitwise OR of 60 and 13: %d\n", r); - r = a ^ b; - printf("bitwise XOR of 60 and 13: %d\n", r); -} diff --git a/Exercises/C6/ex3.c b/Exercises/C6/ex3.c deleted file mode 100644 index acc02fd..0000000 --- a/Exercises/C6/ex3.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -int main() { - unsigned int a = 0x60; - unsigned int b = 0x13; - unsigned int r; - - r = a & b; - printf("bitwise AND of 0x60 and 0x13: 0x%02x\n", r); - r = a | b; - printf("bitwise OR of 0x60 and 0x13: 0x%02x\n", r); - r = a ^ b; - printf("bitwise XOR of 0x60 and 0x13: 0x%02x\n", r); -} diff --git a/Exercises/C6/inc_dec_examples.c b/Exercises/C6/inc_dec_examples.c deleted file mode 100644 index 9c22a8f..0000000 --- a/Exercises/C6/inc_dec_examples.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a, b; - - // Note: Order of a,b indicates the order in which operations are carried out on execution - - // Increment operators - b = 3; - a = ++b; // b is now 4, a is also 4 - a = b++; // a is 4, b is now 5, - - // Decrement operators (reset a back to 3) - b = 3; - a = b--; // a is 3, b is now 2 - a = --b; // b is now 1, a is also 1 - - return 0; // Exit from main -} \ No newline at end of file diff --git a/Exercises/C7/Getchar/getchar_example.c b/Exercises/C7/Getchar/getchar_example.c deleted file mode 100644 index 4f26421..0000000 --- a/Exercises/C7/Getchar/getchar_example.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -int main(void) -{ - // declare variable - char c; - - printf("Input a character: "); - // Wait for a kepypress, store result in c - c = getchar(); - - // Display on the screen using printf - printf ("The charcter pressed was %c\n", c); - - // Display the charcter using putchar() - putchar(c); - - return 0; // Exit from main -} \ No newline at end of file diff --git a/Exercises/C7/Scanf1/scanf_example_1.c b/Exercises/C7/Scanf1/scanf_example_1.c deleted file mode 100644 index ae3f870..0000000 --- a/Exercises/C7/Scanf1/scanf_example_1.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -int main(void) -{ - int a; // Declare some variables - float f; - - // Use printf to prompt the use to enter an integer - printf ("Please enter an integer\n"); - - // use scanf with %d to read into 'a' - scanf ("%d",&a); // note the important & - - // And display on the screen - printf ("The value you entered for a is %d\n", a); - - // Use printf to prompt the use to enter an float - printf ("Please enter a float\n"); - - // use scanf with %f to read into 'f' - scanf ("%f",&f); // note the important & - - // And display on the screen - printf ("The value you entered for f is %f\n", f); - - return 0; // Exit from main -} \ No newline at end of file diff --git a/Exercises/C7/Scanf2/scanf_example_2.c b/Exercises/C7/Scanf2/scanf_example_2.c deleted file mode 100644 index feefa2d..0000000 --- a/Exercises/C7/Scanf2/scanf_example_2.c +++ /dev/null @@ -1,28 +0,0 @@ -#include - -int main(void) -{ - // Declare some variables - int a,b,c; - float f,g; - - // Use printf to prompt the use to enter 3 integers - printf ("Please enter three integer\n"); - - // use scanf with %d to read into a, b and c - scanf ("%d %d %d",&a, &b, &c); // note the important & - - // And display on the screen - printf ("The values entered were %d %d %d\n", a, b, c); - - // Use printf to prompt the use to enter an float - printf ("Please enter two floats\n"); - - // use scanf with %f to read into f ang g - scanf ("%f %f",&f, &g); // note the important & - - // And display on the screen - printf ("The value you entered were %f and %f \n", f,g); - - return 0; // Exit from main -} \ No newline at end of file diff --git a/Exercises/C7/ex2.c b/Exercises/C7/ex2.c deleted file mode 100644 index 207f22b..0000000 --- a/Exercises/C7/ex2.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include - -int main() { - float r; - printf("Enter radius: "); - scanf("%f", &r); - - printf("Area of circle: %f\n", M_PI*r*r); - printf("Volume of sphere: %f\n", M_PI*r*r*r*4.0/3.0); -} diff --git a/Exercises/C7/ex3.c b/Exercises/C7/ex3.c deleted file mode 100644 index 7d6b3bf..0000000 --- a/Exercises/C7/ex3.c +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include - -int main() { - float radius, height; - - printf("Enter radius: "); - scanf("%f", &radius); - printf("Enter height: "); - scanf("%f", &height); - - printf("Surface area: %f\n", 2*M_PI*radius*radius + 2*M_PI*radius*height); -} diff --git a/Exercises/C7/ex4.c b/Exercises/C7/ex4.c deleted file mode 100644 index 92bbf40..0000000 --- a/Exercises/C7/ex4.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -int main() { - char name[200] = { 0 }; - - printf("What is your name? "); - scanf("%s", name); - - printf("Hello %s\n", name); - -} diff --git a/Exercises/C7/ex5.c b/Exercises/C7/ex5.c deleted file mode 100644 index f828e8d..0000000 --- a/Exercises/C7/ex5.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -int main() { - char name[200] = { 0 }; - int age = 0; - - printf("What is your name? "); - scanf("%s", name); - - printf("What is your age? "); - scanf("%ud", &age); - - printf("Hello %s\nYou are %d years old\n", name, age); - -} diff --git a/Exercises/C7/string_with_gets.c b/Exercises/C7/string_with_gets.c deleted file mode 100644 index 231a943..0000000 --- a/Exercises/C7/string_with_gets.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -int main() -{ - // Declare variable - maximum 99 characters - char str[100]; - - // Prompt for text - printf("enter some text\n"); - - // Store intput in str - gets(str); - - // Display a message on the screen - printf("you entered : %s\n", str); - - // Exit from main - return 0; -} \ No newline at end of file diff --git a/Exercises/C7/string_with_scanf.c b/Exercises/C7/string_with_scanf.c deleted file mode 100644 index 08d4a8a..0000000 --- a/Exercises/C7/string_with_scanf.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - char name[50]; - - // Wait for a kepypress, store result in c - printf ("Please enter your name"); - - // read in using scanf with %s - scanf ("%s",name); - - // Display on the screen using printf - printf ("Hello %s\n", name); - - // Exit from main - return 0; -} \ No newline at end of file diff --git a/Exercises/C8/ex2.c b/Exercises/C8/ex2.c deleted file mode 100644 index c1dd316..0000000 --- a/Exercises/C8/ex2.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -int main() { - int input; - - printf("Enter an integer: "); - scanf("%d", &input); - - if (input >= 0 && input <= 10) { - printf("The number is in range\n"); - } - - return 0; -} diff --git a/Exercises/C8/ex3.c b/Exercises/C8/ex3.c deleted file mode 100644 index 9a2d714..0000000 --- a/Exercises/C8/ex3.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -int main() { - int input; - - printf("Enter an integer: "); - scanf("%d", &input); - - if (!(input >= 0 && input <= 10)) { - printf("The number is not in range\n"); - } - - return 0; -} diff --git a/Exercises/C8/ex4.c b/Exercises/C8/ex4.c deleted file mode 100644 index 1878661..0000000 --- a/Exercises/C8/ex4.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -int main() { - int age; - - printf("Enter your age: "); - scanf("%d", &age); - - // c only matches one branch so don't need to specify lower limits of each age range - if ( age <= 0 ) { - printf("Still a baby\n"); - } else if ( age <= 12 ) { - printf("The junior years\n"); - } else if ( age < 20 ) { - printf("Teenage years\n"); - } else { - printf("Downhill all the way now!\n"); - } - - return 0; -} diff --git a/Exercises/C8/ex7.c b/Exercises/C8/ex7.c deleted file mode 100644 index 74c7e5f..0000000 --- a/Exercises/C8/ex7.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -int main() { - int rc; // used to check return codes of scanf - float radius, height; - - printf("Enter radius: "); - rc = scanf("%f", &radius); - // scanf returns number of scanned items. If input is invalid then 0 values will have been scanned. - if (rc != 1) { - printf("Please enter an positive real integer or decimal\n"); - return 1; - } - - printf("Enter height: "); - rc = scanf("%f", &height); - // scanf returns number of scanned items. If input is invalid then 0 values will have been scanned. - if (rc != 1) { - printf("Please enter an positive real integer or decimal\n"); - return 1; - } - - printf("Surface area: %f\n", 2*M_PI*radius*radius + 2*M_PI*radius*height); -} diff --git a/Exercises/C8/if_example.c b/Exercises/C8/if_example.c deleted file mode 100644 index 83939d0..0000000 --- a/Exercises/C8/if_example.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a = 7, b=6; - - printf("Enter a value for a: "); - scanf("%d", &a); - printf("Enter a value for b: "); - scanf("%d", &b); - - // A single line of code conditional on the value of a - if ( a == 7 ) - printf ("The value of a is 7 - so I will do this\n"); - - // Multiple lines of code conditional on b not equalling 4 - // so then need to be placed inside { and } - if ( b != 4 ) - { - printf ("The value of b is not 4\n"); - printf ("So I will do multiple tasks\n"); - } - - return 0; // Exit from main -} diff --git a/Exercises/C8/switch_example_1.c b/Exercises/C8/switch_example_1.c deleted file mode 100644 index 4dc4a9a..0000000 --- a/Exercises/C8/switch_example_1.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a = 1; - switch ( a ) - { - case 0 : - printf ("Sunday\n"); - break ; // end of the lines of code to execute - - case 1: - printf ("Monday\n"); - break ; // end of the lines of code to execute - - case 2: - printf ("Tuesday\n"); - break ; // end of the lines of code to execute - - // etc... - - default: // If no case is met (OPTIONAL) - printf ("\nThe value supplied is out of range\n"); - - } - return 0; -} \ No newline at end of file diff --git a/Exercises/C8/switch_example_2.c b/Exercises/C8/switch_example_2.c deleted file mode 100644 index bf64f9e..0000000 --- a/Exercises/C8/switch_example_2.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a = 1; - switch ( a ) - { - case 1 : - case 2 : - case 3 : - // Code to do if a is 1, 2 or 3 - break ; // end of the lines of code to execute - - case 4: - case 5: - // Code to do if a is 4 or 5 - break ; // end of the lines of code to execute - - default: // If no case is met (OPTIONAL) - // Code to do if no case is met - } - return 0; -} \ No newline at end of file diff --git a/Exercises/C8/switch_example_3.c b/Exercises/C8/switch_example_3.c deleted file mode 100644 index db2154e..0000000 --- a/Exercises/C8/switch_example_3.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -int main(void) -{ - // Declare some variables - int a = 1; - switch ( a ) - { - case 1 : - printf ("This is case 1\n"); - case 2 : - printf ("This is case 2\n"); - case 3 : - printf ("This is case 3\n"); - break ; // end of the lines of code to execute - - default: // If no case is met - printf ("This default case\n"); - // Code to do if no case is met - } - return 0; -} \ No newline at end of file diff --git a/Exercises/C9/do_while_loop.c b/Exercises/C9/do_while_loop.c deleted file mode 100644 index 6a0cb93..0000000 --- a/Exercises/C9/do_while_loop.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -int main(void) -{ - int age; // Declare variable, no need to initialise this time - // as we read into it before it is tested against - - // The loop is always entered as the test is at the end - do - { - // Code must be executed at least once - printf ("\nPlease enter your age"); - scanf("%d", &age); - printf ("You are %d years old\n", age); - - // Test is now made and the code - // repeats if the test equates as non-zerp - // (i.e. is age is not zero) - } - while ( age != 0); - - return 0; -} \ No newline at end of file diff --git a/Exercises/C9/ex2.c b/Exercises/C9/ex2.c deleted file mode 100644 index 906166b..0000000 --- a/Exercises/C9/ex2.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -int main(void) -{ - int age = 1; // Declare variable and initialise to 1 - - while ( age != 0) // Loop as long as age is not zero - { - // Code in {} executed if condition is true (non-zero) - - printf ("\nPlease enter your age: "); - scanf("%d", &age); - printf ("You are %d years old\n", age); - - if (age == 18 || age == 21) { - printf("You have come of age\n"); - } - - // Code now goes back and repeats the test with the value of age just entered - } - return 0; // Exit code -} diff --git a/Exercises/C9/ex3.c b/Exercises/C9/ex3.c deleted file mode 100644 index 7b8e564..0000000 --- a/Exercises/C9/ex3.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -#define MAX_NAME_LEN 200 - -int main() { - char name[MAX_NAME_LEN] = { 0 }; - - printf("Please enter your name: "); - scanf("%s", name); - - while (1) { - printf("%s\n", name); - } -} diff --git a/Exercises/C9/ex4.c b/Exercises/C9/ex4.c deleted file mode 100644 index f3a7ef3..0000000 --- a/Exercises/C9/ex4.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include - -int main(void) -{ - int age = 1; // Declare variable and initialise to 1 - - do { - - printf ("\nPlease enter your age: "); - scanf("%d", &age); - printf ("You are %d years old\n", age); - - if (age == 18 || age == 21) { - printf("You have come of age\n"); - } - - // Code now goes back and repeats the test with the value of age just entered - } while ( age != 0); // Loop as long as age is not zero - return 0; // Exit code -} diff --git a/Exercises/C9/ex5.c b/Exercises/C9/ex5.c deleted file mode 100644 index 0508542..0000000 --- a/Exercises/C9/ex5.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main() { - for (int i = 1; i <= 15; i++) { - printf("%d\n", i); - } - - return 0; -} diff --git a/Exercises/C9/ex6.c b/Exercises/C9/ex6.c deleted file mode 100644 index d72d131..0000000 --- a/Exercises/C9/ex6.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -int main() { - int rc, start, end; - - printf("Start: "); - rc = scanf("%d", &start); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - printf("End: "); - rc = scanf("%d", &end); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - - if (start > end) { - printf("Please ensure that start value is smaller than end value\n"); - return 1; - } - - for (int i = start; i <= end; i++) { - printf("%d\n", i); - } - - return 0; -} diff --git a/Exercises/C9/ex7.c b/Exercises/C9/ex7.c deleted file mode 100644 index 26db66a..0000000 --- a/Exercises/C9/ex7.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -int main() { - int rc, start, end; - - printf("Start: "); - rc = scanf("%d", &start); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - printf("End: "); - rc = scanf("%d", &end); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - - if (start > end) { - printf("Please ensure that start value is smaller than end value\n"); - return 1; - } - - for (int i = start; i <= end; i++) { - printf("%d %d\n", i, i*i); - } - - return 0; -} diff --git a/Exercises/C9/ex8.c b/Exercises/C9/ex8.c deleted file mode 100644 index a977093..0000000 --- a/Exercises/C9/ex8.c +++ /dev/null @@ -1,32 +0,0 @@ -#include - -int main() { - int rc, start, end, sum = 0; - - printf("Start: "); - rc = scanf("%d", &start); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - printf("End: "); - rc = scanf("%d", &end); - if (rc != 1) { - printf("Please enter a real integer\n"); - return 1; - } - - if (start > end) { - printf("Please ensure that start value is smaller than end value\n"); - return 1; - } - - for (int i = start; i <= end; i++) { - printf("%d\n", i); - sum += i; - } - - printf("Sum: %d\n", sum); - - return 0; -} diff --git a/Exercises/C9/for_loop_examples.c b/Exercises/C9/for_loop_examples.c deleted file mode 100644 index 0e936ef..0000000 --- a/Exercises/C9/for_loop_examples.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -int main(void) -{ - // Ddeclare variable and initialise to 1 - int i; - - // Count up from 1 to 100 in steps of 1 - // Note the test could also be: i <= 100 - for ( i = 0 ; i < 101 ; i++ ) - { - printf ("The value of i is %d\n",i); - } - - // Count down form 10 to zero - // Note: we could also use the test: i != 0 - for ( i = 10 ; i >= 0 ; i-- ) - { - printf ("The value of i is %d\n",i); - } - - // Count up from 1 to 100 in steps of 3 - // Note the test could also be: i <= 100 - // Increement could also be written as i+=3 - for ( i = 0 ; i < 101 ; i=i+1 ) - { - printf ("The value of i is %d\n",i); - } - return 0; -} \ No newline at end of file diff --git a/Exercises/C9/infinite_while_loop.c b/Exercises/C9/infinite_while_loop.c deleted file mode 100644 index a8e94e8..0000000 --- a/Exercises/C9/infinite_while_loop.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -int main(void) -{ - int age ; // Declare variable, no need to initialise this time - // as the test condition is not based on its value - - // This is always non-zero, the loop will never break - while ( 1 ) - { - // Code in {} executed if condition is true (non-zero) - - printf ("\nPlease enter your age"); - scanf("%d", &age); - printf ("You are %d years old\n", age); - - // Code now goes back and repeats - // as the conditions is always non-zero (true) - } - - return 0; // Exit code -} \ No newline at end of file diff --git a/Exercises/C9/while_loop.c b/Exercises/C9/while_loop.c deleted file mode 100644 index b9ffe86..0000000 --- a/Exercises/C9/while_loop.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -int main(void) -{ - int age = 1; // Declare variable and initialise to 1 - - while ( age != 0) // Loop as long as age is not zero - { - // Code in {} executed if condition is true (non-zero) - - printf ("\nPlease enter your age"); - scanf("%d", &age); - printf ("You are %d years old\n", age); - - // Code now goes back and repeats the test with the value of age just entered - } - return 0; // Exit code -} \ No newline at end of file diff --git a/Labs/Lab_1/InitialiseEncoderStateMachineAAR.drawio b/InitialiseEncoderStateMachineAAR.drawio similarity index 100% rename from Labs/Lab_1/InitialiseEncoderStateMachineAAR.drawio rename to InitialiseEncoderStateMachineAAR.drawio diff --git a/Labs/Lab_1/InitialiseEncoderStateMachineAAR.pdf b/InitialiseEncoderStateMachineAAR.pdf similarity index 100% rename from Labs/Lab_1/InitialiseEncoderStateMachineAAR.pdf rename to InitialiseEncoderStateMachineAAR.pdf diff --git a/Labs/Lab_1/Makefile b/Labs/Lab_1/Makefile deleted file mode 100644 index 65e94a1..0000000 --- a/Labs/Lab_1/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -include ../../Makefile - -build: - zip Lab1PrepAAR.zip *.c *.ino *.pdf *.png - -clean: - rm -f Lab1PrepAAR.zip TestEncoderAAR TwoSensorsAAR diff --git a/Lectures/LC10/SimpleFunctions1/simple_functions_1.c b/Lectures/LC10/SimpleFunctions1/simple_functions_1.c deleted file mode 100644 index d94ecc5..0000000 --- a/Lectures/LC10/SimpleFunctions1/simple_functions_1.c +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include -#include // Needed to give access to M_PI - -/* FUNCTION: CalculateAreaOfCircle - - INPUTS: radius float - RETURNS: area float - - Description - Calculate area using area = M_PI * radius * radius - -*/ - - -float CalculateAreaOfCircle ( float radius ); - - -/* Show use of function */ -int main (void) -{ - // Declare variables - no need to initialise as values will be read in / calculated - float rad, Area; - - // Prompt for and obtain value - printf ("Please enter the raduis of the circle: "); - scanf ("%f", &rad); - - // Use our function to calculate the area - Area = CalculateAreaOfCircle(rad); - - // And display the answer on the screen - printf ("The area of a circle of radius %f is %f\n", rad, Area ); - - // Note: As the function returns a value, if we did not need to store it - // we could calculate & display within the printf statement - - //printf ("The area of a circle of radius %f is %f\n", rad, CalculateAreaOfCircle(r) ); - - // All done - return 0; -} - -float CalculateAreaOfCircle ( float radius ) -{ - float area; - area = M_PI * radius * radius ; - return (area) ; -} \ No newline at end of file diff --git a/Lectures/LC10/SimpleFunctions2/simple_functions_2.c b/Lectures/LC10/SimpleFunctions2/simple_functions_2.c deleted file mode 100644 index 46ec4ab..0000000 --- a/Lectures/LC10/SimpleFunctions2/simple_functions_2.c +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include -#include // Needed to give access to M_PI - -/* FUNCTION: CalculateSurfaceAreaOfCylinder - - INPUTS: radius float - length float - - RETURNS: SurfaceArea float - - Description - Calculate the surface area of a cylinder given radius and length - -*/ - - -float CalculateSurfaceAreaOfCylinder ( float radius, float length ) -{ - float area; - area = 2.0 * ( M_PI * radius * radius ) + ( M_PI * 2.0 * radius * length ); // two ends + side - return (area) ; -} - - -/* Show use of function */ -int main (void) -{ - // Declare variables - no need to initialise as values will be read in / calculated - float rad, len, SurfaceArea; - - // Prompt for and obtain values - printf ("Please enter the radius of the cylinder: "); - scanf ("%f", &rad); - - printf ("Please enter the length of the cylinder: "); - scanf ("%f", &len); - - // Use our function to calculate the area - SurfaceArea = CalculateSurfaceAreaOfCylinder(rad, len); - - // And display the answer on the screen - printf ("The surface area of a cylinder of radius %f and length %f is %f\n", rad, len, SurfaceArea ); - - // Note: As the function returns a value, if we did not need to store it - // we could calculate & display within the printf statement - //printf ("The surface area of a cylinder of radius %f and length %f is %f\n", rad, len, CalculateSurfaceAreaOfCylinder(r,l) ); - - // All done - return 0; -} diff --git a/Lectures/LC11/loop_into_array.c b/Lectures/LC11/loop_into_array.c deleted file mode 100644 index 093baa3..0000000 --- a/Lectures/LC11/loop_into_array.c +++ /dev/null @@ -1,26 +0,0 @@ - -/* A very simple program that defines an array of ten integers */ -/* And puts a different value into each */ - -#include /* Usual includes */ -#include - -int main( void ) -{ - - int Values[10]; /* Define an array of 10 integers */ - int j; /* Define an integer 'j' */ - - /* Use a loop to put some values into the array, displaying the */ - /* vaules stored on the screen */ - - for ( j = 0 ; j < 10 ; j++ ) - { - Values[j] = j * 2; - printf("\nThe value in array index %d is %d ",j,Values[j]); - } - - - return 0; /* End of the program */ - -} diff --git a/Lectures/LC12/Global1/global_ex1.c b/Lectures/LC12/Global1/global_ex1.c deleted file mode 100644 index be30202..0000000 --- a/Lectures/LC12/Global1/global_ex1.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - This makes global variables look like a good idea - - THEY ARE NOT - DO NOT USE THEM - -*/ - -#include -#include - -int y,k,ans; /* Define GLOBAL variables */ - -void NastyGlobalFunction (void ) /* Define function */ -{ - ans = ( y * k ); /* y, k and ans are defined globally above */ - return ; -} - -int main( void ) -{ - y = 2; /* Set value of y */ - k = 3; /* Set value of k */ - - NastyGlobalFunction(); /* call the function */ - - printf("%d multiplied by %d is %d " ,y ,k ,ans ); /* Display values */ - return 0; -} \ No newline at end of file diff --git a/Lectures/LC12/Global2/global_ex2.c b/Lectures/LC12/Global2/global_ex2.c deleted file mode 100644 index db7235c..0000000 --- a/Lectures/LC12/Global2/global_ex2.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - In this example, we do not have a problem as although - we have a global variable 'i', we do not corrupt it in - the function - -*/ - -#include -#include - -int i; /* Nasty global variable ! */ - -/* - This function returns the sum of the number 1->10 - Note that although we use 'i' it is not defined in - the function its self. -*/ - -int SumToTen ( void ) -{ - - int Result = 0; - - for ( i = 10 ; i >= 0 ; i-- ) // Count down as more effecient - Result = Result + i; - - return Result; -} - -/* This is our main function */ - -int main(void) -{ - printf ("\nThe sum of the values 0 to 10 is %d ",SumToTen() ); - return 0; -} - diff --git a/Lectures/LC12/Global3/global_ex3.c b/Lectures/LC12/Global3/global_ex3.c deleted file mode 100644 index 36bdebe..0000000 --- a/Lectures/LC12/Global3/global_ex3.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - - This time we have a real problem. We are using the variable - 'i' in the main loop to count and again in the function. - - Thus the function will change the value seen by the 'main' - routine - and will cause *Serious* problems - -*/ - -#include -#include - -int i; /* Again, the nasty global variable */ - -/* - - This function returns the sum of the number 0 -> i, but - summing from the limit back to zero ( to prove a point ! ) - - The problem this will cause is that at the end of the routine - the value of 'i' will always be '1' which will stop the loop - in 'main' working ! - -*/ - - -int SumToValue ( int Limit ) -{ - - int Result = 0; - - printf("\nIn function "); - - for ( i = Limit ; i > 0 ; i-- ) - Result = Result + i; - - return Result; -} - -/* - This is our main function - this time we are aiming to print out - at table of the sums of values from 1 to 10 -*/ - - -int main( void ) -{ - - for ( i = 0 ; i < 10 ; i++ ) - { - printf ("\nThe sum of the values 0 to %d is %d ",i,SumToValue(i)); - } - - return 0; -} - diff --git a/Lectures/LC14/LineLength/LineLength.c b/Lectures/LC14/LineLength/LineLength.c deleted file mode 100644 index 214d9c2..0000000 --- a/Lectures/LC14/LineLength/LineLength.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include - -float LineLength(float x1, float x2, float y1, float y2); - -int main() -{ - float p1x = 3.4, p2x = 5.7, p1y = 0.0, p2y = 6.8; - float length = 0; - length = LineLength(p1x, p2x, p1y, p2y); - printf("Length = %f", length); - return 0; -} - -float LineLength(float x1, float x2, float y1, float y2) -{ - float result; - float dx = x2-x1; - float dy = y2-y1; - float tol = 1e-10; - if (fabs(dx) < tol && fabs(dy) < tol ) - return -1; - result = sqrt(dx*dx + dy*dy); - return result; -} diff --git a/Lectures/LC14/PointerFunc1/pointer_function_example_1.c b/Lectures/LC14/PointerFunc1/pointer_function_example_1.c deleted file mode 100644 index 7e91ee4..0000000 --- a/Lectures/LC14/PointerFunc1/pointer_function_example_1.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include -#include - -// As we are using the function BEFORE it is actually written we need to provide the -// prototype so that the compiler can verify we are calling it correctly - -void CalculateArea ( double Radius, double *pArea); // note the ‘*’ - -// This is the main code for our application - -int main() -{ - double radius, area; - radius = 1.0; - CalculateArea (radius, &area); - - printf ("The area of circle of radius %f is %f\n", radius, area); - return 0; - -} - - -// And here is our function - -// Note: Pi is written out simply to match the notes, M_PI could also be used - -void CalculateArea ( double Radius, double *pArea ) -{ - *pArea = 3.14159265 * Radius * Radius; - return; -} diff --git a/Lectures/LC14/PointerFunc2/pointer_function_example_2.c b/Lectures/LC14/PointerFunc2/pointer_function_example_2.c deleted file mode 100644 index 856f6a0..0000000 --- a/Lectures/LC14/PointerFunc2/pointer_function_example_2.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include -#include - -// As we are using the function BEFORE it is actually written we need to provide the -// prototype so that the compiler can verify we are calling it correctly - -void CalculateVolumeAndSA ( double Radius, double Length, double *Volume, double *SurfaceArea); // note the ‘*’ - -// This is the main code for our application - -int main() -{ - double radius = 3.4, length = 7.3, volume, SurfaceArea; - - CalculateVolumeAndSA(radius, length, &volume, &SurfaceArea); - - printf("The volume is %f \n", volume); - printf( "The surface area is %f\n", SurfaceArea); - return 0; - -} - - -// And here is our function - -void CalculateVolumeAndSA ( double Radius, double Length, double *Volume, double *SurfaceArea) // note the ‘*’ -{ - *Volume = M_PI * Radius * Radius * Length; - *SurfaceArea = ( 2 * M_PI * Radius * Radius * Length ) +( 2 * M_PI * Radius * Length ); -} diff --git a/Lectures/LC15/PointerToArray/pointer_to_array_examples.c b/Lectures/LC15/PointerToArray/pointer_to_array_examples.c deleted file mode 100644 index 078a657..0000000 --- a/Lectures/LC15/PointerToArray/pointer_to_array_examples.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - -int main(void) // Main : Execution starts here... -{ - // Define variables - pre-populate the array - int MyArray[10] = {12,34,23,11,8,19,6,44,9,16}; - int *pArray = &MyArray[0]; - int i; - - // Direct from the array - printf ("Directly from the array\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n",i,MyArray[i]); - - - // Pointer approach 1 - printf ("Pointer method 1\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, pArray[i] ); - - printf ("Pointer method 1\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, *(pArray+i) ); - - printf ("Pointer method 2 (only works for moving sequentially\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, *pArray++ ); - - - // Exit the application - return 0; -} diff --git a/Lectures/LC15/PointerToArray1/pointer_to_array_1.c b/Lectures/LC15/PointerToArray1/pointer_to_array_1.c deleted file mode 100644 index 944f8b1..0000000 --- a/Lectures/LC15/PointerToArray1/pointer_to_array_1.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -int main(void) // Main : Execution starts here... -{ - // Define variables - pre-populate the array - int MyArray[10] = {12,34,23,11,8,19,6,44,9,16}; - int *pArray = &MyArray[0]; - int i; - - // Direct from the array - printf ("Directly from the array\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n",i,MyArray[i]); - - - // Pointer approach 1 - printf ("Pointer method 1\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, pArray[i] ); - - // Exit the application - return 0; -} diff --git a/Lectures/LC15/PointerToArray2/pointer_to_array_2.c b/Lectures/LC15/PointerToArray2/pointer_to_array_2.c deleted file mode 100644 index 638cd79..0000000 --- a/Lectures/LC15/PointerToArray2/pointer_to_array_2.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -int main(void) // Main : Execution starts here... -{ - // Define variables - pre-populate the array - int MyArray[10] = {12,34,23,11,8,19,6,44,9,16}; - int *pArray = &MyArray[0]; - int i; - - // Direct from the array - printf ("Directly from the array\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n",i,MyArray[i]); - - - // Pointer approach 1 - printf ("Pointer method 1\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, pArray[i] ); - - printf ("Pointer method 2 using index\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, *(pArray+i) ); - - printf ("Pointer method 2 (only works for moving sequentially\n"); - for ( i = 0 ; i < 10 ; i++ ) - printf ("Item %d contains value %d\n", i, *pArray++ ); - - // Exit the application - return 0; -} diff --git a/Lectures/LC16/Dynamic1/Dynamic1.c b/Lectures/LC16/Dynamic1/Dynamic1.c deleted file mode 100644 index bf57a95..0000000 --- a/Lectures/LC16/Dynamic1/Dynamic1.c +++ /dev/null @@ -1,46 +0,0 @@ -/* An example of - - Creating dynamically an array - Populating the array - Displaying the contents - Freeing up the memory - - Example 1 : No sucessful allocation checking - - -*/ - -#include -#include - - -int main(void) -{ - int *ipArray = NULL; /* Create the pointer and set */ - /* to null to start with */ - int iSize = 0; /* Define our 'size' variable */ - - int i; /* A Loop variables */ - - /* Prompt for array size */ - - printf("\nHow big is the array to be ? "); - scanf("%d",&iSize); - - /* Allocate the memory */ - ipArray = (int *)calloc(iSize, sizeof(int)); - - /* Populate the array (Method 1) */ - for ( i = 0 ; i < iSize ; i++ ) - ipArray[i] = iSize - i; - - /* display the data */ - for ( i = 0 ; i < iSize ; i++ ) - printf("Value %d is %d\n",i,ipArray[i] ); - - /* free memory */ - free(ipArray); - - return 0; -} - diff --git a/Lectures/LC16/Dynamic2/Dynamic2.c b/Lectures/LC16/Dynamic2/Dynamic2.c deleted file mode 100644 index 4176c7f..0000000 --- a/Lectures/LC16/Dynamic2/Dynamic2.c +++ /dev/null @@ -1,54 +0,0 @@ -/* An example of - - Creating dynamically an array - Populating the array - Displaying the contents - Freeing up the memory - - Version 2 : Check memory has been assigned - - - -*/ - -#include -#include - - -int main(void) -{ - int *ipArray = NULL; /* Create the pointer and set */ - /* to null to start with */ - int iSize = 0; /* Define our 'size' variable */ - - int i; /* A Loop variables */ - - /* Prompt for array size */ - - printf("\nHow big is the array to be ? "); - scanf("%d",&iSize); - - /* Allocate the memory */ - ipArray = (int *)calloc(iSize, sizeof(int)); - - if ( ipArray == NULL ) - { - printf("\nUnable to allocate the memory requested"); - printf("\n ** Program terminating ** \n"); - exit (1); - } - - /* Populate the array (Method 1) */ - for ( i = 0 ; i < iSize ; i++ ) - ipArray[i] = iSize - i; - - /* display the data */ - for ( i = 0 ; i < iSize ; i++ ) - printf("Value %d is %d\n",i,ipArray[i] ); - - /* free memory */ - free(ipArray); - - return 0; -} - diff --git a/Lectures/LC16/Dynamic3/Dynamic3.c b/Lectures/LC16/Dynamic3/Dynamic3.c deleted file mode 100644 index a745531..0000000 --- a/Lectures/LC16/Dynamic3/Dynamic3.c +++ /dev/null @@ -1,67 +0,0 @@ -/* An example of - - Creating dynamically an array - Populating the array - Displaying the contents - Freeing up the memory - - Version 3 : Read and Write values using pointers - - -*/ - -#include -#include - - -int main(void) -{ - int *ipArray = NULL; /* Create the pointer and set */ - /* to null to start with */ - - int *ipStartValue = NULL; /* A place to store ipArray's */ - /* initial value ,ie ipArray[0] */ - int iSize = 0; /* Define our 'size' variable */ - - int i; /* A Loop variables */ - - /* Prompt for array size */ - - printf("\nHow big is the array to be ? "); - scanf("%d",&iSize); - - /* Allocate the memory */ - ipArray = (int *)calloc(iSize, sizeof(int)); - - if ( ipArray == NULL ) - { - printf("\nUnable to allocate the memory requested"); - printf("\n ** Program terminating ** \n"); - exit (1); - } - - /* Store the base memory address for use later */ - ipStartValue = ipArray; - - /* Populate the array (Method 2 - Use Pointers: This is much faster !) */ - for ( i = 0 ; i < iSize ; i++ ) - *ipArray++ = iSize - i; - - - /* Reset the pointer to the origin of the array */ - ipArray = ipStartValue; - - /* display the data */ - for ( i = 0 ; i < iSize ; i++ ) - printf("Value %d is %d\n",i,*ipArray++ ); - - /* free memory : Again, reset ipArray to its origin */ - - ipArray = ipStartValue; - free(ipArray); - - /* The above two lines could be replaced with free (ipStartValue) */ - - return 0; -} - diff --git a/Lectures/LC17/DynamicFunction/DynamicFunction.c b/Lectures/LC17/DynamicFunction/DynamicFunction.c deleted file mode 100644 index 449c9a5..0000000 --- a/Lectures/LC17/DynamicFunction/DynamicFunction.c +++ /dev/null @@ -1,81 +0,0 @@ -/* An example of - - Creating dynamically an array - Populating the array - Displaying the contents - Freeing up the memory - - Version 4 : Check memory has been assigned - Read and Write values using pointers - Pass array data to a function - - -*/ - -#include -#include - - -int Sum ( int *Data, int n ) /* Define our function */ -{ - int Sum = 0,i; /* Define working variables */ - - for ( i = 0 ; i < n ; i++ ) - { - printf("Item %d=%d\n", i, Data[i]); - Sum += Data[i]; /* This means Sum = Sum + Data[i] */ - } - - - return Sum; /* Return the value */ - -} -int main(void) -{ - int *ipArray = NULL; /* Create the pointer and set */ - /* to null to start with */ - - int *ipStartValue = NULL; /* A place to store ipArray's */ - /* initial value ,ie ipArray[0] */ - int iSize = 0; /* Define our 'size' variable */ - - int i; /* A Loop variables */ - - /* Prompt for array size */ - - printf("\nHow big is the array to be ? "); - scanf("%d",&iSize); - - /* Allocate the memory */ - ipArray = (int *)calloc(iSize, sizeof(int)); - - if ( ipArray == NULL ) - { - printf("\nUnable to allocate the memory requested"); - printf("\n ** Program terminating ** \n"); - exit (1); - } - - /* Store the base memory address for use later */ - ipStartValue = ipArray; - - /* Populate the array ( Use Pointers: This is much faster !) */ - for ( i = 0 ; i < iSize ; i++ ) - *ipArray++ = i; - - // Reset ipArray to start - ipArray = ipStartValue; - /* Display the sum of the values in the array */ - - printf("\nThe sum of the array values is %d ",Sum(ipArray,iSize) ); - - /* free memory : Again, reset ipArray to its origin */ - - ipArray = ipStartValue; - free(ipArray); - - /* The above two lines could be replaced with free (ipStartValue) */ - - return 0; -} - diff --git a/Lectures/LC17/Quadratic_with_Pointers.c b/Lectures/LC17/Quadratic_with_Pointers.c deleted file mode 100644 index 8eb030e..0000000 --- a/Lectures/LC17/Quadratic_with_Pointers.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include - - -// This function will return -// -// 0 if the equation can be solved, -// -1 if it is not a quadratic -// -2 if it is complex - -int SolveQuadratic ( int a, int b, int c, float *x1, float *x2) -{ - int d; - - // If the equations is not a quadratic return -1 - if ( a == 0 ) - return (-1); - - // Calculate the value that will be square rooted - d = (b*b) - (4*a*c); - - // If less than zero then it would be complex - give up! - if ( d < 0 ) - return (-2); - - // If we got to here we are OK to solve things - *x1 = (-b - sqrt(d)) / (2*a); - *x2 = (-b + sqrt(d)) / (2*a); - - // This is are 'OK' return value - return 0; - -} - -int main() -{ - int A,B,C, r; - float X1, X2; - - printf ("Please enter a b & c separated by a space: "); - - scanf("%d %d %d",&A, &B, &C); - - r = SolveQuadratic(A,B,C, &X1, &X2); - - // The value returned lets us know if we have values in X1 and X2 we can use - switch (r) - { - case 0 : - printf ("The solutions are %f and %f", X1, X2 ); - break; - case -1 : - printf ("The equation provided was not a quadratic" ); - break; - case -2 : - printf ("The solutions had complex roots and could not be solved"); - break; - } - return 0; -} diff --git a/Lectures/LC18/EndOfFile/EndOfFile.c b/Lectures/LC18/EndOfFile/EndOfFile.c deleted file mode 100644 index 4051455..0000000 --- a/Lectures/LC18/EndOfFile/EndOfFile.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declate file stream variables - FILE *fInput, *fOutput; - - // Other variables needed - int i,d; - - // Try and open the text "sample.txt" (in the current directory) file for writing - fOutput = fopen ("numbers.txt", "w"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("\nthe file could not be opened for writing, exiting"); - return -1; - } - - // Use a loop to write values to the newly created file - for ( i = 1 ; i <= 10 ; i++) - { - fprintf (fOutput, "%d\n", i); - } - - // And close the file - fclose (fOutput); - - // Try and open the binary "numbers " (in the current directory) file for reading - - fInput = fopen ("numbers.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("\nthe file could not be opened for reading, exiting"); - return -1; - } - - // Read, line by line the 10 values written into variable d - // and then display the contents of d on the screen - while (!feof(fInput)) - { - fscanf (fInput, "%d", &d); - printf ("Value read from file %d\n",d); - } - - // And close the file - fclose (fInput); - - return (0); // Exit indicating success -} diff --git a/Lectures/LC18/EndOfFile/numbers.txt b/Lectures/LC18/EndOfFile/numbers.txt deleted file mode 100644 index f00c965..0000000 --- a/Lectures/LC18/EndOfFile/numbers.txt +++ /dev/null @@ -1,10 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 diff --git a/Lectures/LC18/EndOfFileBreak/EndOfFileBreak.c b/Lectures/LC18/EndOfFileBreak/EndOfFileBreak.c deleted file mode 100644 index 385bf61..0000000 --- a/Lectures/LC18/EndOfFileBreak/EndOfFileBreak.c +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declate file stream variables - FILE *fInput, *fOutput; - - // Other variables needed - int i,d; - - // Try and open the text "sample.txt" (in the current directory) file for writing - fOutput = fopen ("numbers.txt", "w"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("\nthe file could not be opened for writing, exiting"); - return -1; - } - - // Use a loop to write values to the newly created file - for ( i = 1 ; i <= 10 ; i++) - { - fprintf (fOutput, "%d\n", i); - } - - // And close the file - fclose (fOutput); - - // Try and open the binary "numbers " (in the current directory) file for reading - - fInput = fopen ("numbers.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("\nthe file could not be opened for reading, exiting"); - return -1; - } - - // Read, line by line the 10 values written into variable d - // and then display the contents of d on the screen - while (1) - { - fscanf (fInput, "%d", &d); - if ( feof(fInput)) - break; - printf ("Value read from file %d\n",d); - } - - // And close the file - fclose (fInput); - - return (0); // Exit indicating success -} diff --git a/Lectures/LC18/EndOfFileBreak/numbers.txt b/Lectures/LC18/EndOfFileBreak/numbers.txt deleted file mode 100644 index f00c965..0000000 --- a/Lectures/LC18/EndOfFileBreak/numbers.txt +++ /dev/null @@ -1,10 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 diff --git a/Lectures/LC18/EndOfFileScanf/EndOfFileScanf.c b/Lectures/LC18/EndOfFileScanf/EndOfFileScanf.c deleted file mode 100644 index d24b0b6..0000000 --- a/Lectures/LC18/EndOfFileScanf/EndOfFileScanf.c +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include - -// Main () - execution starts here -int main (void) -{ - // Declate file stream variables - FILE *fInput, *fOutput; - - // Other variables needed - int i,d; - - // Try and open the text "sample.txt" (in the current directory) file for writing - fOutput = fopen ("numbers.txt", "w"); - - // Check we were able to open the file - if ( fOutput == NULL) - { - printf ("\nthe file could not be opened for writing, exiting"); - return -1; - } - - // Use a loop to write values to the newly created file - for ( i = 1 ; i <= 10 ; i++) - { - fprintf (fOutput, "%d\n", i); - } - - // And close the file - fclose (fOutput); - - // Try and open the binary "numbers " (in the current directory) file for reading - - fInput = fopen ("numbers.txt", "r"); - - // Check we were able to open the file - if ( fInput == NULL) - { - printf ("\nthe file could not be opened for reading, exiting"); - return -1; - } - - // Read, line by line the 10 values written into variable d - // and then display the contents of d on the screen - while (fscanf (fInput, "%d", &d) != EOF) - { - printf ("Value read from file %d\n",d); - } - - // And close the file - fclose (fInput); - - return (0); // Exit indicating success -} diff --git a/Lectures/LC18/EndOfFileScanf/numbers.txt b/Lectures/LC18/EndOfFileScanf/numbers.txt deleted file mode 100644 index f00c965..0000000 --- a/Lectures/LC18/EndOfFileScanf/numbers.txt +++ /dev/null @@ -1,10 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 diff --git a/Lectures/LC18/FileMove/data.dat b/Lectures/LC18/FileMove/data.dat deleted file mode 100644 index a7a19b2851848a743fa87e7b01ccebeeaa5f2142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 lcmXpu-tEZ9z`(!+#LPg<0>rF9%m&2lK+FNeoIuP4!~i}B0h#~+ diff --git a/Lectures/LC18/FileMove/filemove.c b/Lectures/LC18/FileMove/filemove.c deleted file mode 100644 index 3cb4589..0000000 --- a/Lectures/LC18/FileMove/filemove.c +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include - -/* Example 3 - jumping & getting element count */ - -int main(void) -{ - - int ValRead; - int Item; - int Locn; - FILE *fptr; - /* Open the file from example 1 */ - - fptr = fopen ("data.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* Ask the user which value to jump to */ - printf ("\nWhich value do you wish to view ? "); - scanf ("%d",&Item); - - /* Jump to this item */ - /* notice we move in steps of item size */ - - Locn = Item * sizeof(int); - fseek (fptr, Locn, SEEK_SET); - - /* And read a single integer in */ - if (fread (&ValRead, sizeof(int), 1, fptr ) == 1) - { - /* Display the read value */ - printf ("Item %d is %d\n",Item,ValRead); - } - else - printf("Failed to read at location %d\n", Item); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; - -} - \ No newline at end of file diff --git a/Lectures/LC18/FileSize/data.dat b/Lectures/LC18/FileSize/data.dat deleted file mode 100644 index a7a19b2851848a743fa87e7b01ccebeeaa5f2142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 lcmXpu-tEZ9z`(!+#LPg<0>rF9%m&2lK+FNeoIuP4!~i}B0h#~+ diff --git a/Lectures/LC18/FileSize/filesize.c b/Lectures/LC18/FileSize/filesize.c deleted file mode 100644 index c5d9771..0000000 --- a/Lectures/LC18/FileSize/filesize.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -/* Example 3 - jumping & getting element count */ - -int main() -{ - - long FileBytes; - FILE *fptr; - /* Open the file from example 1 */ - - fptr = fopen ("data.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* Move to the end of file */ - fseek (fptr, 0, SEEK_END); - - /* Get the byte size */ - FileBytes = ftell(fptr); - - /* Convert to size based on fact all int's */ - FileBytes = FileBytes / sizeof(int); - - /* Display the read value */ - printf ("No. of items in file is %ld\n",FileBytes); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; -} - \ No newline at end of file diff --git a/Lectures/LC19/ConstHashDefine/ConstHashDefine.c b/Lectures/LC19/ConstHashDefine/ConstHashDefine.c deleted file mode 100644 index 51736a4..0000000 --- a/Lectures/LC19/ConstHashDefine/ConstHashDefine.c +++ /dev/null @@ -1,33 +0,0 @@ -#include - -//macro definition -#define X 30 - -//global integer constant -const int Y = 10; - -void func(); - -int main() -{ - //local integer constant` - const int Z = 20; - - printf("Value of X: %d\n", X); - printf("Value of Y: %d\n", Y); - printf("Value of Z: %d\n", Z); - - func(); - - //Y = 30; - Z = 40; - - return 0; -} - -void func() -{ - int Z = 40; - printf("Value of Z in function = %d\n", Z); - //Y = 30; -} diff --git a/Lectures/LC19/Enum/enum.c b/Lectures/LC19/Enum/enum.c deleted file mode 100644 index 9ed292f..0000000 --- a/Lectures/LC19/Enum/enum.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -int main(void) -{ - - /* Set up our enumerated type */ - enum Days { Mon, Tue, Wed, Thu, Fri, Sat, Sun }; - - /* If we wish, we can set the base level */ - //enum Days { Mon = 1 , Tue, Wed, Thu, Fri, Sat, Sun }; - - /* Create a variable that can take values of this type */ - enum Days DOW; - - /* Set variable equal to one of these days */ - DOW = Sun; - - /* And print the assigned value */ - printf ("\nThe value assigned to Sun is %d ",DOW); - - - return 0; -} \ No newline at end of file diff --git a/Lectures/LC19/FileHeader/file_header.c b/Lectures/LC19/FileHeader/file_header.c deleted file mode 100644 index 83c1b54..0000000 --- a/Lectures/LC19/FileHeader/file_header.c +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include - -struct MyStruct -{ - int NoItems; - int max; - float average; -}; - -int main() -{ - - struct MyStruct MyRecord; - FILE *fptr; - - int ArrayData[100]; - int items = 0; - int sum = 0; - int i; - - - - /* Write this file to disk - binary format, usual error checking */ - fptr = fopen ("strdata.dat","wb"); - if ( fptr == NULL ) - { - printf ("\nError creating file - aborting "); - exit (0); - } - - /* Pop some dummy data into our structure */ - MyRecord.NoItems = 0; - MyRecord.max = 0; ; - MyRecord.average = 0; - - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* Populate the array */ - for ( i = 0 ; i < 100 ; i++) - { - ArrayData[i] = i; - if ( ArrayData [i] > MyRecord.max) - MyRecord.max = ArrayData[i]; - sum = sum + ArrayData[i]; - items++; - } - - - /* This line does the writing of the Array */ - fwrite ( &ArrayData[0], sizeof(int),100, fptr); - - - /* Update the values in the structure */ - MyRecord.NoItems = items; - MyRecord.average = (float)sum / (float)items; - - /* rewind the file to write the structure again */ - fseek(fptr, SEEK_SET, 0); - //rewind (fptr); // This is an alternative to the previous line - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* And close */ - fclose (fptr); - -/* To read the data we would use */ - - fptr = fopen ("strdata.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* This line does the reading */ - fread ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - printf ("No. items in the file = %d", MyRecord.NoItems); - printf ("Maximum = %d", MyRecord.max); - printf ("Average is = %.2f", MyRecord.average); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; -} diff --git a/Lectures/LC19/FileHeader/strdata.dat b/Lectures/LC19/FileHeader/strdata.dat deleted file mode 100644 index 68cf19d2ef7dd3b1bafdfa553b76bd283bd866a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmWmARYC$#006;f7pT~cg#mV=SSVt5q8NbpKZC=^>;d*Kgis-b{BgB4)KW)14K&h3 zGcB~zMuaHsbkIqRF1qQVmp=L#V2~k(8DW$$;*2xFBvVY2V1`-dm?ue!1r}LinH5%9 zW1S5)*TyV)1*W7T+9rrx&$P>@J@X8zS6!_qi OB42#-!!ISuRQLx%J`|<^ diff --git a/Lectures/LC19/FileHeaderMove/file_header_move.c b/Lectures/LC19/FileHeaderMove/file_header_move.c deleted file mode 100644 index fb0ef03..0000000 --- a/Lectures/LC19/FileHeaderMove/file_header_move.c +++ /dev/null @@ -1,99 +0,0 @@ -#include -#include - -struct MyStruct -{ - int NoItems; - int max; - float average; -}; - -int main() -{ - - struct MyStruct MyRecord; - FILE *fptr; - - int ArrayData[100]; - int items = 0; - int sum = 0; - int i; - int AValue; - - - - /* Write this file to disk - binary format, usual error checking */ - fptr = fopen ("strdata.dat","wb"); - if ( fptr == NULL ) - { - printf ("\nError creating file - aborting "); - exit (0); - } - - /* Pop some dummy data into our structure */ - MyRecord.NoItems = 0; - MyRecord.max = 0; ; - MyRecord.average = 0; - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* Populate the array */ - for ( i = 0 ; i < 100 ; i++) - { - ArrayData[i] = i; - if ( ArrayData [i] > MyRecord.max) - MyRecord.max = ArrayData[i]; - sum = sum + ArrayData[i]; - items++; - } - - - /* This line does the writing of the Array */ - fwrite ( &ArrayData[0], sizeof(int),100, fptr); - - /* Update the values in the structure */ - MyRecord.NoItems = items; - MyRecord.average= (float)sum / (float)items; - - /* rewind the file to write the structure again */ - fseek(fptr, SEEK_SET, 0); - rewind (fptr); - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* And close */ - fclose (fptr); - -/* To read the data we would use */ - - fptr = fopen ("strdata.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* This line does the reading */ - fread ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - printf ("No. items in the file = %d\n", MyRecord.NoItems); - printf ("Maximum = %d\n", MyRecord.max); - printf ("Average is = %.2f\n", MyRecord.average); - - // Get how far to move for thr 10th item - long Posn = sizeof (struct MyStruct) + (9 * sizeof(int)); - - // Move - fseek(fptr, Posn, SEEK_SET); - - // Read value - fread ( &AValue, sizeof(int),1 , fptr); - printf ("The 10th value is %d", AValue); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; -} diff --git a/Lectures/LC19/FileHeaderMove/strdata.dat b/Lectures/LC19/FileHeaderMove/strdata.dat deleted file mode 100644 index 68cf19d2ef7dd3b1bafdfa553b76bd283bd866a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmWmARYC$#006;f7pT~cg#mV=SSVt5q8NbpKZC=^>;d*Kgis-b{BgB4)KW)14K&h3 zGcB~zMuaHsbkIqRF1qQVmp=L#V2~k(8DW$$;*2xFBvVY2V1`-dm?ue!1r}LinH5%9 zW1S5)*TyV)1*W7T+9rrx&$P>@J@X8zS6!_qi OB42#-!!ISuRQLx%J`|<^ diff --git a/Lectures/LC19/Static/Static.c b/Lectures/LC19/Static/Static.c deleted file mode 100644 index c4cc180..0000000 --- a/Lectures/LC19/Static/Static.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - Static variables - a variable that is created when a function is first - called and remains until the program terminates - - This is to say that in future calls to the function it is not redefined - and can take the value it last had in the function. - - This should hopefully show this ! -*/ - -#include -#include - -void NonStaticFunction(void) -{ - int i =0 ; /* This is issued EVERY time the function is called */ - i = i + 1; - printf ("\nIn Non static function, the value of i is %d ",i); - return; -} - -void StaticFunction(void) -{ - static int i =0 ; /* This is issued THE FIRST TIME, - AND ONLY THE FIRST TIME - that the function is called */ - i = i + 1; - printf ("\nIn *static* function, the value of i is %d ",i); - return; -} - - -int main(void) -{ - - int i; - for ( i = 0 ; i < 10 ; i++ ) - { - NonStaticFunction(); - StaticFunction(); - } - - return 0; -} - \ No newline at end of file diff --git a/Lectures/LC19/Structure1/Structure_1.c b/Lectures/LC19/Structure1/Structure_1.c deleted file mode 100644 index b8b91a0..0000000 --- a/Lectures/LC19/Structure1/Structure_1.c +++ /dev/null @@ -1,27 +0,0 @@ - -#include -#include - -struct DataSet /* Define a struture called DataSet */ -{ - int x; /* The X data */ - int y; /* The Y data */ -}; - - -int main(void) -{ - - struct DataSet MyPoints; /* Define structure, type DataSet */ - - MyPoints.x = 1; - MyPoints.y = 2; - - printf("\nThe dataset values are "); - printf("\n\t\t X = %d ",MyPoints.x); - printf("\n\t\t Y = %d ",MyPoints.y); - - - - return 0; -} \ No newline at end of file diff --git a/Lectures/LC19/Structure2/Structure_2.c b/Lectures/LC19/Structure2/Structure_2.c deleted file mode 100644 index 50d45e5..0000000 --- a/Lectures/LC19/Structure2/Structure_2.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include - -struct DataSet /* Define a struture called DataSet */ -{ - int x; /* The X data */ - int y; /* The Y data */ -}; - - -int main(void) -{ - - struct DataSet MyPoints[5]; /* Define array of structure, */ - /* type DataSet */ - /* Elements : 5 */ - - int i; /* Define an integer */ - - - - for ( i = 0 ; i < 5 ; i++ ) /* Populate structure */ - { - MyPoints[i].x = i; - MyPoints[i].y = i*i; - } - - printf("\nThe dataset values are "); /* Display message & Values */ - - for ( i = 0 ; i < 5 ; i++ ) - { - printf("\n\t Set %d : ",i); - printf("\t X = %d ",MyPoints[i].x); - printf("\t Y = %d ",MyPoints[i].y); - } - - - return 0; -} \ No newline at end of file diff --git a/Lectures/LC19/Structure3/Structure_3.c b/Lectures/LC19/Structure3/Structure_3.c deleted file mode 100644 index 13ae5e8..0000000 --- a/Lectures/LC19/Structure3/Structure_3.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include - -struct DataSet /* Define a struture called DataSet */ -{ - int x; /* The X data */ - int y; /* The Y data */ -}; - - -int main(void) -{ - - struct DataSet MyPoints[5]; /* Define array of structure, */ - /* type DataSet */ - /* Elements : 10 */ - - struct DataSet CpPoints[5]; /* Define array of structure, */ - /* type DataSet */ - /* Elements : 10 */ - - int i; /* Define an integer */ - - - - for ( i = 0 ; i < 5 ; i++ ) /* Populate structure */ - { - MyPoints[i].x = i; - MyPoints[i].y = i*i; - } - - printf("\nThe dataset values are "); /* Display message & Values */ - - for ( i = 0 ; i < 5 ; i++ ) - { - printf("\n\t Set %d : ",i); - printf("\t X = %d ",MyPoints[i].x); - printf("\t Y = %d ",MyPoints[i].y); - } - - /* Make a copy of the data */ - - for ( i = 0 ; i < 5 ; i++ ) - CpPoints[i] = MyPoints[i]; - - - /* And print it out again */ - - printf("\nThe copied dataset values are "); /* Display message & Values */ - - for ( i = 0 ; i < 5 ; i++ ) - { - printf("\n\t Set %d : ",i); - printf("\t X = %d ",CpPoints[i].x); - printf("\t Y = %d ",CpPoints[i].y); - } - - return 0; -} \ No newline at end of file diff --git a/Lectures/LC19/StructureFunction/StructureFunc.c b/Lectures/LC19/StructureFunction/StructureFunc.c deleted file mode 100644 index 2ab3ac4..0000000 --- a/Lectures/LC19/StructureFunction/StructureFunc.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - -struct Point /* Define a struture called Point */ -{ - int x; /* The X data */ - int y; /* The Y data */ -}; - -struct Line -{ - struct Point p1; - struct Point p2; - float length; -}; - -void LineLength( struct Line* line); - -int main() -{ - struct Line line; - line.p1.x = 0; - line.p1.y = 0; - line.p2.x = 3; - line.p2.y = 4; - - LineLength( &line ); - printf( "Line length = %.3f\n", line.length); -} - -void LineLength( struct Line* line) -{ - float dx = line->p2.x - line->p1.x; - float dy = line->p2.y - line->p1.y; - line->length = sqrt( dx*dx + dy*dy ); -} \ No newline at end of file diff --git a/Lectures/LC19/WriteHeaderArrayAndUpdate.c b/Lectures/LC19/WriteHeaderArrayAndUpdate.c deleted file mode 100644 index 074828f..0000000 --- a/Lectures/LC19/WriteHeaderArrayAndUpdate.c +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include - -struct MyStruct -{ - int NoItems; - int max; - float average; -}; - -int main() -{ - - struct MyStruct MyRecord; - FILE *fptr; - - int ArrayData[100]; - int items = 0; - int sum = 0; - int i; - - - - /* Write this file to disk - binary format, usual error checking */ - fptr = fopen ("strdata.dat","wb"); - if ( fptr == NULL ) - { - printf ("\nError creating file - aborting "); - exit (0); - } - - /* Pop some dummy data into our structure */ - MyRecord.NoItems = 0; - MyRecord.max = 0; ; - MyRecord.average = 0; - - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* Populate the array */ - for ( i = 0 ; i < 100 ; i++) - { - ArrayData[i] = i; - if ( ArrayData [i] > MyRecord.max) - MyRecord.max = ArrayData[i]; - sum = sum + ArrayData[i]; - items++; - } - - - /* This line does the writing of the Array */ - fwrite ( &ArrayData[0], sizeof(int),100, fptr); - - - /* Update the values in the structure */ - MyRecord.NoItems = items; - MyRecord.NoItems = (float)sum / (float)items; - - /* rewind the file to write the structure again */ - fseek(fptr, SEEK_SET, 0); - rewind (fptr); - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* And close */ - fclose (fptr); - -/* To read the data we would use */ - - fptr = fopen ("strdata.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* This line does the reading */ - fread ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - printf ("No. items in the file = %d", MyRecord.NoItems); - printf ("Maximum = %d", MyRecord.max); - printf ("Average is = %.2f", MyRecord.average); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; -} diff --git a/Lectures/LC19/WriteHeaderArrayAndUpdateAndSeek.c b/Lectures/LC19/WriteHeaderArrayAndUpdateAndSeek.c deleted file mode 100644 index fb0ef03..0000000 --- a/Lectures/LC19/WriteHeaderArrayAndUpdateAndSeek.c +++ /dev/null @@ -1,99 +0,0 @@ -#include -#include - -struct MyStruct -{ - int NoItems; - int max; - float average; -}; - -int main() -{ - - struct MyStruct MyRecord; - FILE *fptr; - - int ArrayData[100]; - int items = 0; - int sum = 0; - int i; - int AValue; - - - - /* Write this file to disk - binary format, usual error checking */ - fptr = fopen ("strdata.dat","wb"); - if ( fptr == NULL ) - { - printf ("\nError creating file - aborting "); - exit (0); - } - - /* Pop some dummy data into our structure */ - MyRecord.NoItems = 0; - MyRecord.max = 0; ; - MyRecord.average = 0; - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* Populate the array */ - for ( i = 0 ; i < 100 ; i++) - { - ArrayData[i] = i; - if ( ArrayData [i] > MyRecord.max) - MyRecord.max = ArrayData[i]; - sum = sum + ArrayData[i]; - items++; - } - - - /* This line does the writing of the Array */ - fwrite ( &ArrayData[0], sizeof(int),100, fptr); - - /* Update the values in the structure */ - MyRecord.NoItems = items; - MyRecord.average= (float)sum / (float)items; - - /* rewind the file to write the structure again */ - fseek(fptr, SEEK_SET, 0); - rewind (fptr); - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - /* And close */ - fclose (fptr); - -/* To read the data we would use */ - - fptr = fopen ("strdata.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* This line does the reading */ - fread ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - printf ("No. items in the file = %d\n", MyRecord.NoItems); - printf ("Maximum = %d\n", MyRecord.max); - printf ("Average is = %.2f\n", MyRecord.average); - - // Get how far to move for thr 10th item - long Posn = sizeof (struct MyStruct) + (9 * sizeof(int)); - - // Move - fseek(fptr, Posn, SEEK_SET); - - // Read value - fread ( &AValue, sizeof(int),1 , fptr); - printf ("The 10th value is %d", AValue); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; -} diff --git a/Lectures/LC19/WriteHeaderWithArray.c b/Lectures/LC19/WriteHeaderWithArray.c deleted file mode 100644 index 4724d3f..0000000 --- a/Lectures/LC19/WriteHeaderWithArray.c +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include - -struct MyStruct -{ - int NoItems; - int max; - float average; -}; - -int main() -{ - - struct MyStruct MyRecord; - FILE *fptr; - - int ArrayData[100]; - int items = 0; - int sum = 0; - int i; - - - - /* Write this file to disk - binary format, usual error checking */ - fptr = fopen ("strdata.dat","wb"); - if ( fptr == NULL ) - { - printf ("\nError creating file - aborting "); - exit (0); - } - - /* Populate the array & set header values*/ - for ( i = 0 ; i < 100 ; i++) - { - ArrayData[i] = i; - if ( ArrayData [i] > MyRecord.max) - MyRecord.max = ArrayData[i]; - sum = sum + ArrayData[i]; - items++; - } - - /* Update the values in the structure */ - MyRecord.NoItems = items; - MyRecord.NoItems = (float)sum / (float)items; - - /* This line does the writing of the structure */ - fwrite ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - - - /* This line does the writing of the Array */ - fwrite ( &ArrayData[0], sizeof(int),100, fptr); - - - /* And close */ - fclose (fptr); - - /* To read the data we would use */ - - fptr = fopen ("strdata.dat","rb"); - if ( fptr == NULL ) - { - printf ("\nError opening input file - aborting "); - exit (0); - } - - /* This line does the reading */ - fread ( &MyRecord, sizeof(struct MyStruct), 1, fptr); - printf ("No. items in the file = %d", MyRecord.NoItems); - printf ("Maximum = %d", MyRecord.max); - printf ("Average is = %.2f", MyRecord.average); - - /* And close */ - fclose (fptr); - - /* All Done */ - return 0; -} diff --git a/Lectures/LC19/enumdefine.c b/Lectures/LC19/enumdefine.c deleted file mode 100644 index 84a41e7..0000000 --- a/Lectures/LC19/enumdefine.c +++ /dev/null @@ -1,41 +0,0 @@ -/* This program shows the use of an 'enum' statements to make code - more general. This is an 'OK' method but realise that it does - mean that we need to recompile if we change a vlaue. - - This method is best used only for fixed constants (eg PI ) - - While this version acts the same as the previous, it is better - as the compiler handles the 'enum'. Whereas the pre-processor - deals with #defines (performing simple substitutions) this is done - no with little error checking, the 'enum' is dealt with by the - compiler which finds error more easily - hence more stable code. - -*/ - -#include -#include - -enum ProblemSize { SIZE = 3 }; /* 'ProblemSize' is optional - but a warning is generated is - it not specified */ - - -int main(void) -{ - int i,j; - int iMatrix[SIZE][SIZE]; - int iCols = SIZE; - int iRows = SIZE; - - for (i = 0 ; i < iCols ; i++ ) - { - for (j = 0 ; j < iRows ; j++ ) - { - iMatrix[i][j] = i+j; - printf ("%2d ",iMatrix[i][j]); - } - printf ("\n"); - } - - return 0; -} \ No newline at end of file diff --git a/Lectures/LC19/swap.c b/Lectures/LC19/swap.c deleted file mode 100644 index eb2fb4a..0000000 --- a/Lectures/LC19/swap.c +++ /dev/null @@ -1,72 +0,0 @@ -#include -#include - -union number -{ - double d; - float f; - long l; - int i; - unsigned short s; - unsigned char c[8]; -}; - -int main(void) -{ - /* Define variables and a union */ - int my_i; - short my_s; - unsigned char tc; - union number mynum; - - /* Prompt for use input ao a number whose bytes we are to swap */ - printf ("\nPlease enter a number "); - scanf("%hi",&my_s); // hi is the format for a signed short - - /* pop this number into our union */ - mynum.s = my_s; - - /* Show the present byte order */ - printf ("\nThe bytes making up your number %hi are ",my_s); - printf ("%d %d %d %d %d %d %d %d ",mynum.c[0],mynum.c[1],mynum.c[2],mynum.c[3],mynum.c[4],mynum.c[5],mynum.c[6],mynum.c[7]); - - /* We now swap the two lowest bytes (via an intermediate variable) */ - tc = mynum.c[1]; - mynum.c[1] = mynum.c[0]; - mynum.c[0] = tc; - - printf ("\nThe bytes making up your number are now "); - printf ("%d %d %d %d %d %d %d %d ",mynum.c[0],mynum.c[1],mynum.c[2],mynum.c[3],mynum.c[4],mynum.c[5],mynum.c[6],mynum.c[7]); - - printf ("\nWhich corresponds to %d ",mynum.s); - - // Repeat for an integer - /* Prompt for use input ao a number whose bytes we are to swap */ - printf ("\nPlease enter a number [INTEGER] "); - scanf("%d",&my_i); - - /* pop this number into our union */ - mynum.i = my_i; - - /* Show the present byte order */ - printf ("\nThe bytes making up your number %d are ",my_i); - printf ("%d %d %d %d %d %d %d %d ",mynum.c[0],mynum.c[1],mynum.c[2],mynum.c[3],mynum.c[4],mynum.c[5],mynum.c[6],mynum.c[7]); - - /* We now swap the 1st and 4th bytes (via an intermediate variable) */ - tc = mynum.c[3]; - mynum.c[3] = mynum.c[0]; - mynum.c[0] = tc; - - /* We now swap the 1st and 4th bytes (via an intermediate variable) */ - tc = mynum.c[2]; - mynum.c[2] = mynum.c[1]; - mynum.c[1] = tc; - - printf ("\nThe bytes making up your number are now "); - printf ("%d %d %d %d %d %d %d %d ",mynum.c[0],mynum.c[1],mynum.c[2],mynum.c[3],mynum.c[4],mynum.c[5],mynum.c[6],mynum.c[7]); - - printf ("\nWhich corresponds to %d ",mynum.i); - - return 0; - -} diff --git a/Lectures/LC19/union.c b/Lectures/LC19/union.c deleted file mode 100644 index cc0fe09..0000000 --- a/Lectures/LC19/union.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -union number{ - double d; - float f; - long l; - int i; - short s; - unsigned char c[8]; -}; - -int main(void) -{ - int my_i; - union number mynum; - printf ("\nPlease enter a number "); - scanf("%d",&my_i); - printf ("\nThe bytes making up your number %d are ",my_i); - - mynum.i = my_i; - printf ("%d %d %d %d %d %d %d %d ",mynum.c[0],mynum.c[1],mynum.c[2],mynum.c[3],mynum.c[4],mynum.c[5],mynum.c[6],mynum.c[7]); - - printf ("\nSize of double id %d ",sizeof(double)); - printf ("\nSize of float id %d ",sizeof(float)); - printf ("\nSize of long id %d ",sizeof(long)); - printf ("\nSize of int id %d ",sizeof(int)); - printf ("\nSize of short id %d ",sizeof(short)); - return 0; - -} \ No newline at end of file diff --git a/Lectures/LC20/AreaFunc.c b/Lectures/LC20/AreaFunc.c deleted file mode 100644 index 3e5b3c9..0000000 --- a/Lectures/LC20/AreaFunc.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - - -float CalculateAreaOfCircle ( float radius ) -{ - float area; - area = M_PI * radius * radius ; - return (area) ; -} - -float CalculateSurfaceAreaOfCylinder ( float radius, float length ) -{ - float area; - area = 2.0 * ( M_PI * radius * radius ) + ( M_PI * 2.0 * radius * length ); // two ends + side - return (area) ; -} \ No newline at end of file diff --git a/Lectures/LC20/AreaFunc.h b/Lectures/LC20/AreaFunc.h deleted file mode 100644 index 8f4ce63..0000000 --- a/Lectures/LC20/AreaFunc.h +++ /dev/null @@ -1,2 +0,0 @@ -float CalculateAreaOfCircle ( float radius ); -float CalculateSurfaceAreaOfCylinder ( float radius, float length ); \ No newline at end of file diff --git a/Lectures/LC20/Main.c b/Lectures/LC20/Main.c deleted file mode 100644 index 27cbebb..0000000 --- a/Lectures/LC20/Main.c +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include - -#include"AreaFunc.h" - -/* Show use of function */ -int main (void) -{ - // Declare variables - no need to initialise as values will be read in / calculated - float rad, len, Area, SurfaceArea; - - // Prompt for and obtain value - printf ("Please enter the raduis of the circle: "); - scanf ("%f", &rad); - - printf ("Please enter the length of the cylinder: "); - scanf ("%f", &len); - - // Calculate the area of the circle - Area = CalculateAreaOfCircle(rad); - - // And display the answer on the screen - printf ("The area of a circle of radius %f is %f\n", rad, Area ); - - // Calculate the surface area of the cylinder - SurfaceArea = CalculateSurfaceAreaOfCylinder(rad, len); - - // And display the answer on the screen - printf ("The surface area of a cylinder of radius %f and length %f is %f\n", rad, len, SurfaceArea ); - - // All done - return 0; -} - diff --git a/Lectures/LC21/Cond/cond.c b/Lectures/LC21/Cond/cond.c deleted file mode 100644 index d3409f3..0000000 --- a/Lectures/LC21/Cond/cond.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -/* We define one thing - we need not give it a value, but we can */ -#define BUILD1 - -int main(void) -{ - - - printf ("\nThis code is common to all "); - -/* We check for the existance ob 'BUILD1' and act accordingly */ - -#ifdef BUILD1 - - printf ("\nWe had BUILD1 defined "); - -#else - - printf ("\nBUILD1 was not defined "); - -#endif - -/* Can can see if somthing was not defined too */ - -#ifndef BUILD2 - - printf ("\nBUILD2 was *NOT* defined "); - -#endif - - printf ("\n\n"); - - return 0; - -} diff --git a/Lectures/LC21/GetThem/getthem.c b/Lectures/LC21/GetThem/getthem.c deleted file mode 100644 index abd4026..0000000 --- a/Lectures/LC21/GetThem/getthem.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -int main(int argc, char *argv[]) -{ - int age; - char name[10]; - - /* we check the argument count is 3 ( prog name plus 2 params ) */ - if ( argc != 3 ) - { - printf ("\nProgram use %s name age ",argv[0]); - exit (0); - } - - /* Copy the command parameters into suitable variables */ - sscanf(argv[1],"%s",name); - sscanf(argv[2],"%d",&age); - - /* And display for all to see */ - printf ("\nHello %s, you are %d ",name,age); - - return 0; -} diff --git a/Lectures/LC21/Simple/simple.c b/Lectures/LC21/Simple/simple.c deleted file mode 100644 index 7c013bb..0000000 --- a/Lectures/LC21/Simple/simple.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -/* Note the new type of main */ - -int main(int argc, char *argv[]) -{ - int x; - - /* Print the argument count */ - printf("Arguments -> %d\n",argc); - - /* And the arguments themselves */ - for (x=0; x -#include -#include - -int main(void) -{ - char buffer[100]; - int age=6; - char name[6]; - - /* This command copies "James" into the character array 'Name' */ - - strcpy(name,"James"); - - /* Print to the string (rather than screen) */ - - sprintf(buffer,"Name: %s, Age %d ",name,age); - - /* And output the string created */ - printf("\n->%s\n",buffer); - - return 0; -} diff --git a/Lectures/LC21/use.c b/Lectures/LC21/use.c deleted file mode 100644 index e127221..0000000 --- a/Lectures/LC21/use.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -#define BUILD1 23 - -int main(void) -{ - - int MyValue = 0; - - printf ("\nThis code is common to all "); - -#ifdef BUILD1 - - printf ("\nWe had BUILD1 defined, will adjust value accordingly "); - MyValue = BUILD1; - -#else - - printf ("\nBUILD1 was not defined, leaving MyValue alone "); - -#endif - - printf ("\nThe value in MyValue is %d ",MyValue); - printf ("\n\n"); - - return 0; - -} diff --git a/Lectures/LC4/hello_world.c b/Lectures/LC4/hello_world.c deleted file mode 100644 index d089699..0000000 --- a/Lectures/LC4/hello_world.c +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include - -int main( void ) -{ - /* My first program in C */ - printf ("Hello World \n"); - return 0; // Return from prog -} diff --git a/Lectures/LC4/hello_world.exe b/Lectures/LC4/hello_world.exe deleted file mode 100644 index 35f237eb56ddef2cf2b2b45377458e2e3527c75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256808 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 -#include -int main(void) -{ - int a,b,c,sum; /* Define variables */ - a = 1; /* Assign values */ - b = 2; - c = 3; - sum = a + b + c ; /* Calculate sum & Display */ - - printf ("\nThe sum of %d + %d + %d is %d \n", a, b, c, sum); - - return 0; /* Return from prog */ -} diff --git a/Lectures/LC7/FgetsString/fgets_string.c b/Lectures/LC7/FgetsString/fgets_string.c deleted file mode 100644 index 677f8c0..0000000 --- a/Lectures/LC7/FgetsString/fgets_string.c +++ /dev/null @@ -1,22 +0,0 @@ -/* EEEE1001/H61CAE*/ - -/* A program to show how to use fgets to safely read in a string */ - -#include -#include - -int main() -{ - - char MyName[11]; /* Define a string of 10 characters */ - - - /* A string */ - - printf("\nPlease enter your name & press return "); - fgets(MyName, 11, stdin); - printf("\nHello %s ",MyName); - - return 0; /* End of the program */ - -} diff --git a/Lectures/LC7/Getch/getch.c b/Lectures/LC7/Getch/getch.c deleted file mode 100644 index d92a07f..0000000 --- a/Lectures/LC7/Getch/getch.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - Chapter 7: example of getch - - This program reads a single keystroke and displays it - on the screen - -*/ - -#include /* Standard include files */ -#include -#include - -int main(void) -{ - - char x; /* Define a variable of type char */ - - printf("Input a character: "); - x = getch(); /* Use getchar to read a keypress and store the */ - /* result in 'x' */ - printf("\nDisplaying the char with putchar: "); - putchar(x); /* Display the character stored in 'x' on the */ - /* screen using putchar */ - - - return 0; - -} diff --git a/Lectures/LC7/GetsString/gets_string.c b/Lectures/LC7/GetsString/gets_string.c deleted file mode 100644 index c4f15a8..0000000 --- a/Lectures/LC7/GetsString/gets_string.c +++ /dev/null @@ -1,22 +0,0 @@ -/* EEEE1001/H61CAE - Chapter 7 */ - -/* A program to show how to use gets to read a string (that can include spaces) */ - -#include -#include - -int main( void ) -{ - - char MyName[10]; /* Define a string of 10 characters */ - - - /* A string */ - - printf("\nPlease enter your name & press return "); - gets(MyName); - printf("\nHello %s ",MyName); - - return 0; /* End of the program */ - -} diff --git a/Lectures/LC7/ScanfString/scanf_string.c b/Lectures/LC7/ScanfString/scanf_string.c deleted file mode 100644 index 12874b5..0000000 --- a/Lectures/LC7/ScanfString/scanf_string.c +++ /dev/null @@ -1,23 +0,0 @@ -/* EEEE1001/H61CAE - Chapter 7 */ - -#include -#include - - -int main(void) -{ - - char MyName[50]; /* Define a string of 50 characters */ - - - /* Prompt for and read in a string */ - printf("\nPlease enter your name & press return "); - scanf("%s",MyName); - - /* Display fixed text and string on the screen */ - printf("\nHello %s ",MyName); - - - return 0; /* End of the program */ - -} diff --git a/Lectures/LC7/getchar.c b/Lectures/LC7/getchar.c deleted file mode 100644 index 9826d10..0000000 --- a/Lectures/LC7/getchar.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - Chapter 7: example of getchar - - This program reads a single keystroke and displays it - on the screen - -*/ - -#include /* Standard include files */ -#include - - -int main(void) -{ - - char x; /* Define a variable of type char */ - - x = getchar(); /* Use getchar to read a keypress and store the */ - /* result in 'x' */ - - putchar(x); /* Display the character stored in 'x' on the */ - /* screen using putchar */ - - - return 0; - -} diff --git a/Lectures/LC7/scanf_examples.c b/Lectures/LC7/scanf_examples.c deleted file mode 100644 index 9e676cc..0000000 --- a/Lectures/LC7/scanf_examples.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Chapter 7 : Examples of using scanf */ - -/* A program to show how to use scanf to read various types of values (float/integer)*/ - -#include -#include - - -int main( void ) -{ - - int v1; /* An integer */ - float fv; /* A float */ - - - /* Reading an integer */ - printf("\nPlease enter an integer and press return "); - scanf("%d",&v1); - printf("\nThe value you entered was %d ",v1); - - /* Reading a floating point number */ - printf("\nPlease enter a floating point number & press return "); - scanf("%f",&fv); - printf("\nThe value you typed in was %f ",fv); - - - /* Reading all three in one go */ - printf("\nPlease enter your age and salary\n"); - scanf("%d %f", &v1, &fv); - - printf("\nYou are %d years old ",v1); - printf("\nAnd earn %f per year ",fv); - - return 0; /* End of the program */ - -} diff --git a/Lectures/LC8/ComplexIf/complex_if.c b/Lectures/LC8/ComplexIf/complex_if.c deleted file mode 100644 index 8839daa..0000000 --- a/Lectures/LC8/ComplexIf/complex_if.c +++ /dev/null @@ -1,35 +0,0 @@ -/* MMME3085 Chapter 8 */ - -/* Example of a simple if statements */ - - -#include /* Standard include files */ -#include -#include - - -int main( void ) -{ - - int a = 1, b = 6; // Define and intialise variables - - - if ( (a == 1 ) && ( b == 6 ) ) - { - printf("a is 1 AND b is 6\n" ); - } - - if ( (a == 1 ) || ( b == 99 ) ) - { - printf("a is 1 OR b is 99\n" ); - } - - if (( b < a ) || ( a == 7 ) ) - { - printf ("The value of b is less than a OR a is 7\n"); - } - - - return 0; - -} diff --git a/Lectures/LC8/IfElseIfElse/if_else_if_else.c b/Lectures/LC8/IfElseIfElse/if_else_if_else.c deleted file mode 100644 index d3dcf7d..0000000 --- a/Lectures/LC8/IfElseIfElse/if_else_if_else.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Chapter 8 */ - -/* Example of a simple if statements */ - - -#include /* Standard include files */ -#include -#include - - -int main( void ) -{ - - int x = 3; // Define and intialise variable - - - if ( x == 2 ) - { - printf ("The value of x was 2\n"); - printf ("I will now do something\n"); - } - else if ( x == 3 ) - { - printf ("The value of x was 3\n"); - printf ("I will now do something else\n"); - } - else - { - printf ("x is neither 2 or 3; I will do this instead!\n"); - } - - - return 0; - -} diff --git a/Lectures/LC8/IfEquals/if_equals_example.c b/Lectures/LC8/IfEquals/if_equals_example.c deleted file mode 100644 index f3047e1..0000000 --- a/Lectures/LC8/IfEquals/if_equals_example.c +++ /dev/null @@ -1,37 +0,0 @@ -/* MMME3085 Chapter 8 */ - -/* Incorrect use of a single equals sign in an if statement */ - - -#include /* Standard include files */ -#include -#include - - -int main( void ) -{ - - int c = 6; // Define variable as initialise with value - - printf ("\nThe current value in c is %d\n",c); // Display value in c - - // This is correct - if ( c == 1 ) - { - printf("\nThe value of c is 1\n" ); - } - - printf ("\nThe current value in c is %d\n",c); // Display value in c - - // This is WRONG - it is setting c to one, this value is then tested - // and, as non-zero, is considered to be TRUE - if ( c = 1 ) - { - printf("\nThe value of c is 1\n" ); - } - - printf ("\nThe current value in c is %d\n",c); // Display value in c - - return 0; - -} diff --git a/Lectures/LC8/IfExamples/if_examples.c b/Lectures/LC8/IfExamples/if_examples.c deleted file mode 100644 index 04c8d9e..0000000 --- a/Lectures/LC8/IfExamples/if_examples.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Chapter 8 */ - -/* Example of a simple if statements */ - - -#include /* Standard include files */ -#include -#include - - -int main( void ) -{ - - int a = 1, b = 6; // Define and intialise variables - - - if ( a == 1 ) - { - printf("\nThe value of a is 1\n" ); - } - - if ( a < b ) - { - printf ("The value of a is less than b\n"); - } - - if ( b < a ) - { - printf ("The value of b is less than a\n"); - } - - return 0; - -} diff --git a/Lectures/LC8/Switch1/switch_1.c b/Lectures/LC8/Switch1/switch_1.c deleted file mode 100644 index 114108e..0000000 --- a/Lectures/LC8/Switch1/switch_1.c +++ /dev/null @@ -1,31 +0,0 @@ -/* MMME3085 Chapter 8 */ - -/* Example of a simple if statements */ - - -#include /* Standard include files */ -#include - -int main( void ) -{ - - int a; /* Define an int */ - scanf ("%d",&a); /* Get value */ - switch (a) /* Start of switch */ - { - case 1: - printf("Hi"); /* Case 1 */ - break; - - case 2: - printf("Bye"); /* Case 2 */ - break; - - default : - printf("Err"); /* Default */ - break; - } - - return 0; - -} \ No newline at end of file diff --git a/Lectures/LC8/Switch2/switch_2.c b/Lectures/LC8/Switch2/switch_2.c deleted file mode 100644 index 4a0c08f..0000000 --- a/Lectures/LC8/Switch2/switch_2.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Chapter 8 */ - -/* Example of a simple if statements */ - - -#include /* Standard include files */ -#include - -#include /* Required for getch() */ - -int main( void ) -{ - - char c; /* Define an char */ - c = getch(); /* Get value */ - - switch (c) /* Start of switch */ - { - case '1': - printf("Hi"); /* Case 1 */ - break; - - case '2': - printf("Bye"); /* Case 2 */ - break; - - default : - printf("Err"); /* Default */ - break; - } - - return 0; - -} diff --git a/Lectures/LC8/Switch3/switch_3.c b/Lectures/LC8/Switch3/switch_3.c deleted file mode 100644 index 7b6ed51..0000000 --- a/Lectures/LC8/Switch3/switch_3.c +++ /dev/null @@ -1,33 +0,0 @@ -/* EEEE1001/H61CAE Chapter 8 */ - -/* Example of a simple if statements */ - - -#include /* Standard include files */ -#include - -#include /* Required for getch() */ - -int main( void ) -{ - - char c; /* Define an char */ - c = getch(); /* Get value - no return required*/ - - switch (c) /* Start of switch */ - { - case '1': - printf("Hi"); /* Case 1 */ - - case '2': - printf("Bye"); /* Case 2 */ - break; - - default : - printf("Err"); /* Default */ - break; - } - - return 0; - -} diff --git a/Lectures/LC9/DoWhile/do_while_example.c b/Lectures/LC9/DoWhile/do_while_example.c deleted file mode 100644 index 7af177c..0000000 --- a/Lectures/LC9/DoWhile/do_while_example.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - This program shows how to use a DO/WHILE statement to keep displaying - the key pressed on the screen. It terminates when the 'q' key is - pressed - - James Bonnyman -*/ - -#include /* Standard include files */ -#include -#include - -int main(void) -{ - - char x; /* Define a variable of type char */ - - - /* We now use the while statement. The 'loop' continues to execute */ - /* until such time as the expression in the brackets becomes false */ - - /* we use != , meaning 'Not Equal to' as the test, as we wish the */ - /* the statements to be executed every time we press a key other */ - /* than 'q'. Once we press 'q' the code continues on to the next */ - /* statement */ - - /* Note: This time the getch is in the while expression */ - - - do - { - x = getch(); - /* Display a message on the screen */ - printf("\nThe key you pressed was the %c key",x ); - } - while ( x != 'q' ); - - // All done :-) - - return 0; - -} diff --git a/Lectures/LC9/ForLoops/for_loops.c b/Lectures/LC9/ForLoops/for_loops.c deleted file mode 100644 index 3ee4e10..0000000 --- a/Lectures/LC9/ForLoops/for_loops.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Example Program */ - -/* - This program shows how to write a simple loop that counts up - from zero to 9. - - A second loop then counts from 10 down to 1 - - Remember - - j++ means j = j + 1 - j-- means j = j - 1 - -*/ - -#include /* Standard include files */ -#include - - -int main(void) -{ - - char j; /* Define a variable of type integer */ - - - /* The count up loop */ - printf("\nCounting Up ... "); - - for ( j = 0 ; j < 10 ; j++ ) - printf("\nThe value of j is %d",j ); - - printf("\nThe value of j after increment loop is %d",j); - - /* The count down loop */ - - printf ("\nCounting Down .. "); - for ( j = 10 ; j > 0 ; j-- ) - printf("\nThe value of j is %d",j ); - - printf("\nThe value of j after decrement loop is %d",j); - - return 0; - -} diff --git a/Lectures/LC9/While1/while_example_version_1.c b/Lectures/LC9/While1/while_example_version_1.c deleted file mode 100644 index 1dde928..0000000 --- a/Lectures/LC9/While1/while_example_version_1.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - This program shows how to use a WHILE statment to keep displaying - the key pressed on the screen. It terminates when the 'q' key is - pressed - - -*/ - -#include /* Standard include files */ -#include -#include - - -int main( void ) -{ - - char x; /* Define a variable of type char */ - - printf("Press a key "); - x = getch(); /* Use getch to read a keypress and store the */ - /* result in 'x'. We do this initially so that */ - /* there is a value in 'x' for the while statment */ - /* to consider the first time round */ - - /* We now use the while statement. The 'loop' continues to execute */ - /* until such time as the expression in the brackets becomes false */ - - /* we use != , meaning 'Not Equal to' as the test, as we wish the */ - /* the statements to be executed every time we press a key other */ - /* than 'q'. Once we press 'q' the code continues on to the next */ - /* statement */ - - while ( x != 'q' ) - { - /* Display a message on the screen */ - printf("\nThe key you pressed was the %c key\n",x ); - - /* Get a new value for X, if we do not the 'expression' will never */ - /* change, and the loop will go for ever */ - - printf( "Press another key or q to quit \n"); - x = getch(); - - } - return 0; - -} diff --git a/Lectures/LC9/While2/while_example_version_2.c b/Lectures/LC9/While2/while_example_version_2.c deleted file mode 100644 index 5978fb2..0000000 --- a/Lectures/LC9/While2/while_example_version_2.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - This program shows how to use a WHILE statment to keep displaying - the key pressed on the screen. It terminates when the 'q' key is - pressed - -*/ - -#include /* Standard include files */ -#include -#include - -int main(void) -{ - - char x; /* Define a variable of type char */ - - - /* We now use the while statement. The 'loop' continues to execute */ - /* until such time as the expression in the brackets becomes false */ - - /* we use != , meaning 'Not Equal to' as the test, as we wish the */ - /* the statements to be executed every time we press a key other */ - /* than 'q'. Once we press 'q' the code continues on to the next */ - /* statement */ - - /* Note: This time the getch is in the while expression */ - - - while ( ( x = getch() ) != 'q' ) - { - /* Display a message on the screen */ - printf("\nThe key you pressed was the %c key",x ); - } - - return 0; - -} diff --git a/Makefile b/Makefile index 01e2cdf..fcd6f8b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,11 @@ CFLAGS=-lm + +build: + zip Lab1PrepAAR.zip *.c *.ino *.pdf *.png + %.c: $(CC) $(CFLAGS) -c $< -o $* + +clean: + rm -f Lab1PrepAAR.zip TestEncoderAAR TwoSensorsAAR diff --git a/Labs/Lab_1/MotorEncoderAAR.ino b/MotorEncoderAAR.ino similarity index 100% rename from Labs/Lab_1/MotorEncoderAAR.ino rename to MotorEncoderAAR.ino diff --git a/Labs/Lab_1/TestEncoderAAR.c b/TestEncoderAAR.c similarity index 100% rename from Labs/Lab_1/TestEncoderAAR.c rename to TestEncoderAAR.c diff --git a/Labs/Lab_1/TestEncoderAAR.png b/TestEncoderAAR.png similarity index 100% rename from Labs/Lab_1/TestEncoderAAR.png rename to TestEncoderAAR.png diff --git a/Labs/Lab_1/TwoSensorsAAR.c b/TwoSensorsAAR.c similarity index 100% rename from Labs/Lab_1/TwoSensorsAAR.c rename to TwoSensorsAAR.c diff --git a/Labs/Lab_1/TwoSensorsAAR.ino b/TwoSensorsAAR.ino similarity index 100% rename from Labs/Lab_1/TwoSensorsAAR.ino rename to TwoSensorsAAR.ino diff --git a/Labs/Lab_1/TwoSensorsAAR.png b/TwoSensorsAAR.png similarity index 100% rename from Labs/Lab_1/TwoSensorsAAR.png rename to TwoSensorsAAR.png diff --git a/Labs/Lab_1/UpdateStateMachineAAR.drawio b/UpdateStateMachineAAR.drawio similarity index 100% rename from Labs/Lab_1/UpdateStateMachineAAR.drawio rename to UpdateStateMachineAAR.drawio diff --git a/Labs/Lab_1/UpdateStateMachineAAR.pdf b/UpdateStateMachineAAR.pdf similarity index 100% rename from Labs/Lab_1/UpdateStateMachineAAR.pdf rename to UpdateStateMachineAAR.pdf diff --git a/Labs/Lab_1/res/Marking Template for MMME3085 Lab 1 Programming.pdf b/res/Marking Template for MMME3085 Lab 1 Programming.pdf similarity index 100% rename from Labs/Lab_1/res/Marking Template for MMME3085 Lab 1 Programming.pdf rename to res/Marking Template for MMME3085 Lab 1 Programming.pdf diff --git a/Labs/Lab_1/res/lab_prep_sheet.pdf b/res/lab_prep_sheet.pdf similarity index 100% rename from Labs/Lab_1/res/lab_prep_sheet.pdf rename to res/lab_prep_sheet.pdf diff --git a/Labs/Lab_1/skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.drawio b/skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.drawio similarity index 100% rename from Labs/Lab_1/skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.drawio rename to skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.drawio diff --git a/Labs/Lab_1/skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.pdf b/skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.pdf similarity index 100% rename from Labs/Lab_1/skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.pdf rename to skeleton_flowcharts/InitialiseEncoderStateMachineSkeleton.pdf diff --git a/Labs/Lab_1/skeleton_flowcharts/UpdateStateMachineSkeleton.drawio b/skeleton_flowcharts/UpdateStateMachineSkeleton.drawio similarity index 100% rename from Labs/Lab_1/skeleton_flowcharts/UpdateStateMachineSkeleton.drawio rename to skeleton_flowcharts/UpdateStateMachineSkeleton.drawio diff --git a/Labs/Lab_1/skeleton_flowcharts/UpdateStateMachineSkeleton.pdf b/skeleton_flowcharts/UpdateStateMachineSkeleton.pdf similarity index 100% rename from Labs/Lab_1/skeleton_flowcharts/UpdateStateMachineSkeleton.pdf rename to skeleton_flowcharts/UpdateStateMachineSkeleton.pdf diff --git a/Labs/Lab_1/skeleton_programs/MotorEncoderSkeleton.ino b/skeleton_programs/MotorEncoderSkeleton.ino similarity index 100% rename from Labs/Lab_1/skeleton_programs/MotorEncoderSkeleton.ino rename to skeleton_programs/MotorEncoderSkeleton.ino diff --git a/Labs/Lab_1/skeleton_programs/TestEncoder.c b/skeleton_programs/TestEncoder.c similarity index 100% rename from Labs/Lab_1/skeleton_programs/TestEncoder.c rename to skeleton_programs/TestEncoder.c diff --git a/Labs/Lab_1/skeleton_programs/TestEncoder.ino b/skeleton_programs/TestEncoder.ino similarity index 100% rename from Labs/Lab_1/skeleton_programs/TestEncoder.ino rename to skeleton_programs/TestEncoder.ino diff --git a/Labs/Lab_1/skeleton_programs/TwoSensorsSkeleton.c b/skeleton_programs/TwoSensorsSkeleton.c similarity index 100% rename from Labs/Lab_1/skeleton_programs/TwoSensorsSkeleton.c rename to skeleton_programs/TwoSensorsSkeleton.c diff --git a/Labs/Lab_1/skeleton_programs/TwoSensorsSkeleton.ino b/skeleton_programs/TwoSensorsSkeleton.ino similarity index 100% rename from Labs/Lab_1/skeleton_programs/TwoSensorsSkeleton.ino rename to skeleton_programs/TwoSensorsSkeleton.ino