summaryrefslogtreecommitdiff
path: root/CPP/Basics/flow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/Basics/flow.cpp')
-rw-r--r--CPP/Basics/flow.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/CPP/Basics/flow.cpp b/CPP/Basics/flow.cpp
new file mode 100644
index 0000000..82b7062
--- /dev/null
+++ b/CPP/Basics/flow.cpp
@@ -0,0 +1,117 @@
+#include <iostream>
+#include <vector>
+
+void ifs(void) {
+ int a = 1024;
+ bool flag = false;
+ char letter = 'E';
+
+ if (a > 1000)
+ std::cout << "Warning: over 1k" << std::endl;
+
+ if (a % 2)
+ std::cout << "a is odd" << std::endl;
+ else
+ std::cout << "a is even" << std::endl;
+
+ std::cout << "The letter " << letter << " is ";
+
+ if (letter != 'a' && letter != 'e' && letter != 'i' &&
+ letter != 'o' && letter != 'u' &&
+ letter != 'A' && letter != 'E' && letter != 'I' &&
+ letter != 'O' && letter != 'U')
+ std::cout << "not ";
+ std::cout << "a vowel" << std::endl;
+
+ if (flag)
+ std::cout << "The flag is true." << std::endl;
+}
+
+void switches() {
+
+ float num1, num2, result;
+ char op;
+
+ std::cout << "Enter operand 1: " << std::endl;
+ std::cin >> num1;
+ std::cout << "Enter operand 2: " << std::endl;
+ std::cin >> num2;
+ std::cout << "Choose operation: + - * /: " << std::endl;
+ std::cin >> op;
+
+ switch (op) {
+ case '+':
+ result = num1 + num2;
+ break;
+ case '-':
+ result = num1 - num2;
+ break;
+ case '*':
+ result = num1 * num2;
+ break;
+ case '/':
+ result = num1 / num2;
+ break;
+ default:
+ std::cout << "Invalid Operation." << std::endl;
+ return;
+ }
+ std::cout << "The result is: " << result << std::endl;
+}
+
+void LWhile() {
+
+
+ // Declare and initialize a vector and an iterator
+ // in this case iterator is a type inside vector class
+ std::vector<int> numbers = {12, 25, 31, 55, 24, 32, 99};
+ std::vector<int>::iterator ptr = numbers.begin();
+
+ // We can use auto type to avoid the mess up above:
+ auto ptr_auto = numbers.begin();
+ int i = 0;
+
+ while (ptr != numbers.end()) {
+ std::cout << *ptr << " ";
+ ptr = std::next(ptr, 1);
+ }
+ std::cout << std::endl;
+ do {
+ std::cout << numbers[i] << ":" << *ptr_auto << " ";
+ i++;
+ ptr_auto = std::next(ptr_auto, 1);
+ }while(i < numbers.size());
+ std::cout << std::endl;
+}
+
+void LFor() {
+ std::vector<int> numbers = {12, 25, 31, 55, 24, 32, 99};
+ std::vector<int>::iterator ptr = numbers.begin();
+ float avg = 0;
+
+ for(int i = 0; i < numbers.size() ; i++)
+ avg += numbers[i];
+
+ avg /= numbers.size();
+ std::cout << "The average is: " << avg << std::endl;
+
+ // C++11 Iterator based for
+ avg = 0;
+
+ // The iterator will copy the data from each element within the vector,
+ // to the iterator variable (iter) here. We may want to access by
+ // reference instead of copying it
+ // READ AS: for each iter in numbers
+ for(int iter : numbers)
+ avg += iter;
+ avg /= numbers.size();
+ std::cout << "The average is: " << avg << std::endl;
+}
+
+int main(void) {
+ ifs();
+ switches();
+ LWhile();
+ LFor();
+ return 0;
+}