diff --git a/Spring-2023/CS-1011/TODO.org b/Spring-2023/CS-1011/TODO.org index 155f1c9..3f9d94c 100644 --- a/Spring-2023/CS-1011/TODO.org +++ b/Spring-2023/CS-1011/TODO.org @@ -1,6 +1,6 @@ #+FILETAGS: :college:cs1011: ** TODO Group Project -SCHEDULED: <2024-01-22 Mon> DEADLINE: <2024-02-02 Fri> +SCHEDULED: <2024-01-28 Sun> DEADLINE: <2024-02-02 Fri> - Sign up for a Group under the =People= tab in Canvas - Due in 2 weeks from today diff --git a/Spring-2023/CS-2124/Assignment-1/.clang-format b/Spring-2023/CS-2124/Assignment-1/.clang-format new file mode 100644 index 0000000..bf3583d --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/.clang-format @@ -0,0 +1,225 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAfterAttributes: Never +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... + diff --git a/Spring-2023/CS-2124/Assignment-1/.gitignore b/Spring-2023/CS-2124/Assignment-1/.gitignore new file mode 100644 index 0000000..b19ba41 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/.gitignore @@ -0,0 +1,5 @@ +bin +CMakeFiles +CMakeCache.txt +cmake_install.cmake +README.pdf diff --git a/Spring-2023/CS-2124/Assignment-1/CMakeLists.txt b/Spring-2023/CS-2124/Assignment-1/CMakeLists.txt index db62771..8b1fe28 100644 --- a/Spring-2023/CS-2124/Assignment-1/CMakeLists.txt +++ b/Spring-2023/CS-2124/Assignment-1/CMakeLists.txt @@ -1,13 +1,31 @@ cmake_minimum_required(VERSION 3.25) -project(dynamic-memory LANGUAGES "C") -file(GLOB_RECURSE dynamic-memory-sources CONFIGURE_DEPENDS "progs/dynamic-memory/src/*.c" "progs/dynamic-memory/src/*.h") -add_executable(dynamic-memory ${dynamic-memory-sources}) +set(SOURCES src/src.h src/src.c src/lib/lib.h src/lib/lib.c) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin) -project(file-operations LANGUAGES "C") -file(GLOB_RECURSE file-operations-sources CONFIGURE_DEPENDS "progs/file-operations/src/*.c" "progs/file-operations/src/*.h") -add_executable(file-operations ${file-operations-sources}) -project(string-manipulation LANGUAGES "C") -file(GLOB_RECURSE string-manipulation-sources CONFIGURE_DEPENDS "progs/string-manipulation/src/*.c" "progs/string-manipulation/src/*.h") -add_executable(string-manipulation ${string-manipulation-sources}) +project(AssignmentOne LANGUAGES C) + +add_executable(C1 src/C1.c ${SOURCES}) + +add_executable(C2 src/C2.c ${SOURCES}) + +add_executable(C3 src/C3.c ${SOURCES}) + +add_executable(C4 src/C4.c ${SOURCES}) + +add_executable(C5 src/C5.c ${SOURCES}) + +add_executable(C6 src/C6.c ${SOURCES}) + +add_executable(C7 src/C7.c ${SOURCES}) + +add_executable(C8 src/C8.c ${SOURCES}) + +add_executable(C9 src/C9.c ${SOURCES}) + +add_executable(C10 src/C10.c ${SOURCES}) + +add_executable(C11 src/C11.c ${SOURCES}) + +add_executable(C12 src/C12.c ${SOURCES}) diff --git a/Spring-2023/CS-2124/Assignment-1/Makefile b/Spring-2023/CS-2124/Assignment-1/Makefile index 546a110..3d7cf80 100644 --- a/Spring-2023/CS-2124/Assignment-1/Makefile +++ b/Spring-2023/CS-2124/Assignment-1/Makefile @@ -113,120 +113,566 @@ preinstall/fast: # clear depends depend: - $(CMAKE_COMMAND) -P /home/sam/Git/College/Spring-2023/CS-2124/Assignment-1/CMakeFiles/VerifyGlobs.cmake $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend #============================================================================= -# Target rules for targets named dynamic-memory +# Target rules for targets named C1 # Build rule for target. -dynamic-memory: cmake_check_build_system - $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 dynamic-memory -.PHONY : dynamic-memory +C1: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C1 +.PHONY : C1 # fast build rule for target. -dynamic-memory/fast: - $(MAKE) $(MAKESILENT) -f CMakeFiles/dynamic-memory.dir/build.make CMakeFiles/dynamic-memory.dir/build -.PHONY : dynamic-memory/fast +C1/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/build +.PHONY : C1/fast #============================================================================= -# Target rules for targets named file-operations +# Target rules for targets named C2 # Build rule for target. -file-operations: cmake_check_build_system - $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 file-operations -.PHONY : file-operations +C2: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C2 +.PHONY : C2 # fast build rule for target. -file-operations/fast: - $(MAKE) $(MAKESILENT) -f CMakeFiles/file-operations.dir/build.make CMakeFiles/file-operations.dir/build -.PHONY : file-operations/fast +C2/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/build +.PHONY : C2/fast #============================================================================= -# Target rules for targets named string-manipulation +# Target rules for targets named C3 # Build rule for target. -string-manipulation: cmake_check_build_system - $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 string-manipulation -.PHONY : string-manipulation +C3: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C3 +.PHONY : C3 # fast build rule for target. -string-manipulation/fast: - $(MAKE) $(MAKESILENT) -f CMakeFiles/string-manipulation.dir/build.make CMakeFiles/string-manipulation.dir/build -.PHONY : string-manipulation/fast +C3/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/build +.PHONY : C3/fast -progs/dynamic-memory/src/main.o: progs/dynamic-memory/src/main.c.o -.PHONY : progs/dynamic-memory/src/main.o +#============================================================================= +# Target rules for targets named C4 + +# Build rule for target. +C4: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C4 +.PHONY : C4 + +# fast build rule for target. +C4/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/build +.PHONY : C4/fast + +#============================================================================= +# Target rules for targets named C5 + +# Build rule for target. +C5: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C5 +.PHONY : C5 + +# fast build rule for target. +C5/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/build +.PHONY : C5/fast + +#============================================================================= +# Target rules for targets named C6 + +# Build rule for target. +C6: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C6 +.PHONY : C6 + +# fast build rule for target. +C6/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/build +.PHONY : C6/fast + +#============================================================================= +# Target rules for targets named C7 + +# Build rule for target. +C7: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C7 +.PHONY : C7 + +# fast build rule for target. +C7/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/build +.PHONY : C7/fast + +#============================================================================= +# Target rules for targets named C8 + +# Build rule for target. +C8: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C8 +.PHONY : C8 + +# fast build rule for target. +C8/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/build +.PHONY : C8/fast + +#============================================================================= +# Target rules for targets named C9 + +# Build rule for target. +C9: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C9 +.PHONY : C9 + +# fast build rule for target. +C9/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/build +.PHONY : C9/fast + +#============================================================================= +# Target rules for targets named C10 + +# Build rule for target. +C10: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C10 +.PHONY : C10 + +# fast build rule for target. +C10/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/build +.PHONY : C10/fast + +#============================================================================= +# Target rules for targets named C11 + +# Build rule for target. +C11: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C11 +.PHONY : C11 + +# fast build rule for target. +C11/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/build +.PHONY : C11/fast + +#============================================================================= +# Target rules for targets named C12 + +# Build rule for target. +C12: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 C12 +.PHONY : C12 + +# fast build rule for target. +C12/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/build +.PHONY : C12/fast + +src/C1.o: src/C1.c.o +.PHONY : src/C1.o # target to build an object file -progs/dynamic-memory/src/main.c.o: - $(MAKE) $(MAKESILENT) -f CMakeFiles/dynamic-memory.dir/build.make CMakeFiles/dynamic-memory.dir/progs/dynamic-memory/src/main.c.o -.PHONY : progs/dynamic-memory/src/main.c.o +src/C1.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/C1.c.o +.PHONY : src/C1.c.o -progs/dynamic-memory/src/main.i: progs/dynamic-memory/src/main.c.i -.PHONY : progs/dynamic-memory/src/main.i +src/C1.i: src/C1.c.i +.PHONY : src/C1.i # target to preprocess a source file -progs/dynamic-memory/src/main.c.i: - $(MAKE) $(MAKESILENT) -f CMakeFiles/dynamic-memory.dir/build.make CMakeFiles/dynamic-memory.dir/progs/dynamic-memory/src/main.c.i -.PHONY : progs/dynamic-memory/src/main.c.i +src/C1.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/C1.c.i +.PHONY : src/C1.c.i -progs/dynamic-memory/src/main.s: progs/dynamic-memory/src/main.c.s -.PHONY : progs/dynamic-memory/src/main.s +src/C1.s: src/C1.c.s +.PHONY : src/C1.s # target to generate assembly for a file -progs/dynamic-memory/src/main.c.s: - $(MAKE) $(MAKESILENT) -f CMakeFiles/dynamic-memory.dir/build.make CMakeFiles/dynamic-memory.dir/progs/dynamic-memory/src/main.c.s -.PHONY : progs/dynamic-memory/src/main.c.s +src/C1.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/C1.c.s +.PHONY : src/C1.c.s -progs/file-operations/src/main.o: progs/file-operations/src/main.c.o -.PHONY : progs/file-operations/src/main.o +src/C10.o: src/C10.c.o +.PHONY : src/C10.o # target to build an object file -progs/file-operations/src/main.c.o: - $(MAKE) $(MAKESILENT) -f CMakeFiles/file-operations.dir/build.make CMakeFiles/file-operations.dir/progs/file-operations/src/main.c.o -.PHONY : progs/file-operations/src/main.c.o +src/C10.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/C10.c.o +.PHONY : src/C10.c.o -progs/file-operations/src/main.i: progs/file-operations/src/main.c.i -.PHONY : progs/file-operations/src/main.i +src/C10.i: src/C10.c.i +.PHONY : src/C10.i # target to preprocess a source file -progs/file-operations/src/main.c.i: - $(MAKE) $(MAKESILENT) -f CMakeFiles/file-operations.dir/build.make CMakeFiles/file-operations.dir/progs/file-operations/src/main.c.i -.PHONY : progs/file-operations/src/main.c.i +src/C10.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/C10.c.i +.PHONY : src/C10.c.i -progs/file-operations/src/main.s: progs/file-operations/src/main.c.s -.PHONY : progs/file-operations/src/main.s +src/C10.s: src/C10.c.s +.PHONY : src/C10.s # target to generate assembly for a file -progs/file-operations/src/main.c.s: - $(MAKE) $(MAKESILENT) -f CMakeFiles/file-operations.dir/build.make CMakeFiles/file-operations.dir/progs/file-operations/src/main.c.s -.PHONY : progs/file-operations/src/main.c.s +src/C10.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/C10.c.s +.PHONY : src/C10.c.s -progs/string-manipulation/src/main.o: progs/string-manipulation/src/main.c.o -.PHONY : progs/string-manipulation/src/main.o +src/C11.o: src/C11.c.o +.PHONY : src/C11.o # target to build an object file -progs/string-manipulation/src/main.c.o: - $(MAKE) $(MAKESILENT) -f CMakeFiles/string-manipulation.dir/build.make CMakeFiles/string-manipulation.dir/progs/string-manipulation/src/main.c.o -.PHONY : progs/string-manipulation/src/main.c.o +src/C11.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/C11.c.o +.PHONY : src/C11.c.o -progs/string-manipulation/src/main.i: progs/string-manipulation/src/main.c.i -.PHONY : progs/string-manipulation/src/main.i +src/C11.i: src/C11.c.i +.PHONY : src/C11.i # target to preprocess a source file -progs/string-manipulation/src/main.c.i: - $(MAKE) $(MAKESILENT) -f CMakeFiles/string-manipulation.dir/build.make CMakeFiles/string-manipulation.dir/progs/string-manipulation/src/main.c.i -.PHONY : progs/string-manipulation/src/main.c.i +src/C11.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/C11.c.i +.PHONY : src/C11.c.i -progs/string-manipulation/src/main.s: progs/string-manipulation/src/main.c.s -.PHONY : progs/string-manipulation/src/main.s +src/C11.s: src/C11.c.s +.PHONY : src/C11.s # target to generate assembly for a file -progs/string-manipulation/src/main.c.s: - $(MAKE) $(MAKESILENT) -f CMakeFiles/string-manipulation.dir/build.make CMakeFiles/string-manipulation.dir/progs/string-manipulation/src/main.c.s -.PHONY : progs/string-manipulation/src/main.c.s +src/C11.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/C11.c.s +.PHONY : src/C11.c.s + +src/C12.o: src/C12.c.o +.PHONY : src/C12.o + +# target to build an object file +src/C12.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/C12.c.o +.PHONY : src/C12.c.o + +src/C12.i: src/C12.c.i +.PHONY : src/C12.i + +# target to preprocess a source file +src/C12.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/C12.c.i +.PHONY : src/C12.c.i + +src/C12.s: src/C12.c.s +.PHONY : src/C12.s + +# target to generate assembly for a file +src/C12.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/C12.c.s +.PHONY : src/C12.c.s + +src/C2.o: src/C2.c.o +.PHONY : src/C2.o + +# target to build an object file +src/C2.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/C2.c.o +.PHONY : src/C2.c.o + +src/C2.i: src/C2.c.i +.PHONY : src/C2.i + +# target to preprocess a source file +src/C2.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/C2.c.i +.PHONY : src/C2.c.i + +src/C2.s: src/C2.c.s +.PHONY : src/C2.s + +# target to generate assembly for a file +src/C2.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/C2.c.s +.PHONY : src/C2.c.s + +src/C3.o: src/C3.c.o +.PHONY : src/C3.o + +# target to build an object file +src/C3.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/C3.c.o +.PHONY : src/C3.c.o + +src/C3.i: src/C3.c.i +.PHONY : src/C3.i + +# target to preprocess a source file +src/C3.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/C3.c.i +.PHONY : src/C3.c.i + +src/C3.s: src/C3.c.s +.PHONY : src/C3.s + +# target to generate assembly for a file +src/C3.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/C3.c.s +.PHONY : src/C3.c.s + +src/C4.o: src/C4.c.o +.PHONY : src/C4.o + +# target to build an object file +src/C4.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/C4.c.o +.PHONY : src/C4.c.o + +src/C4.i: src/C4.c.i +.PHONY : src/C4.i + +# target to preprocess a source file +src/C4.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/C4.c.i +.PHONY : src/C4.c.i + +src/C4.s: src/C4.c.s +.PHONY : src/C4.s + +# target to generate assembly for a file +src/C4.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/C4.c.s +.PHONY : src/C4.c.s + +src/C5.o: src/C5.c.o +.PHONY : src/C5.o + +# target to build an object file +src/C5.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/C5.c.o +.PHONY : src/C5.c.o + +src/C5.i: src/C5.c.i +.PHONY : src/C5.i + +# target to preprocess a source file +src/C5.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/C5.c.i +.PHONY : src/C5.c.i + +src/C5.s: src/C5.c.s +.PHONY : src/C5.s + +# target to generate assembly for a file +src/C5.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/C5.c.s +.PHONY : src/C5.c.s + +src/C6.o: src/C6.c.o +.PHONY : src/C6.o + +# target to build an object file +src/C6.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/C6.c.o +.PHONY : src/C6.c.o + +src/C6.i: src/C6.c.i +.PHONY : src/C6.i + +# target to preprocess a source file +src/C6.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/C6.c.i +.PHONY : src/C6.c.i + +src/C6.s: src/C6.c.s +.PHONY : src/C6.s + +# target to generate assembly for a file +src/C6.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/C6.c.s +.PHONY : src/C6.c.s + +src/C7.o: src/C7.c.o +.PHONY : src/C7.o + +# target to build an object file +src/C7.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/C7.c.o +.PHONY : src/C7.c.o + +src/C7.i: src/C7.c.i +.PHONY : src/C7.i + +# target to preprocess a source file +src/C7.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/C7.c.i +.PHONY : src/C7.c.i + +src/C7.s: src/C7.c.s +.PHONY : src/C7.s + +# target to generate assembly for a file +src/C7.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/C7.c.s +.PHONY : src/C7.c.s + +src/C8.o: src/C8.c.o +.PHONY : src/C8.o + +# target to build an object file +src/C8.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/C8.c.o +.PHONY : src/C8.c.o + +src/C8.i: src/C8.c.i +.PHONY : src/C8.i + +# target to preprocess a source file +src/C8.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/C8.c.i +.PHONY : src/C8.c.i + +src/C8.s: src/C8.c.s +.PHONY : src/C8.s + +# target to generate assembly for a file +src/C8.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/C8.c.s +.PHONY : src/C8.c.s + +src/C9.o: src/C9.c.o +.PHONY : src/C9.o + +# target to build an object file +src/C9.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/C9.c.o +.PHONY : src/C9.c.o + +src/C9.i: src/C9.c.i +.PHONY : src/C9.i + +# target to preprocess a source file +src/C9.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/C9.c.i +.PHONY : src/C9.c.i + +src/C9.s: src/C9.c.s +.PHONY : src/C9.s + +# target to generate assembly for a file +src/C9.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/C9.c.s +.PHONY : src/C9.c.s + +src/lib/lib.o: src/lib/lib.c.o +.PHONY : src/lib/lib.o + +# target to build an object file +src/lib/lib.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/lib/lib.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/lib/lib.c.o +.PHONY : src/lib/lib.c.o + +src/lib/lib.i: src/lib/lib.c.i +.PHONY : src/lib/lib.i + +# target to preprocess a source file +src/lib/lib.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/lib/lib.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/lib/lib.c.i +.PHONY : src/lib/lib.c.i + +src/lib/lib.s: src/lib/lib.c.s +.PHONY : src/lib/lib.s + +# target to generate assembly for a file +src/lib/lib.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/lib/lib.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/lib/lib.c.s +.PHONY : src/lib/lib.c.s + +src/src.o: src/src.c.o +.PHONY : src/src.o + +# target to build an object file +src/src.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/src.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/src.c.o +.PHONY : src/src.c.o + +src/src.i: src/src.c.i +.PHONY : src/src.i + +# target to preprocess a source file +src/src.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/src.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/src.c.i +.PHONY : src/src.c.i + +src/src.s: src/src.c.s +.PHONY : src/src.s + +# target to generate assembly for a file +src/src.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/C1.dir/build.make CMakeFiles/C1.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C2.dir/build.make CMakeFiles/C2.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C3.dir/build.make CMakeFiles/C3.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C4.dir/build.make CMakeFiles/C4.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C5.dir/build.make CMakeFiles/C5.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C6.dir/build.make CMakeFiles/C6.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C7.dir/build.make CMakeFiles/C7.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C8.dir/build.make CMakeFiles/C8.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C9.dir/build.make CMakeFiles/C9.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C10.dir/build.make CMakeFiles/C10.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C11.dir/build.make CMakeFiles/C11.dir/src/src.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/C12.dir/build.make CMakeFiles/C12.dir/src/src.c.s +.PHONY : src/src.c.s # Help Target help: @@ -236,18 +682,60 @@ help: @echo "... depend" @echo "... edit_cache" @echo "... rebuild_cache" - @echo "... dynamic-memory" - @echo "... file-operations" - @echo "... string-manipulation" - @echo "... progs/dynamic-memory/src/main.o" - @echo "... progs/dynamic-memory/src/main.i" - @echo "... progs/dynamic-memory/src/main.s" - @echo "... progs/file-operations/src/main.o" - @echo "... progs/file-operations/src/main.i" - @echo "... progs/file-operations/src/main.s" - @echo "... progs/string-manipulation/src/main.o" - @echo "... progs/string-manipulation/src/main.i" - @echo "... progs/string-manipulation/src/main.s" + @echo "... C1" + @echo "... C10" + @echo "... C11" + @echo "... C12" + @echo "... C2" + @echo "... C3" + @echo "... C4" + @echo "... C5" + @echo "... C6" + @echo "... C7" + @echo "... C8" + @echo "... C9" + @echo "... src/C1.o" + @echo "... src/C1.i" + @echo "... src/C1.s" + @echo "... src/C10.o" + @echo "... src/C10.i" + @echo "... src/C10.s" + @echo "... src/C11.o" + @echo "... src/C11.i" + @echo "... src/C11.s" + @echo "... src/C12.o" + @echo "... src/C12.i" + @echo "... src/C12.s" + @echo "... src/C2.o" + @echo "... src/C2.i" + @echo "... src/C2.s" + @echo "... src/C3.o" + @echo "... src/C3.i" + @echo "... src/C3.s" + @echo "... src/C4.o" + @echo "... src/C4.i" + @echo "... src/C4.s" + @echo "... src/C5.o" + @echo "... src/C5.i" + @echo "... src/C5.s" + @echo "... src/C6.o" + @echo "... src/C6.i" + @echo "... src/C6.s" + @echo "... src/C7.o" + @echo "... src/C7.i" + @echo "... src/C7.s" + @echo "... src/C8.o" + @echo "... src/C8.i" + @echo "... src/C8.s" + @echo "... src/C9.o" + @echo "... src/C9.i" + @echo "... src/C9.s" + @echo "... src/lib/lib.o" + @echo "... src/lib/lib.i" + @echo "... src/lib/lib.s" + @echo "... src/src.o" + @echo "... src/src.i" + @echo "... src/src.s" .PHONY : help @@ -259,7 +747,6 @@ help: # No rule that depends on this can have commands that come from listfiles # because they might be regenerated. cmake_check_build_system: - $(CMAKE_COMMAND) -P /home/sam/Git/College/Spring-2023/CS-2124/Assignment-1/CMakeFiles/VerifyGlobs.cmake $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 .PHONY : cmake_check_build_system diff --git a/Spring-2023/CS-2124/Assignment-1/README.org b/Spring-2023/CS-2124/Assignment-1/README.org new file mode 100644 index 0000000..d43e86f --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/README.org @@ -0,0 +1,187 @@ +#+LATEX_HEADER: \usepackage[margin=0.5in]{geometry} + +* Assignment 1 + +ABC123: =zfp106= + +Name: =Price Hiller= + +Course: =CS2124= + +Section: =0C3= + +Semester: =Spring 2024= + +** Source Code + +The full source code for this project can be found at [[https://gitlab.orion-technologies.io/philler/college/-/tree/Development/Spring-2023/CS-2124/Assignment-1?ref_type=heads]] +** Running the Programs +1. Install [[https://cmake.org/download/][cmake]] version 3.25 or greater. +2. Ensure you have recent version of ~make~ at the time of writing. This project successfully + compiles with ~GNU make~ version ~4.4.1~. +3. Go the directory with ~CMakeLists.txt~ and run ~cmake .~ to generate a Makefile. +4. Run ~make all~ to compile all the programs. +5. Go into the newly created ~bin~ directory where all the compiled programs will be output to. +6. Run the programs in sequence, from ~C1~ to ~C12~ to ensure the file operations work as + expected. + +** Program Outputs and Question Solutions (C's) + +*** C1 (Creation of a new file) + +[[./assets/C1-output.png]] + +*** C2 (Opening and closing an existing file) + +[[./assets/C2-output.png]] + +*** C3 (Writing to a file) + +[[./assets/C3-output.png]] + +*** C4 (Reading from file) + +[[./assets/C4-output.png]] + +*** C5 (Moving to a specific location in a file (end of file)) + +[[./assets/C5-output.png]] + +*** C6 (Computes string's length and copies one string into another string) + +[[./assets/C6-output.png]] + +*** C7 (Concatenates(joins) two strings) + +[[./assets/C7-output.png]] + +*** C8 (Compares two strings) + +[[./assets/C8-output.png]] + +*** C9 (Converts String to lowercase) + +[[./assets/C9-output.png]] + +*** C10 (Converts string to uppercase) + +[[./assets/C10-output.png]] + +*** C11 (Dynamic Memory with Malloc) + +[[./assets/C11-output.png]] + +*** C12 (Dynamic Memory with Calloc) + +[[./assets/C12-output.png]] + +*** C13 (Describe the difference between ~malloc~ and ~calloc~) + +~malloc~ and ~calloc~ both return a pointer to allocated memory for some purpose. The major +difference is that ~calloc~, by default, will initialize all elements in that allocated memory +to the value ~0~ whereas ~malloc~ does not modify anything in that block of memory before +returning a pointer. + +You can achieve a poor man's ~calloc~ by using ~malloc~ with ~memset~ to initialize the +newly returned block of memory to ~0~ yourself. This will almost certainly be slower than most +~calloc~ usages as ~calloc~ "knows" the kernel will return something known as a virtual zero page and +thus will be receiving (on most systems) a chunk of memory that has all its values initialized +to ~0~ by default. Thus ~calloc~ can "know" when it needs to allocate those ~0~'s itself or if +it can skip the process and thereby be faster than ~malloc~ + ~memset~. + +*** C14 (Explain pointers and pointers to pointers using code) + + +**** *_Write code for pointer and use that code to explain pointers in your own words_* + +#+BEGIN_SRC c +#include + +int main() { + char *str = "Hello"; + while (*str != *"\0") { + printf("Pointer Location: %p, Remaining Letters: %s\n", str, str); + str++; + } +} +#+END_SRC + +If you run the code above it will output something similar to the following: +#+BEGIN_SRC +Pointer Location: 0x402008, Remaining Letters: Hello +Pointer Location: 0x402009, Remaining Letters: ello +Pointer Location: 0x40200a, Remaining Letters: llo +Pointer Location: 0x40200b, Remaining Letters: lo +Pointer Location: 0x40200c, Remaining Letters: o +#+END_SRC + +As you can see we're progressively incrementing the pointer location by one and outputting the +remaining letters from the current pointer location to the end of the string until we hit the +=NULL= character. + +The line: +~char *str = "Hello";~ +is really a pointer to some location that starts with the letter =H= and ends with a =NULL= +character, =\0=. + +By incrementing the pointer by one, we're moving the location it's /pointing/ at by one. After +the first iteration through the while loop the ~*str~ pointer points at the letter ~e~. After +the second iteration, ~*str~ points at ~l~, after the third iteration, ~l~, and so on. + +In reality a pointer is something that /points/ to a place in memory. It doesn't contain a +value itself, it merely points to where a value is stored. Hence why the output has the weird +hex codes for =Pointer Location= like =0x402008=. That hex code is a location in memory known +as a /memory address/ that ~*str~, the pointer, points to. + + +**** *_Write a code for pointer to pointer and use that code to explain pointer to pointer in your own words_* + +A pointer to pointer can be seen in the following code: +#+BEGIN_SRC c +#include + +int main() { + int some_integer = 106; + int *pointer = &some_integer; + int **pointer_to_pointer = &pointer; + printf("Value: %d\nPointer: %p\nPointer to Pointer: %p\n", some_integer, pointer, pointer_to_pointer); +} +#+END_SRC + +When we run the above it will output (pointer values may vary): +#+BEGIN_SRC +Value: 106 +Pointer: 0x7ffc87ea34d4 +Pointer to Pointer: 0x7ffc87ea34c8 +#+END_SRC + +Notice that the ~pointer~ variable has a different address it points to than +~pointer_to_pointer~. + +The ~pointer~ variable points to the memory location of ~some_integer~ and the +~pointer_to_pointer~ variable points to the memory location of where the ~pointer~ variable is +stored. + +With the above in mind, we can then think of a pointer to a pointer as a double indirection. +See the following diagram for what this effectively "looks" like: +#+BEGIN_EXAMPLE +Pointer to Pointer ----> Pointer ----> Value +#+END_EXAMPLE + +Thus, if we only had the variable ~pointer_to_pointer~ we could access the value all the +pointers ultimately point to with a multiple dereference like so: +#+BEGIN_SRC c +#include + +int main() { + int some_integer = 106; + int *pointer = &some_integer; + int **pointer_to_pointer = &pointer; + printf("Deref'd Value from Pointer to Pointer: %d\n", **pointer_to_pointer); +} +#+END_SRC + +Which will output: +#+BEGIN_SRC +Deref'd Value from Pointer to Pointer: 106 +#+END_SRC diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C1-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C1-output.png new file mode 100644 index 0000000..4df56d3 Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C1-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C10-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C10-output.png new file mode 100644 index 0000000..1fe9394 Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C10-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C11-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C11-output.png new file mode 100644 index 0000000..e3502ef Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C11-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C12-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C12-output.png new file mode 100644 index 0000000..3f4e3b0 Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C12-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C2-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C2-output.png new file mode 100644 index 0000000..6368845 Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C2-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C3-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C3-output.png new file mode 100644 index 0000000..9df68b6 Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C3-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C4-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C4-output.png new file mode 100644 index 0000000..25b41a3 Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C4-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C5-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C5-output.png new file mode 100644 index 0000000..7835e5a Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C5-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C6-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C6-output.png new file mode 100644 index 0000000..f763d9f Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C6-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C7-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C7-output.png new file mode 100644 index 0000000..1ebfd0a Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C7-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C8-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C8-output.png new file mode 100644 index 0000000..83a904b Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C8-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/assets/C9-output.png b/Spring-2023/CS-2124/Assignment-1/assets/C9-output.png new file mode 100644 index 0000000..497cc5c Binary files /dev/null and b/Spring-2023/CS-2124/Assignment-1/assets/C9-output.png differ diff --git a/Spring-2023/CS-2124/Assignment-1/progs/dynamic-memory/src/main.c b/Spring-2023/CS-2124/Assignment-1/progs/dynamic-memory/src/main.c deleted file mode 100644 index f2e6d23..0000000 --- a/Spring-2023/CS-2124/Assignment-1/progs/dynamic-memory/src/main.c +++ /dev/null @@ -1,4 +0,0 @@ -#include -int main(void) -{ -} diff --git a/Spring-2023/CS-2124/Assignment-1/progs/file-operations/src/main.c b/Spring-2023/CS-2124/Assignment-1/progs/file-operations/src/main.c deleted file mode 100644 index 2482901..0000000 --- a/Spring-2023/CS-2124/Assignment-1/progs/file-operations/src/main.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -int main(void) -{ - printf("1.) Creation of a new file:\n"); - char fname[] = {"p", "r", "i", "c", "e", ".", "t", "x", "t"}; - FILE *f = fopen(fname, "w+"); - printf("Filename: %s\nLocation: %s\n", fname, realpath(fname, NULL)); -} - -/** - * @brief Create a new file and output the file name and location of the file to STDOUT - */ -void create_new_file(char* filename) { -} - -/** - * @brief Open and close an existing file and output the location of the file to STDOUT - */ -void open_and_close_existing_file() {} - -/** - * @brief Open and write - */ -void write_to_a_file() {} diff --git a/Spring-2023/CS-2124/Assignment-1/progs/string-manipulation/src/main.c b/Spring-2023/CS-2124/Assignment-1/progs/string-manipulation/src/main.c deleted file mode 100644 index 58fe692..0000000 --- a/Spring-2023/CS-2124/Assignment-1/progs/string-manipulation/src/main.c +++ /dev/null @@ -1,4 +0,0 @@ -int main(void) -{ - return 0; -} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C1.c b/Spring-2023/CS-2124/Assignment-1/src/C1.c new file mode 100644 index 0000000..3bd74fa --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C1.c @@ -0,0 +1,16 @@ +#include "src.h" +#include + +void c1() { + FILE *f = fopen(FNAME, "w+"); + solve(1, "Creation of a new file", + fmtstr("Filename: %s\nLocation: %s", FNAME, get_file_path(FNAME))); +} + +int main() { + print_header(); + c1(); + return 0; +} + + diff --git a/Spring-2023/CS-2124/Assignment-1/src/C10.c b/Spring-2023/CS-2124/Assignment-1/src/C10.c new file mode 100644 index 0000000..884800d --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C10.c @@ -0,0 +1,24 @@ +#include "src.h" +#include +#include +#include + +void c10() { + size_t lname_len2 = strlen(LAST_NAME); + char *upper_last = malloc(lname_len2); + const char *lname = LAST_NAME; + char *b = upper_last; + while (lname_len2--) + *b++ = toupper(*lname++); + + solve(9, "Converts string to uppercase", + fmtstr("Original String: %s\nUppercased String: %s", LAST_NAME, + upper_last)); + +} + +int main() { + print_header(); + c10(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C11.c b/Spring-2023/CS-2124/Assignment-1/src/C11.c new file mode 100644 index 0000000..a7b2e79 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C11.c @@ -0,0 +1,36 @@ +#include "src.h" +#include "src.h" +#include +#include + +void c11() { + int num_elements; + printf("Enter number of elements (Malloc): "); + scanf("%d", &num_elements); + // Allocate the needed memory + int *elements = malloc(sizeof(int) * num_elements); + + // Read the values in one by one into the memory + printf("Enter elements:\n"); + int *end_addr = elements + num_elements; // Find end of memory region + while (elements < end_addr) { + scanf("%d", elements); + elements++; + } + elements--; // Slight offset to ensure correct alignment of the pointer + + printf("\n"); // Insert newline to separator reads from output + + // Reset the pointer to the start of the memory region + elements = elements - num_elements; + while (num_elements--) { + elements++; + printf("Memory Address of %d is %p\n", *elements, elements); + } +} + +int main() { + print_header(); + c11(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C12.c b/Spring-2023/CS-2124/Assignment-1/src/C12.c new file mode 100644 index 0000000..4cc3a34 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C12.c @@ -0,0 +1,35 @@ +#include "src.h" +#include +#include + +void c12() { + int num_elements; + printf("Enter number of elements (Calloc): "); + scanf("%d", &num_elements); + // Allocate the needed memory + int *elements = calloc(num_elements, sizeof(int)); + + // Read the values in one by one into the memory + printf("Enter elements:\n"); + int *end_addr = elements + num_elements; // Find end of memory region + while (elements < end_addr) { + scanf("%d", elements); + elements++; + } + elements--; // Slight offset to ensure correct alignment of the pointer + + printf("\n"); // Insert newline to separator reads from output + + // Reset the pointer to the start of the memory region + elements = elements - num_elements; + while (num_elements--) { + elements++; + printf("Memory Address of %d is %p\n", *elements, elements); + } +} + +int main() { + print_header(); + c12(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C2.c b/Spring-2023/CS-2124/Assignment-1/src/C2.c new file mode 100644 index 0000000..2bed580 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C2.c @@ -0,0 +1,16 @@ +#include "src.h" +#include + +void c2() { + FILE *f = fopen(FNAME, "r"); + fclose(f); + solve( + 2, "Opening and closing an existing file", + fmtstr("Opened and closed file located at: %s", get_file_path(FNAME))); +} + +int main() { + print_header(); + c2(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C3.c b/Spring-2023/CS-2124/Assignment-1/src/C3.c new file mode 100644 index 0000000..83db001 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C3.c @@ -0,0 +1,16 @@ +#include "src.h" +#include + +void c3() { + FILE *f = fopen(FNAME, "w+"); + fprintf(f, "106"); + fclose(f); + solve(3, "Writing to a file", + fmtstr("Wrote '106' to: %s", get_file_path(FNAME))); +} + +int main() { + print_header(); + c3(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C4.c b/Spring-2023/CS-2124/Assignment-1/src/C4.c new file mode 100644 index 0000000..3fc76ae --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C4.c @@ -0,0 +1,17 @@ +#include "src.h" +#include + +void c4() { + FILE *f = fopen(FNAME, "r"); + int fcontent; + fscanf(f, "%d", &fcontent); + fclose(f); + solve(4, "Reading from file", + fmtstr("Read from file: %s\nContent read: %d", FNAME, fcontent)); +} + +int main() { + print_header(); + c4(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C5.c b/Spring-2023/CS-2124/Assignment-1/src/C5.c new file mode 100644 index 0000000..184423e --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C5.c @@ -0,0 +1,17 @@ +#include "src.h" +#include + +void c5() { + FILE *f = fopen(FNAME, "r"); + fseek(f, 0L, SEEK_END); + int foffset = ftell(f); + fclose(f); + solve(5, "Moving to a specific location in a file (end of file)", + fmtstr("Location in %s: %d", FNAME, foffset)); +} + +int main() { + print_header(); + c5(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C6.c b/Spring-2023/CS-2124/Assignment-1/src/C6.c new file mode 100644 index 0000000..bead8d8 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C6.c @@ -0,0 +1,22 @@ +#include "src.h" +#include +#include +#include + +void c6() { + size_t str_len = strlen(FIRST_NAME); + char *newstr = malloc(str_len + 1); + // strcpy is just calling memcpy under + // the hood + memcpy(newstr, FIRST_NAME, str_len + 1); + solve(6, + "Computes string's length and copies one string into another string", + fmtstr("String: %s, Location %p\nLength: %d\nCopied String: %s, Location: %p", FIRST_NAME, &FIRST_NAME, + str_len, newstr, &newstr)); +} + +int main() { + print_header(); + c6(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C7.c b/Spring-2023/CS-2124/Assignment-1/src/C7.c new file mode 100644 index 0000000..3c99d25 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C7.c @@ -0,0 +1,18 @@ +#include "src.h" +#include + +void c7() { + char concat_str[strlen(FIRST_NAME) + strlen(LAST_NAME)]; + strcpy(concat_str, FIRST_NAME); + strcat(concat_str, " "); + strcat(concat_str, LAST_NAME); + + solve(7, "Concatenates(joins) two strings", + fmtstr("First & Last Name Concatenated: %s", concat_str)); +} + +int main() { + print_header(); + c7(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C8.c b/Spring-2023/CS-2124/Assignment-1/src/C8.c new file mode 100644 index 0000000..90762b6 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C8.c @@ -0,0 +1,21 @@ +#include "src.h" +#include +#include + +void c8() { + char *names_equal = malloc(sizeof(char) * 256); + if (!strcmp(FIRST_NAME, LAST_NAME)) { + names_equal = "Strings are the same"; + } else { + names_equal = "Strings are different"; + } + solve(8, "Compares two strings", + fmtstr("Comparing '%s' to '%s'\nSame?: %s", FIRST_NAME, LAST_NAME, + names_equal)); +} + +int main() { + print_header(); + c8(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/C9.c b/Spring-2023/CS-2124/Assignment-1/src/C9.c new file mode 100644 index 0000000..e54d599 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/C9.c @@ -0,0 +1,26 @@ +#include "src.h" +#include +#include +#include + +void c9(){ + size_t lname_len = strlen(LAST_NAME); + char *lower_last = malloc(lname_len); + + // Slightly faster way to memcpy for this purpose, might as well also copy + // in the lowercased variant of the source + const char *lname = LAST_NAME; + char *d = lower_last; + while (lname_len--) + *d++ = tolower(*lname++); + + solve(9, "Converts string to lowercase", + fmtstr("Original String: %s\nLowercased String: %s", LAST_NAME, + lower_last)); +} + +int main() { + print_header(); + c9(); + return 0; +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/lib/lib.c b/Spring-2023/CS-2124/Assignment-1/src/lib/lib.c new file mode 100644 index 0000000..a1fbd28 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/lib/lib.c @@ -0,0 +1,70 @@ +// Credit to +// https://stackoverflow.com/questions/40159892/using-asprintf-on-windows/49873938#49873938 +// with modifications by me + + +#include /* needed for va_* */ +#include /* needed for vsnprintf */ +#include /* needed for malloc, free */ + +#ifdef _MSC_VER +#include +#else +#include +#endif + +int vscprintf(const char *format, va_list ap) { + va_list ap_copy; + va_copy(ap_copy, ap); + int retval = vsnprintf(NULL, 0, format, ap_copy); + va_end(ap_copy); + return retval; +} + +/* + * asprintf, vasprintf: + * MSVC does not implement these, thus we implement them here + * GNU-C-compatible compilers implement these with the same names, thus we + * don't have to do anything + */ +int vasprintf(char **strp, const char *format, va_list ap) { + int len = vscprintf(format, ap); + if (len == -1) + return -1; + char *str = (char *)malloc((size_t)len + 1); + if (!str) + return -1; + int retval = vsnprintf(str, len + 1, format, ap); + if (retval == -1) { + free(str); + return -1; + } + *strp = str; + return retval; +} + +char* fmtstr(const char *format, ...) { + char *str = NULL; + va_list ap; + va_start(ap, format); + vasprintf(&str, format, ap); + va_end(ap); + return str; +} + +char *get_file_path(char *fname) { +#ifdef _WIN32 + char fp[_MAX_PATH]; + return _fullpath(fp, fname, _MAX_PATH); +#else + char fp[PATH_MAX - 1]; + return realpath(fname, fp); +#endif +} + +void solve(int problem_number, char *problem, char *solution) { + printf("=========================\n%d.) %s\n" + "-------------------------\n" + "%s\n\n", + problem_number, problem, solution); +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/lib/lib.h b/Spring-2023/CS-2124/Assignment-1/src/lib/lib.h new file mode 100644 index 0000000..1b959ef --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/lib/lib.h @@ -0,0 +1,36 @@ +// Credit to +// https://stackoverflow.com/questions/40159892/using-asprintf-on-windows/49873938#49873938 +// with modifications by me + +#ifndef FMTSTR_H +#define FMTSTR_H + +#if defined(__GNUC__) && !defined(_GNU_SOURCE) +#define _GNU_SOURCE /* needed for (v)asprintf, affects '#include ' */ +#endif + +#include /* needed for va_* */ + +/* + * vscprintf: + * MSVC implements this as _vscprintf, thus we just 'symlink' it here + * GNU-C-compatible compilers do not implement this, thus we implement it here + */ +#ifdef _MSC_VER +#define vscprintf _vscprintf +#endif + + +#ifdef _MSC_VER +int vasprintf(char **strp, const char *format, va_list ap); +#endif + +#ifdef __GNUC__ +int vscprintf(const char *format, va_list ap); +#endif + +char* fmtstr(const char *format, ...); +char *get_file_path(char *fname); +void solve(int problem_number, char *problem, char *solution); + +#endif diff --git a/Spring-2023/CS-2124/Assignment-1/src/src.c b/Spring-2023/CS-2124/Assignment-1/src/src.c new file mode 100644 index 0000000..6008fe3 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/src.c @@ -0,0 +1,6 @@ +#include "src.h" +#include + +void print_header() { + printf("%s\n", HEADER_LINE); +} diff --git a/Spring-2023/CS-2124/Assignment-1/src/src.h b/Spring-2023/CS-2124/Assignment-1/src/src.h new file mode 100644 index 0000000..749e741 --- /dev/null +++ b/Spring-2023/CS-2124/Assignment-1/src/src.h @@ -0,0 +1,22 @@ +#ifndef SRC_H +#define SRC_H +#define FNAME "Price.txt" +#define FIRST_NAME "Price" +#define LAST_NAME "Hiller" +#define LAST_THREE_DIGITS_ABC "106" +#define HEADER_LINE "Spring 2024 - CS2124 OC3, zfp106" +#include "lib/lib.h" +void c1(); +void c2(); +void c3(); +void c4(); +void c5(); +void c6(); +void c7(); +void c8(); +void c9(); +void c10(); +void c11(); +void c12(); +void print_header(); +#endif diff --git a/Spring-2023/CS-2233/TODO.org b/Spring-2023/CS-2233/TODO.org index 6662eb2..9b00fbe 100644 --- a/Spring-2023/CS-2233/TODO.org +++ b/Spring-2023/CS-2233/TODO.org @@ -1,4 +1,4 @@ -* TODO Assignment 1 +* DONE Assignment 1 DEADLINE: <2024-01-26 Fri> SCHEDULED: <2024-01-25 Thu> Complete Zybooks section ~1~ and the first homework assignment