From 5088bded35b43cab0aafc7ea6b30248f5deb3fee Mon Sep 17 00:00:00 2001 From: Caleb Fontenot Date: Mon, 4 Mar 2024 11:54:27 -0600 Subject: [PATCH] get nullptr'd lol --- .gitignore | 2 + .../MP1_CalebFontenot/Printed HTMLs/main.html | 235 ++++++++++++++++++ Assignments/MP1_CalebFontenot/main.cpp | 160 +++++++++++- .../nbproject/Makefile-Debug.mk | 2 +- .../nbproject/configurations.xml | 4 + .../nbproject/private/configurations.xml | 3 +- Assignments/Pointers_CalebFontenot/.dep.inc | 5 + Assignments/Pointers_CalebFontenot/Makefile | 128 ++++++++++ Assignments/Pointers_CalebFontenot/main.cpp | 27 ++ .../nbproject/Makefile-Debug.mk | 89 +++++++ .../nbproject/Makefile-Release.mk | 89 +++++++ .../nbproject/Makefile-impl.mk | 133 ++++++++++ .../nbproject/Makefile-variables.mk | 35 +++ .../nbproject/Package-Debug.bash | 76 ++++++ .../nbproject/Package-Release.bash | 76 ++++++ .../nbproject/configurations.xml | 76 ++++++ .../nbproject/private/Makefile-variables.mk | 7 + .../private/c_standard_headers_indexer.c | 75 ++++++ .../nbproject/private/configurations.xml | 72 ++++++ .../private/cpp_standard_headers_indexer.cpp | 135 ++++++++++ .../nbproject/private/launcher.properties | 42 ++++ .../nbproject/private/private.xml | 7 + .../nbproject/project.xml | 28 +++ .../Pointers_CalebFontenot/pointers1.cpp | 24 ++ .../Pointers_CalebFontenot/pointers1.h | 20 ++ ZIPs/MP1_CalebFontenot.zip | Bin 0 -> 22569 bytes 26 files changed, 1540 insertions(+), 10 deletions(-) create mode 100644 Assignments/MP1_CalebFontenot/Printed HTMLs/main.html create mode 100644 Assignments/Pointers_CalebFontenot/.dep.inc create mode 100644 Assignments/Pointers_CalebFontenot/Makefile create mode 100644 Assignments/Pointers_CalebFontenot/main.cpp create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/Makefile-Debug.mk create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/Makefile-Release.mk create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/Makefile-impl.mk create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/Makefile-variables.mk create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/Package-Debug.bash create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/Package-Release.bash create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/configurations.xml create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/private/Makefile-variables.mk create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/private/c_standard_headers_indexer.c create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/private/configurations.xml create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/private/cpp_standard_headers_indexer.cpp create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/private/launcher.properties create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/private/private.xml create mode 100644 Assignments/Pointers_CalebFontenot/nbproject/project.xml create mode 100644 Assignments/Pointers_CalebFontenot/pointers1.cpp create mode 100644 Assignments/Pointers_CalebFontenot/pointers1.h create mode 100644 ZIPs/MP1_CalebFontenot.zip diff --git a/.gitignore b/.gitignore index 434f0d0..cb6080d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ /Assignments/MP1_CalebFontenot/dist/ /Assignments/MP2_CalebFontenot/build/ /Assignments/MP2_CalebFontenot/dist/ +/Assignments/Pointers_CalebFontenot/build/ +/Assignments/Pointers_CalebFontenot/dist/ diff --git a/Assignments/MP1_CalebFontenot/Printed HTMLs/main.html b/Assignments/MP1_CalebFontenot/Printed HTMLs/main.html new file mode 100644 index 0000000..b7fad3c --- /dev/null +++ b/Assignments/MP1_CalebFontenot/Printed HTMLs/main.html @@ -0,0 +1,235 @@ + + + +main.cpp + + + + +
/home/caleb/ASDV-Cpp/Assignments/MP1_CalebFontenot/main.cpp
+
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/cppFiles/main.cc to edit this template
+ */
+
+/* 
+ * File:   main.cpp
+ * Author: caleb
+ *
+ * Created on February 26, 2024, 11:30 AM
+ */
+#include <iomanip>
+#include <cstdlib>
+#include <iostream>
+#include <tuple>
+#include <cmath>
+#include <boost/algorithm/string.hpp>
+#include <regex>
+#include <vector>
+using namespace std;
+
+/*
+ * 
+ */
+
+int milesPerGallon(int gallons, int milesDriven) {
+    return milesDriven / gallons;
+}
+
+std::tuple<double, double> maleFemalePercentages(int maleStudents, int femaleStudents) {
+    int totalStudents = maleStudents + femaleStudents;
+    double malePercentage = (double) maleStudents / totalStudents;
+    double femalePercentage = (double) femaleStudents / totalStudents;
+    return {malePercentage, femalePercentage};
+}
+
+double celciusToFahrenheit(double celcius) {
+    return 9.0 / 5.0 * celcius + 32.0;
+}
+
+std::string getMonthName(int month) {
+    std::string returnString = "";
+    switch (month) {
+        case 1:
+            returnString = "January";
+            break;
+        case 2:
+            returnString = "February";
+            break;
+        case 3:
+            returnString = "March";
+            break;
+        case 4:
+            returnString = "April";
+            break;
+        case 5:
+            returnString = "May";
+            break;
+        case 6:
+            returnString = "June";
+            break;
+        case 7:
+            returnString = "July";
+            break;
+        case 8:
+            returnString = "August";
+            break;
+        case 9:
+            returnString = "September";
+            break;
+        case 10:
+            returnString = "October";
+        case 11:
+            returnString = "November";
+            break;
+        case 12:
+            returnString = "December";
+            break;
+    }
+    return returnString;
+}
+
+void prettyPrintSalesTax(int month, int year, int total, double totalIncome, double stateSalesTax, double countySalesTax, double totalSalesTax) {
+    printf("%s %d\n", getMonthName(month).c_str(), year);
+    printf("---------------------------------------\n");
+    printf("Total collected:%*c$ %.2f\n", 5, totalIncome);
+    printf("Sales:%*c$ %.2f\n", 16, stateSalesTax);
+    printf("County Sales tax:%*c$ %.2f\n", 5, countySalesTax);
+    printf("Total sales tax:%*c$ %.2f\n", 6, totalSalesTax);
+}
+
+void monthlySalesTax(int month, int year, double total) {
+    double totalIncome = total / 1.06;
+    double stateSalesTax = total * 0.04;
+    double countySalesTax = total * 0.02;
+    double totalSalesTax = stateSalesTax + countySalesTax;
+    prettyPrintSalesTax(month, year, total, totalIncome, stateSalesTax, countySalesTax, totalSalesTax);
+}
+
+bool is_integer(const std::string & s) {
+    return std::regex_match(s, std::regex("[-+]?[0-9]+"));
+}
+
+void mathTutor() {
+    string userInput = "";
+    int rand1, rand2 = 0;
+    do {
+        cout << "Enter Q/q to quit." << endl;
+        rand1 = (rand() % 100);
+        rand2 = (rand() % 100);
+        cout << "What's " << rand1 << " + " << rand2 << "?" << endl;
+        cin >> userInput;
+        boost::algorithm::to_lower(userInput);
+
+        if (is_integer(userInput)) {
+            if (rand1 + rand2 == stoi(userInput)) {
+                cout << "You are correct!" << endl;
+            } else {
+                cout << "Sorry, the answer is " << (rand1 + rand2) << ". Try again." << endl;
+            }
+        }
+    } while (userInput.compare("q") != 0);
+}
+
+void prettyPrintMonthlyPayments(double payment, double rate, double numOfPayments, double loanAmount, double annualRate, double amountPaid, double amountPaidBack) {
+    printf("---------------------------------------\n");
+    printf("Loan amount:%*c$ %.2f\n", 15, loanAmount);
+    printf("Monthly Interest Rate:%*c%.0f%%\n", 14, rate);
+    printf("Number of Payments:%*c%.0f\n", 17, numOfPayments);
+    printf("Monthly Payment:%*c$ %.2f\n", 12, payment);
+    printf("Amount Paid Back:%*c$ %.2f\n", 11, amountPaidBack);
+    printf("Interest Paid:%*c$  %.2f\n", 14, amountPaid);
+}
+
+void monthlyPayments(double annualRate, double numOfPayments, double loanAmount, double amountPaid, double amountPaidBack) {
+    double rate = (annualRate / 12.0);
+    double topHalf = rate * pow((1.0 + rate), numOfPayments);
+    double bottomHalf = pow((1.0 + rate), numOfPayments) - 1.0;
+    double payment = (topHalf / bottomHalf) * loanAmount;
+    prettyPrintMonthlyPayments(payment, rate, numOfPayments, loanAmount, annualRate, amountPaid, amountPaidBack);
+}
+
+// Function to replace placeholders in the story with user inputs
+std::string replacePlaceholders(const std::string& story, const std::vector<std::string>& inputs) {
+    std::string result = story;
+    std::regex placeholderRegex("<([^>]+)>");
+    auto inputIter = inputs.begin();
+
+    for (std::sregex_iterator iter(story.begin(), story.end(), placeholderRegex), end; iter != end; ++iter) {
+        const std::string& placeholder = iter->str();
+        if (inputIter != inputs.end()) {
+            result.replace(result.find(placeholder), placeholder.length(), *inputIter);
+            ++inputIter;
+        } else {
+            // Handle the case where there are more placeholders than inputs
+            break;
+        }
+    }
+    return result;
+}
+
+void madLib() {
+    string storyTemplate = "There once was a person named <name> who lived in <city>. At the age of <age>, <name> went to a collage at <college>. <Name> graduated and went to work as a <profession>. Then, <name> adopted a(n) <animal> named <pet name>. They both lived happily ever after!";
+    
+    std::regex placeholderRegex("<([^>]+)>");
+    std::vector<std::string> placeholders;
+    for (std::sregex_iterator iter(storyTemplate.begin(), storyTemplate.end(), placeholderRegex), end; iter != end; ++iter) {
+        placeholders.push_back(iter->str());
+    }
+    
+    std::vector<std::string> inputs;
+    for (const auto& placeholder : placeholders) {
+        std::string input;
+        std::cout << "Enter " << placeholder << ": ";
+        std::getline(std::cin, input);
+        inputs.push_back(input);
+    }
+    
+     // Replace placeholders with user inputs and print the complete story
+    std::string completedStory = replacePlaceholders(storyTemplate, inputs);
+    std::cout << "Completed story:\n" << completedStory << std::endl;
+    
+}
+
+int main(int argc, char** argv) {
+    cout << "The car that drove 375 miles and burned 15 gallons of gasoline consumed the fuel at a rate of " << milesPerGallon(15, 375) << " MPG.\n";
+    int maleStudents, femaleStudents = 0;
+    //double malePercentage, femalePercentage = 0.0;
+    cout << "Enter the number of male students, followed by the number of female students: ";
+    //cin >> maleStudents >> femaleStudents;
+    //auto [malePercentage, femalePercentage] = maleFemalePercentages(maleStudents, femaleStudents);
+    //cout << "The ratio of male to female students is " << setprecision(2) << (malePercentage * 10) << "/" << setprecision(2) <<(femalePercentage * 10) << endl;
+    cout << "0C is " << std::to_string(celciusToFahrenheit(0)) << "F." << endl;
+    cout << "100C is " << std::to_string(celciusToFahrenheit(100)) << "F." << endl;
+    cout << "23.8889C is " << std::to_string(celciusToFahrenheit(23.8889)) << "F." << endl;
+    monthlySalesTax(3, 2024, 100000.08);
+    //mathTutor();
+    monthlyPayments(12, 36, 10000.00, 1957.15, 11957.15);
+    madLib();
+    return 0;
+}
+
+
+
+ diff --git a/Assignments/MP1_CalebFontenot/main.cpp b/Assignments/MP1_CalebFontenot/main.cpp index e7a28ee..f4c1566 100644 --- a/Assignments/MP1_CalebFontenot/main.cpp +++ b/Assignments/MP1_CalebFontenot/main.cpp @@ -14,7 +14,9 @@ #include #include #include - +#include +#include +#include using namespace std; /* @@ -26,7 +28,7 @@ int milesPerGallon(int gallons, int milesDriven) { } std::tuple maleFemalePercentages(int maleStudents, int femaleStudents) { - int totalStudents = maleStudents + femaleStudents; + int totalStudents = maleStudents + femaleStudents; double malePercentage = (double) maleStudents / totalStudents; double femalePercentage = (double) femaleStudents / totalStudents; return {malePercentage, femalePercentage}; @@ -36,7 +38,147 @@ double celciusToFahrenheit(double celcius) { return 9.0 / 5.0 * celcius + 32.0; } -double monthlySalesTax(int month, int year, double total) { +std::string getMonthName(int month) { + std::string returnString = ""; + switch (month) { + case 1: + returnString = "January"; + break; + case 2: + returnString = "February"; + break; + case 3: + returnString = "March"; + break; + case 4: + returnString = "April"; + break; + case 5: + returnString = "May"; + break; + case 6: + returnString = "June"; + break; + case 7: + returnString = "July"; + break; + case 8: + returnString = "August"; + break; + case 9: + returnString = "September"; + break; + case 10: + returnString = "October"; + case 11: + returnString = "November"; + break; + case 12: + returnString = "December"; + break; + } + return returnString; +} + +void prettyPrintSalesTax(int month, int year, int total, double totalIncome, double stateSalesTax, double countySalesTax, double totalSalesTax) { + printf("%s %d\n", getMonthName(month).c_str(), year); + printf("---------------------------------------\n"); + printf("Total collected:%*c$ %.2f\n", 5, totalIncome); + printf("Sales:%*c$ %.2f\n", 16, stateSalesTax); + printf("County Sales tax:%*c$ %.2f\n", 5, countySalesTax); + printf("Total sales tax:%*c$ %.2f\n", 6, totalSalesTax); +} + +void monthlySalesTax(int month, int year, double total) { + double totalIncome = total / 1.06; + double stateSalesTax = total * 0.04; + double countySalesTax = total * 0.02; + double totalSalesTax = stateSalesTax + countySalesTax; + prettyPrintSalesTax(month, year, total, totalIncome, stateSalesTax, countySalesTax, totalSalesTax); +} + +bool is_integer(const std::string & s) { + return std::regex_match(s, std::regex("[-+]?[0-9]+")); +} + +void mathTutor() { + string userInput = ""; + int rand1, rand2 = 0; + do { + cout << "Enter Q/q to quit." << endl; + rand1 = (rand() % 100); + rand2 = (rand() % 100); + cout << "What's " << rand1 << " + " << rand2 << "?" << endl; + cin >> userInput; + boost::algorithm::to_lower(userInput); + + if (is_integer(userInput)) { + if (rand1 + rand2 == stoi(userInput)) { + cout << "You are correct!" << endl; + } else { + cout << "Sorry, the answer is " << (rand1 + rand2) << ". Try again." << endl; + } + } + } while (userInput.compare("q") != 0); +} + +void prettyPrintMonthlyPayments(double payment, double rate, double numOfPayments, double loanAmount, double annualRate, double amountPaid, double amountPaidBack) { + printf("---------------------------------------\n"); + printf("Loan amount:%*c$ %.2f\n", 15, loanAmount); + printf("Monthly Interest Rate:%*c%.0f%%\n", 14, rate); + printf("Number of Payments:%*c%.0f\n", 17, numOfPayments); + printf("Monthly Payment:%*c$ %.2f\n", 12, payment); + printf("Amount Paid Back:%*c$ %.2f\n", 11, amountPaidBack); + printf("Interest Paid:%*c$ %.2f\n", 14, amountPaid); +} + +void monthlyPayments(double annualRate, double numOfPayments, double loanAmount, double amountPaid, double amountPaidBack) { + double rate = (annualRate / 12.0); + double topHalf = rate * pow((1.0 + rate), numOfPayments); + double bottomHalf = pow((1.0 + rate), numOfPayments) - 1.0; + double payment = (topHalf / bottomHalf) * loanAmount; + prettyPrintMonthlyPayments(payment, rate, numOfPayments, loanAmount, annualRate, amountPaid, amountPaidBack); +} + +// Function to replace placeholders in the story with user inputs +std::string replacePlaceholders(const std::string& story, const std::vector& inputs) { + std::string result = story; + std::regex placeholderRegex("<([^>]+)>"); + auto inputIter = inputs.begin(); + + for (std::sregex_iterator iter(story.begin(), story.end(), placeholderRegex), end; iter != end; ++iter) { + const std::string& placeholder = iter->str(); + if (inputIter != inputs.end()) { + result.replace(result.find(placeholder), placeholder.length(), *inputIter); + ++inputIter; + } else { + // Handle the case where there are more placeholders than inputs + break; + } + } + return result; +} + +void madLib() { + string storyTemplate = "There once was a person named who lived in . At the age of , went to a collage at . graduated and went to work as a . Then, adopted a(n) named . They both lived happily ever after!"; + + std::regex placeholderRegex("<([^>]+)>"); + std::vector placeholders; + for (std::sregex_iterator iter(storyTemplate.begin(), storyTemplate.end(), placeholderRegex), end; iter != end; ++iter) { + placeholders.push_back(iter->str()); + } + + std::vector inputs; + for (const auto& placeholder : placeholders) { + std::string input; + std::cout << "Enter " << placeholder << ": "; + std::getline(std::cin, input); + inputs.push_back(input); + } + + // Replace placeholders with user inputs and print the complete story + std::string completedStory = replacePlaceholders(storyTemplate, inputs); + std::cout << "Completed story:\n" << completedStory << std::endl; } @@ -45,14 +187,16 @@ int main(int argc, char** argv) { int maleStudents, femaleStudents = 0; //double malePercentage, femalePercentage = 0.0; cout << "Enter the number of male students, followed by the number of female students: "; - cin >> maleStudents >> femaleStudents; - auto [malePercentage, femalePercentage] = maleFemalePercentages(maleStudents, femaleStudents); - cout << "The ratio of male to female students is " << setprecision(2) << (malePercentage * 10) << "/" << setprecision(2) <<(femalePercentage * 10) << endl; + //cin >> maleStudents >> femaleStudents; + //auto [malePercentage, femalePercentage] = maleFemalePercentages(maleStudents, femaleStudents); + //cout << "The ratio of male to female students is " << setprecision(2) << (malePercentage * 10) << "/" << setprecision(2) <<(femalePercentage * 10) << endl; cout << "0C is " << std::to_string(celciusToFahrenheit(0)) << "F." << endl; cout << "100C is " << std::to_string(celciusToFahrenheit(100)) << "F." << endl; cout << "23.8889C is " << std::to_string(celciusToFahrenheit(23.8889)) << "F." << endl; - - + monthlySalesTax(3, 2024, 100000.08); + //mathTutor(); + monthlyPayments(12, 36, 10000.00, 1957.15, 11957.15); + madLib(); return 0; } diff --git a/Assignments/MP1_CalebFontenot/nbproject/Makefile-Debug.mk b/Assignments/MP1_CalebFontenot/nbproject/Makefile-Debug.mk index 16d41ef..c1f00bf 100644 --- a/Assignments/MP1_CalebFontenot/nbproject/Makefile-Debug.mk +++ b/Assignments/MP1_CalebFontenot/nbproject/Makefile-Debug.mk @@ -39,7 +39,7 @@ OBJECTFILES= \ # C Compiler Flags -CFLAGS= +CFLAGS=march=x86-64-v3 -O2 -lto # CC Compiler Flags CCFLAGS= diff --git a/Assignments/MP1_CalebFontenot/nbproject/configurations.xml b/Assignments/MP1_CalebFontenot/nbproject/configurations.xml index 3175ba1..3201c40 100644 --- a/Assignments/MP1_CalebFontenot/nbproject/configurations.xml +++ b/Assignments/MP1_CalebFontenot/nbproject/configurations.xml @@ -35,6 +35,10 @@ false + + true + march=x86-64-v3 -O2 -lto + diff --git a/Assignments/MP1_CalebFontenot/nbproject/private/configurations.xml b/Assignments/MP1_CalebFontenot/nbproject/private/configurations.xml index 51f948c..ae2eed4 100644 --- a/Assignments/MP1_CalebFontenot/nbproject/private/configurations.xml +++ b/Assignments/MP1_CalebFontenot/nbproject/private/configurations.xml @@ -13,6 +13,8 @@ + + @@ -33,7 +35,6 @@ "${OUTPUT_PATH}" true - 2 0 0 diff --git a/Assignments/Pointers_CalebFontenot/.dep.inc b/Assignments/Pointers_CalebFontenot/.dep.inc new file mode 100644 index 0000000..38ba445 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/.dep.inc @@ -0,0 +1,5 @@ +# This code depends on make tool being used +DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES} ${TESTOBJECTFILES})) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/Assignments/Pointers_CalebFontenot/Makefile b/Assignments/Pointers_CalebFontenot/Makefile new file mode 100644 index 0000000..05de621 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: build-tests +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/Assignments/Pointers_CalebFontenot/main.cpp b/Assignments/Pointers_CalebFontenot/main.cpp new file mode 100644 index 0000000..c91aad9 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/main.cpp @@ -0,0 +1,27 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/cppFiles/main.cc to edit this template + */ + +/* + * File: main.cpp + * Author: caleb + * + * Created on March 4, 2024, 11:07 AM + */ + +#include +#include + +using namespace std; +#include "pointers1.h" + +/* + * + */ +int main(int argc, char** argv) { + dereferencePointer(); + if (p == nullptr) + return 0; +} + diff --git a/Assignments/Pointers_CalebFontenot/nbproject/Makefile-Debug.mk b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..ae06ffe --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-Debug.mk @@ -0,0 +1,89 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/main.o \ + ${OBJECTDIR}/pointers1.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/main.o: main.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + +${OBJECTDIR}/pointers1.o: pointers1.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/pointers1.o pointers1.cpp + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/Assignments/Pointers_CalebFontenot/nbproject/Makefile-Release.mk b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..33d2f5d --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-Release.mk @@ -0,0 +1,89 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/main.o \ + ${OBJECTDIR}/pointers1.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/main.o: main.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + +${OBJECTDIR}/pointers1.o: pointers1.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/pointers1.o pointers1.cpp + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/Assignments/Pointers_CalebFontenot/nbproject/Makefile-impl.mk b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..65fd8db --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=Pointers_CalebFontenot + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/Assignments/Pointers_CalebFontenot/nbproject/Makefile-variables.mk b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..1f3155a --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/Makefile-variables.mk @@ -0,0 +1,35 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux +CND_ARTIFACT_NAME_Debug=pointers_calebfontenot +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/pointers_calebfontenot +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package +CND_PACKAGE_NAME_Debug=pointerscalebfontenot.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/pointerscalebfontenot.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux +CND_ARTIFACT_NAME_Release=pointers_calebfontenot +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/pointers_calebfontenot +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package +CND_PACKAGE_NAME_Release=pointerscalebfontenot.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/pointerscalebfontenot.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/Assignments/Pointers_CalebFontenot/nbproject/Package-Debug.bash b/Assignments/Pointers_CalebFontenot/nbproject/Package-Debug.bash new file mode 100644 index 0000000..1cd8595 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/Package-Debug.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot +OUTPUT_BASENAME=pointers_calebfontenot +PACKAGE_TOP_DIR=pointerscalebfontenot/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/pointerscalebfontenot/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pointerscalebfontenot.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pointerscalebfontenot.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/Assignments/Pointers_CalebFontenot/nbproject/Package-Release.bash b/Assignments/Pointers_CalebFontenot/nbproject/Package-Release.bash new file mode 100644 index 0000000..2df794e --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/Package-Release.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pointers_calebfontenot +OUTPUT_BASENAME=pointers_calebfontenot +PACKAGE_TOP_DIR=pointerscalebfontenot/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/pointerscalebfontenot/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pointerscalebfontenot.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pointerscalebfontenot.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/Assignments/Pointers_CalebFontenot/nbproject/configurations.xml b/Assignments/Pointers_CalebFontenot/nbproject/configurations.xml new file mode 100644 index 0000000..98a1c6b --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/configurations.xml @@ -0,0 +1,76 @@ + + + + + pointers1.h + + + + + main.cpp + pointers1.cpp + + + + + Makefile + + + Makefile + + + + default + true + false + + + + + + + + + + + + + default + true + false + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + + + + diff --git a/Assignments/Pointers_CalebFontenot/nbproject/private/Makefile-variables.mk b/Assignments/Pointers_CalebFontenot/nbproject/private/Makefile-variables.mk new file mode 100644 index 0000000..a64183e --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/private/Makefile-variables.mk @@ -0,0 +1,7 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +# Debug configuration +# Release configuration diff --git a/Assignments/Pointers_CalebFontenot/nbproject/private/c_standard_headers_indexer.c b/Assignments/Pointers_CalebFontenot/nbproject/private/c_standard_headers_indexer.c new file mode 100644 index 0000000..c2548d2 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/private/c_standard_headers_indexer.c @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/c/header + +#include // Conditionally compiled macro that compares its argument to zero +#include // Functions to determine the type contained in character data +#include // Macros reporting error conditions +#include // Limits of float types +#include // Sizes of basic types +#include // Localization utilities +#include // Common mathematics functions +#include // Nonlocal jumps +#include // Signal handling +#include // Variable arguments +#include // Common macro definitions +#include // Input/output +#include // String handling +#include // General utilities: memory management, program utilities, string conversions, random numbers +#include // Time/date utilities +#include // (since C95) Alternative operator spellings +#include // (since C95) Extended multibyte and wide character utilities +#include // (since C95) Wide character classification and mapping utilities +#ifdef _STDC_C99 +#include // (since C99) Complex number arithmetic +#include // (since C99) Floating-point environment +#include // (since C99) Format conversion of integer types +#include // (since C99) Boolean type +#include // (since C99) Fixed-width integer types +#include // (since C99) Type-generic math (macros wrapping math.h and complex.h) +#endif +#ifdef _STDC_C11 +#include // (since C11) alignas and alignof convenience macros +#include // (since C11) Atomic types +#include // (since C11) noreturn convenience macros +#include // (since C11) Thread library +#include // (since C11) UTF-16 and UTF-32 character utilities +#endif diff --git a/Assignments/Pointers_CalebFontenot/nbproject/private/configurations.xml b/Assignments/Pointers_CalebFontenot/nbproject/private/configurations.xml new file mode 100644 index 0000000..30b54f8 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/private/configurations.xml @@ -0,0 +1,72 @@ + + + Makefile + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + diff --git a/Assignments/Pointers_CalebFontenot/nbproject/private/cpp_standard_headers_indexer.cpp b/Assignments/Pointers_CalebFontenot/nbproject/private/cpp_standard_headers_indexer.cpp new file mode 100644 index 0000000..04f6fa6 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/private/cpp_standard_headers_indexer.cpp @@ -0,0 +1,135 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/cpp/header + +#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search +#include // Functions and macro constants for signal management +#include // Macro (and function) that saves (and jumps) to an execution context +#include // Handling of variable length argument lists +#include // Runtime type information utilities +#include // std::bitset class template +#include // Function objects, designed for use with the standard algorithms +#include // Various utility components +#include // C-style time/date utilites +#include // typedefs for types such as size_t, NULL and others +#include // Low-level memory management utilities +#include // Higher level memory management utilities +#include // limits of integral types +#include // limits of float types +#include // standardized way to query properties of arithmetic types +#include // Exception handling utilities +#include // Standard exception objects +#include // Conditionally compiled macro that compares its argument to zero +#include // Macro containing the last error number +#include // functions to determine the type contained in character data +#include // functions for determining the type of wide character data +#include // various narrow character string handling functions +#include // various wide and multibyte string handling functions +#include // std::basic_string class template +#include // std::vector container +#include // std::deque container +#include // std::list container +#include // std::set and std::multiset associative containers +#include // std::map and std::multimap associative containers +#include // std::stack container adaptor +#include // std::queue and std::priority_queue container adaptors +#include // Algorithms that operate on containers +#include // Container iterators +#include // Common mathematics functions +#include // Complex number type +#include // Class for representing and manipulating arrays of values +#include // Numeric operations on values in containers +#include // forward declarations of all classes in the input/output library +#include // std::ios_base class, std::basic_ios class template and several typedefs +#include // std::basic_istream class template and several typedefs +#include // std::basic_ostream, std::basic_iostream class templates and several typedefs +#include // several standard stream objects +#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs +#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs +#include // std::strstream, std::istrstream, std::ostrstream(deprecated) +#include // Helper functions to control the format or input and output +#include // std::basic_streambuf class template +#include // C-style input-output functions +#include // Localization utilities +#include // C localization utilities +#include // empty header. The macros that appear in iso646.h in C are keywords in C++ +#if __cplusplus >= 201103L +#include // (since C++11) std::type_index +#include // (since C++11) Compile-time type information +#include // (since C++11) C++ time utilites +#include // (since C++11) std::initializer_list class template +#include // (since C++11) std::tuple class template +#include // (since C++11) Nested allocator class +#include // (since C++11) fixed-size types and limits of other types +#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions +#include // (since C++11) defines std::error_code, a platform-dependent error code +#include // (since C++11) C-style Unicode character conversion functions +#include // (since C++11) std::array container +#include // (since C++11) std::forward_list container +#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers +#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers +#include // (since C++11) Random number generators and distributions +#include // (since C++11) Compile-time rational arithmetic +#include // (since C++11) Floating-point environment access functions +#include // (since C++11) Unicode conversion facilities +#include // (since C++11) Classes, algorithms and iterators to support regular expression processing +#include // (since C++11) Atomic operations library +#include // (since C++11)(deprecated in C++17) simply includes the header +#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11) std::thread class and supporting functions +#include // (since C++11) mutual exclusion primitives +#include // (since C++11) primitives for asynchronous computations +#include // (since C++11) thread waiting conditions +#endif +#if __cplusplus >= 201300L +#include // (since C++14) shared mutual exclusion primitives +#endif +#if __cplusplus >= 201500L +#include // (since C++17) std::any class template +#include // (since C++17) std::optional class template +#include // (since C++17) std::variant class template +#include // (since C++17) Polymorphic allocators and memory resources +#include // (since C++17) std::basic_string_view class template +#include // (since C++17) Predefined execution policies for parallel versions of the algorithms +#include // (since C++17) std::path class and supporting functions +#endif diff --git a/Assignments/Pointers_CalebFontenot/nbproject/private/launcher.properties b/Assignments/Pointers_CalebFontenot/nbproject/private/launcher.properties new file mode 100644 index 0000000..3edc2d8 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/private/launcher.properties @@ -0,0 +1,42 @@ +# Launchers File syntax: +# +# [Must-have property line] +# launcher1.runCommand= +# [Optional extra properties] +# launcher1.displayName= +# launcher1.hide= +# launcher1.buildCommand= +# launcher1.runDir= +# launcher1.runInOwnTab= +# launcher1.symbolFiles= +# launcher1.env.= +# (If this value is quoted with ` it is handled as a native command which execution result will become the value) +# [Common launcher properties] +# common.runDir= +# (This value is overwritten by a launcher specific runDir value if the latter exists) +# common.env.= +# (Environment variables from common launcher are merged with launcher specific variables) +# common.symbolFiles= +# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) +# +# In runDir, symbolFiles and env fields you can use these macroses: +# ${PROJECT_DIR} - project directory absolute path +# ${OUTPUT_PATH} - linker output path (relative to project directory path) +# ${OUTPUT_BASENAME}- linker output filename +# ${TESTDIR} - test files directory (relative to project directory path) +# ${OBJECTDIR} - object files directory (relative to project directory path) +# ${CND_DISTDIR} - distribution directory (relative to project directory path) +# ${CND_BUILDDIR} - build directory (relative to project directory path) +# ${CND_PLATFORM} - platform name +# ${CND_CONF} - configuration name +# ${CND_DLIB_EXT} - dynamic library extension +# +# All the project launchers must be listed in the file! +# +# launcher1.runCommand=... +# launcher2.runCommand=... +# ... +# common.runDir=... +# common.env.KEY=VALUE + +# launcher1.runCommand= \ No newline at end of file diff --git a/Assignments/Pointers_CalebFontenot/nbproject/private/private.xml b/Assignments/Pointers_CalebFontenot/nbproject/private/private.xml new file mode 100644 index 0000000..63a27a8 --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/private/private.xml @@ -0,0 +1,7 @@ + + + + 1 + 0 + + diff --git a/Assignments/Pointers_CalebFontenot/nbproject/project.xml b/Assignments/Pointers_CalebFontenot/nbproject/project.xml new file mode 100644 index 0000000..da9233e --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/nbproject/project.xml @@ -0,0 +1,28 @@ + + + org.netbeans.modules.cnd.makeproject + + + Pointers_CalebFontenot + + cpp + h + UTF-8 + + + + + Debug + 1 + + + Release + 1 + + + + false + + + + diff --git a/Assignments/Pointers_CalebFontenot/pointers1.cpp b/Assignments/Pointers_CalebFontenot/pointers1.cpp new file mode 100644 index 0000000..3775dfd --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/pointers1.cpp @@ -0,0 +1,24 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/cppFiles/file.cc to edit this template + */ + +#include +using namespace std; +#include "pointers1.h" + +void dereferencePointer() { + int x = 5; + int * p = &x; + int & r = x; + // dereference pointer + cout << *p << " " << p << " " << x << " " << &x << " " << r << " " << &r << endl; +} + +int * createAnIntegerOnHeap(int x) { + int * p = new int; + if (p == nullptr) { + return nullptr; + } + return p; +} \ No newline at end of file diff --git a/Assignments/Pointers_CalebFontenot/pointers1.h b/Assignments/Pointers_CalebFontenot/pointers1.h new file mode 100644 index 0000000..7a829fa --- /dev/null +++ b/Assignments/Pointers_CalebFontenot/pointers1.h @@ -0,0 +1,20 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/cppFiles/file.h to edit this template + */ + +/* + * File: pointers1.h + * Author: caleb + * + * Created on March 4, 2024, 11:18 AM + */ + +#ifndef POINTERS1_H +#define POINTERS1_H + +void dereferencePointer(); +int * createAnIntegerOnHeap(int x); + +#endif /* POINTERS1_H */ + diff --git a/ZIPs/MP1_CalebFontenot.zip b/ZIPs/MP1_CalebFontenot.zip new file mode 100644 index 0000000000000000000000000000000000000000..5febd177e6cf1e82e37f4f9401d5b3d04ed1a6f9 GIT binary patch literal 22569 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 literal 0 HcmV?d00001