summaryrefslogtreecommitdiff
path: root/projects/1
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2022-11-15 10:54:23 -0700
committermo khan <mo@mokhan.ca>2022-11-15 10:54:23 -0700
commit3abd4fa0ab1fe25b24eaf5d9c98efdff34bc848c (patch)
treeef1f3a0ec6ce27fdb69af41ef261466dc8ee9577 /projects/1
parent1e01cb0be0b42d336ca44cb34c4a4e216bd4a3f2 (diff)
add assignments and projects for course
Diffstat (limited to 'projects/1')
-rw-r--r--projects/1/GooddocsF.cpp131
-rw-r--r--projects/1/README.md33
2 files changed, 164 insertions, 0 deletions
diff --git a/projects/1/GooddocsF.cpp b/projects/1/GooddocsF.cpp
new file mode 100644
index 0000000..99915df
--- /dev/null
+++ b/projects/1/GooddocsF.cpp
@@ -0,0 +1,131 @@
+//: GoodDocs.cpp
+
+/*
+ Title: GoodDocsF.cpp
+ Description: Temperature Conversion Program
+ Date: December 8, 2013
+ Author: Richard S. Huntrods
+ Version: 1.0
+ Copyright: 2013 Richard S. Huntrods
+*/
+
+/*
+ DOCUMENTATION
+
+ Program Purpose:
+ Demonstrate proper format for documentation, test plans and comments.
+ Also demonstrate user prompts, keyboard input, simple calculations and output,
+ specifically converting temperatures from F to C.
+
+ Compile (assuming mingw compiler and opened command prompt): g++ -o GoodDocsF GoodDocsF.cpp
+ Execution (in a Command Prompt window): GoodDocsF.exe (or just GoodDocsF)
+
+ Classes: none
+
+ Variables:
+ input_units (char) = C or F to designate temperature units for the supplied input temperature.
+ output_units (char) = C or F to designate temperature units desired for the output conversion,
+ input_temp (float) = real (decimal) number supplied by user which is the input temperature.
+ output_temp (float) = calculated output temperature in output_units as a real (decimal) number.
+
+ Formulae:
+ The formula for converting temperatures from Fahrenheit to Celcius is:
+ T(C) = (T(F) - 32.0) * 5.0 / 9.0;
+ The formula for converting temperatures from Celcius to Fahrenheit is:
+ T(F) = (T(C) * 9.0 / 5.0) + 32.0
+
+ It is important to use decimal numbers especially in the division to avoid integer devision.
+ It is also important use use the parenthesis to enforce calculation order.
+*/
+
+/*
+ TEST PLAN
+
+ Normal case 1:
+ >What is the input temperature? 32
+ >What are the units of the input temperature (C for Celcius or F for Fahrenheit)? F
+ >Your input temperature is 32F which is 0C.
+
+ Normal case 2:
+ >What is the input temperature? 100
+ >What are the units of the input temperature (C for Celcius or F for Fahrenheit)? C
+ >Your input temperature is 100C which is 212F.
+
+ Bad Data case 1 (temperature out of range):
+ >What is the input temperature? -4000
+ >What are the units of the input temperature (C for Celcius or F for Fahrenheit)? C
+ >Your input temperature is -4000C which is out of range (less than -273.15C or -416F)..
+
+ Bad Data case 2 (incorrect units):
+ >What is the input temperature? -40
+ >What are the units of the input temperature (C for Celcius or F for Fahrenheit)? Q
+ >The units you have specified are not one of C (Celcius) or F (Fahrenheit).
+
+ Discussion:
+ The program accepts any integer or decimal input temperature and a unit character which must be either C, c, F or f.
+ The program then prints the input temperature as well as the temperature converted into the non-input units.
+ Temperature range is from -273C (-415F) to any positive number.
+
+*/
+
+#include <iostream> // Stream declarations
+using namespace std;
+
+int main(void) {
+ char input_units, output_units;
+ float input_temp, output_temp;
+ int error = 0;
+
+ // request and obtain name
+ cout << "What is the input temperature? ";
+ cin >> input_temp;
+
+ // request and obtain age
+ cout << "What are the units of the input temperature (C for Celcius or F for Fahrenheit)? ";
+ cin >> input_units;
+
+ // convert input units to upper case
+ input_units = toupper(input_units);
+
+ // check input_units for acceptable response; perform appropriate conversion if acceptable and print error message if not
+ if(input_units == 'C') {
+ // display input
+ cout << "Your input temperature is " << input_temp << input_units;
+
+ // range check input_temp
+ if(input_temp < -273) {
+ // disply out of range error message
+ cout << " which is out of range (less than -273C or -416F)." << endl;
+ }
+ else {
+ // convert from Celcius to Fahrenheit
+ output_units = 'F';
+ output_temp = (input_temp * 9.0) / (5.0 + 32.0);
+
+ // display converted output
+ cout << " which is " << output_temp << output_units << "." << endl;
+ }
+ }
+ else if(input_units == 'F') {
+ // display input
+ cout << "Your input temperature is " << input_temp << input_units;
+
+ // range check input_temp
+ if(input_temp < -416) {
+ // out of range
+ cout << " which is out of range (less than -273C or -416F)." << endl;
+ }
+ else {
+ // convert from Fahrenheit to Celcius
+ output_units = 'C';
+ output_temp = (input_temp - 32.0 * 5.0) / 9.0;
+
+ // display converted output
+ cout << " which is " << output_temp << output_units << "." << endl;
+ }
+ }
+ else {
+ // display input_unit error message
+ cout << "The units you have specified are not one of C (Celcius) or F (Fahrenheit)" << endl;
+ }
+} ///:~
diff --git a/projects/1/README.md b/projects/1/README.md
new file mode 100644
index 0000000..93a5b2d
--- /dev/null
+++ b/projects/1/README.md
@@ -0,0 +1,33 @@
+Project Instructions
+
+You will find detailed step-by-step instructions below on downloading and installing the compiler.
+However, the basic steps of the project are as follows:
+
+1. Download and install the MinGW compiler for C++.
+1. Compile the code file provided (GooddocsF.cpp).
+1. Test the resulting executable file. [The program is designed to produce temperature conversions.]
+1. Debug the program by correcting minor errors that have been deliberately placed in the temperature calculation formulas. Note: The formulas coded in the program are incorrect. The formulas in the program documentation at the start of the program are correct.
+1. Recompile the corrected code and retest the program.
+1. Submit the uncorrected and corrected versions of the program.
+
+
+Coding, Compiling, and Debugging
+
+1. Download the C++ code GooddocsF.cpp into your working directory.
+1. In the working directory compile the file GoodDocsF.cpp using the following command:
+
+ g++ -o GoodDocsF.exe GoodDocsF.cpp
+
+1. In the working directory, type GoodDocsF and observe the results. Note: the original program was purposely designed to produce temperature conversions with incorrect results.
+1. Open the file GoodDocsF.cpp in a text editor (e.g., Notepad) and modify the formulas as required to ensure correct output.
+1. Save the corrected file as GoodDocsF2.cpp in the working directory.
+1. Compile GoodDocsF2.cpp and generate GoodDocsF2.exe using the following command:
+
+ g++ -o GoodDocsF2.exe GoodDocsF2.cpp
+
+1. Run GoodDocsF2.exe by typing the command GoodDocsF2 to verify the output corresponding to the correct result.
+1. Submit the following complete programs to your Academic Expert for marking. Place all programs or files into one zipped folder, such as project1.zip, and submit it using the drop box on the course home page.
+ * GoodDocsF.cpp
+ * GoodDocsF.exe
+ * GoodDocsF2.cpp
+ * GoodDocsF2.exe