diff options
Diffstat (limited to 'CPP')
| -rw-r--r-- | CPP/Basics/CodeDemo.cpp | 34 | ||||
| -rw-r--r-- | CPP/Basics/Ex2/CodeDemo.cpp | 43 | ||||
| -rw-r--r-- | CPP/Basics/Ex2/Makefile | 4 | ||||
| -rw-r--r-- | CPP/Basics/Ex2/records.cpp | 188 | ||||
| -rw-r--r-- | CPP/Basics/Ex2/records.h | 63 | ||||
| -rw-r--r-- | CPP/Basics/Makefile | 4 | ||||
| -rw-r--r-- | CPP/Basics/basics.cpp | 150 | ||||
| -rw-r--r-- | CPP/Basics/calc.txt | 9 | ||||
| -rw-r--r-- | CPP/Basics/cow.cpp | 24 | ||||
| -rw-r--r-- | CPP/Basics/cow.h | 32 | ||||
| -rw-r--r-- | CPP/Basics/files.cpp | 66 | ||||
| -rw-r--r-- | CPP/Basics/flow.cpp | 117 | ||||
| -rw-r--r-- | CPP/Basics/functions.cpp | 41 | ||||
| -rw-r--r-- | CPP/Basics/main.cpp | 25 | ||||
| -rw-r--r-- | CPP/Basics/people.txt | 12 | ||||
| -rw-r--r-- | CPP/Basics/records/Course.cpp | 19 | ||||
| -rw-r--r-- | CPP/Basics/records/Grade.cpp | 19 | ||||
| -rw-r--r-- | CPP/Basics/records/Student.cpp | 14 | ||||
| -rw-r--r-- | CPP/Basics/records/record.h | 41 | ||||
| -rw-r--r-- | CPP/Basics/records/records.cpp | 17 | ||||
| -rw-r--r-- | CPP/README.md | 1 | ||||
| -rwxr-xr-x | CPP/accel/greetings | bin | 0 -> 19656 bytes | |||
| -rw-r--r-- | CPP/accel/greetings.cpp | 51 | ||||
| -rw-r--r-- | CPP/fancy_greeting.cpp | 88 | ||||
| -rw-r--r-- | CPP/flush.cpp | 12 |
25 files changed, 1074 insertions, 0 deletions
diff --git a/CPP/Basics/CodeDemo.cpp b/CPP/Basics/CodeDemo.cpp new file mode 100644 index 0000000..c84d8c0 --- /dev/null +++ b/CPP/Basics/CodeDemo.cpp @@ -0,0 +1,34 @@ +// Learning C++
+// Exercise 06_01
+// Opening a text file for reading, by Eduardo Corpeño
+
+#include <iostream>
+#include <string>
+#include <fstream>
+
+using namespace std;
+
+ifstream inFile;
+string str;
+int number;
+char letter;
+
+int main(){
+ inFile.open("people.txt");
+ if (inFile.fail())
+ cout << endl << "File not found!" << endl;
+ else{
+ while (!inFile.eof()){
+ getline(inFile, str);
+ cout << str << ", ";
+ getline(inFile,str);
+ number = stoi(str);
+ cout << number << ", ";
+ getline(inFile, str);
+ letter = str[0];
+ cout << letter << endl;
+ }
+ inFile.close();
+ }
+ return (0);
+}
diff --git a/CPP/Basics/Ex2/CodeDemo.cpp b/CPP/Basics/Ex2/CodeDemo.cpp new file mode 100644 index 0000000..0afcd7a --- /dev/null +++ b/CPP/Basics/Ex2/CodeDemo.cpp @@ -0,0 +1,43 @@ +// Learning C++
+// Challenge 04_05
+// Calculate a GPA, by Eduardo Corpeño
+
+#include <iostream>
+#include <vector>
+#include "records.h"
+
+using namespace std;
+
+void init_students();
+
+StudentRecords SR;
+int id;
+
+int main()
+{
+ init_students();
+
+ cout << "Enter a student ID: ";
+ cin >> id;
+
+ SR.report_card(id);
+ return 0;
+}
+
+void init_students()
+{
+ SR.add_student(1,"George P. Burdell");
+ SR.add_student(2,"Nancy Rhodes");
+
+ SR.add_course(1,"Algebra",5);
+ SR.add_course(2,"Physics",4);
+ SR.add_course(3,"English",3);
+ SR.add_course(4,"Economics",4);
+
+ SR.add_grade(1,1,'B');
+ SR.add_grade(1,2,'A');
+ SR.add_grade(1,3,'C');
+ SR.add_grade(2,1,'A');
+ SR.add_grade(2,2,'A');
+ SR.add_grade(2,4,'B');
+}
diff --git a/CPP/Basics/Ex2/Makefile b/CPP/Basics/Ex2/Makefile new file mode 100644 index 0000000..93d17b2 --- /dev/null +++ b/CPP/Basics/Ex2/Makefile @@ -0,0 +1,4 @@ +all: + gcc -o gpa CodeDemo.cpp records.cpp -lstdc++ +clean: + rm gpa diff --git a/CPP/Basics/Ex2/records.cpp b/CPP/Basics/Ex2/records.cpp new file mode 100644 index 0000000..530366a --- /dev/null +++ b/CPP/Basics/Ex2/records.cpp @@ -0,0 +1,188 @@ +#include <iostream>
+#include "records.h"
+
+using namespace std;
+
+Student::Student(int the_id, string the_name){
+ id = the_id;
+ name = the_name;
+}
+int Student::get_id(){
+ return id;
+}
+string Student::get_name(){
+ return name;
+}
+
+Course::Course(int the_id, string the_name, unsigned char the_credits){
+ id = the_id;
+ name = the_name;
+ credits = the_credits;
+}
+int Course::get_id(){
+ return id;
+}
+string Course::get_name(){
+ return name;
+}
+int Course::get_credits(){
+ return credits;
+}
+
+
+Grade::Grade(int sid, int cid, char grd){
+ student_id = sid;
+ course_id = cid;
+ grade = grd;
+}
+int Grade::get_student_id(){
+ return student_id;
+}
+int Grade::get_course_id(){
+ return course_id;
+}
+char Grade::get_grade(){
+ return grade;
+}
+
+/* StudentRecords methods */
+
+void StudentRecords::add_student(int sid, string sname)
+{
+ students.push_back(Student(sid, sname));
+}
+
+void StudentRecords::add_course(int cid, string cname,
+ unsigned char ccredits)
+{
+ courses.push_back(Course(cid, cname, ccredits));
+}
+
+void StudentRecords::add_grade(int sid, int cid, char grade)
+{
+ grades.push_back(Grade(sid, cid, grade));
+}
+
+float StudentRecords::get_num_grade(char letter)
+{
+ float cur_grade;
+ switch (letter) {
+ case 'A':
+ cur_grade = 4.0f;
+ break;
+ case 'B':
+ cur_grade = 3.0f;
+ break;
+ case 'C':
+ cur_grade = 2.0f;
+ break;
+ case 'D':
+ cur_grade = 1.0f;
+ break;
+ case 'F':
+ cur_grade = 0.0f;
+ break;
+ default:
+ cur_grade = -1;
+ break;
+ }
+
+ return cur_grade;
+}
+
+std::string StudentRecords::get_student_name(int sid)
+{
+ int i = 0;
+ while (i < students.size() && students[i].get_id() != sid)
+ i++;
+
+ return students[i].get_name();
+}
+
+unsigned char StudentRecords::get_course_credits(int cid)
+{
+ unsigned char creds;
+ for (Course& c_iter : courses)
+ if (c_iter.get_id() == cid) {
+ creds = c_iter.get_credits();
+ break;
+ }
+
+ return creds;
+}
+
+float StudentRecords::get_GPA(int sid)
+{
+ float points = 0.0f;
+ float credits = 0.0f;
+ unsigned char cur_creds;
+
+ for (Grade& g_iter : grades) {
+ if (g_iter.get_student_id() != sid)
+ continue;
+
+ cur_creds = get_course_credits(g_iter.get_course_id());
+ points += get_num_grade(g_iter.get_grade()) * cur_creds;
+ credits += cur_creds;
+ }
+
+ return points / credits;
+}
+
+void StudentRecords::report_card(int sid)
+{
+ // print a report card on the screen
+ // name course letter grades and GPA.
+ std::cout << "REPORT CARD:" << std::endl;
+
+ std::cout << "Student name: " << get_student_name(sid) << std::endl;
+
+ std::cout << "Courses enrolled | Grade" << std::endl;
+
+ for (Grade& sgrade : grades ) {
+ if (sgrade.get_student_id() != sid)
+ continue;
+
+ for (Course& scourse : courses)
+ if (scourse.get_id() == sgrade.get_course_id())
+ std::cout << " " <<
+ scourse.get_name() << ": " <<
+ sgrade.get_grade() << std::endl;
+ }
+
+ std::cout << std::endl;
+ std::cout << "Student GPA: " << get_GPA(sid) << std::endl;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CPP/Basics/Ex2/records.h b/CPP/Basics/Ex2/records.h new file mode 100644 index 0000000..c0e92c6 --- /dev/null +++ b/CPP/Basics/Ex2/records.h @@ -0,0 +1,63 @@ +#ifndef RECORDS_H
+#define RECORDS_H
+
+#include <vector>
+#include <string>
+
+class Student{
+private:
+ int id;
+ std::string name;
+
+public:
+ Student(int the_id, std::string the_name);
+ int get_id();
+ std::string get_name();
+};
+
+class Course{
+private:
+ int id;
+ std::string name;
+ unsigned char credits;
+
+public:
+ Course(int the_id, std::string the_name, unsigned char the_credits);
+ int get_id();
+ std::string get_name();
+ int get_credits();
+};
+
+class Grade{
+private:
+ int student_id;
+ int course_id;
+ char grade;
+
+public:
+ Grade(int sid, int cid, char grd);
+ int get_student_id();
+ int get_course_id();
+ char get_grade();
+};
+
+class StudentRecords {
+private:
+ std::vector<Student> students;
+ std::vector<Course> courses;
+ std::vector<Grade> grades;
+
+ float get_num_grade(char);
+
+public:
+ void add_student(int, std::string);
+ void add_course(int, std::string, unsigned char);
+ void add_grade(int, int, char);
+
+ std::string get_student_name(int);
+ unsigned char get_course_credits(int);
+ float get_GPA(int);
+ void report_card(int);
+};
+
+#endif /* RECORDS_H */
diff --git a/CPP/Basics/Makefile b/CPP/Basics/Makefile new file mode 100644 index 0000000..7735e38 --- /dev/null +++ b/CPP/Basics/Makefile @@ -0,0 +1,4 @@ +all: + gcc -o main cow.cpp main.cpp -lstdc++ +clean: + rm main files flow functions diff --git a/CPP/Basics/basics.cpp b/CPP/Basics/basics.cpp new file mode 100644 index 0000000..1ddd96c --- /dev/null +++ b/CPP/Basics/basics.cpp @@ -0,0 +1,150 @@ +#include <iostream> +#include <string> +#include <cstring> // includes C string.h +#include <typeinfo> +#include <cstdint> + +#define CAPACITY 5000 +//#define LENGTH 4 + +/* + * cout = Character out + * cin = Character in + * :: == Scope resolution operator + * << == insertion operator + */ + +using namespace std; + +void average() { + int arr[5]; + + arr[0] = 4; + arr[1] = 3; + arr[2] = 5; + arr[3] = 2; + arr[4] = 4; + + int i = 0; + float avg = 0; + + for (i = 0; i < 5; i++) + avg += arr[i]; + + avg /= 5; + + std::cout << "Average: " << avg << std::endl; +} + +void tcast() { + float f = -7.44f; + int32_t s; + uint32_t u; + + s = f; // Implicit type casting from float to int32 + u = s; // Implicit casting from int32 to uint32, we'll end up seeing 2's + // complement version of variable s, but interpreted as an + // unsigned int. + + std::cout << "float: " << f << endl; + std::cout << "int32: " << s << endl; + std::cout << "uint32: " << u << endl; +} + +void strings() { + const int LENGTH = 25; + char ch_arr1[LENGTH] = "Howdy! I'm a string... "; + char ch_arr2[] = "Sup bro?"; + + string std_str1 = "Hi everyone! "; + string std_str2 = "How's everybody doing?"; + + // Concatenate strings the traditional way + strcat(ch_arr1, ch_arr2); + std::cout << ch_arr1 << std::endl; + // Concatenate strings the C++ way using operator overloading + std::cout << std_str1 + std_str2 << std::endl; + std::cout << "Operator overloaded" << std::endl; +} + +void t_inference() { + auto a = 8; + auto b = 214312351235739; + auto c = 3.14f; + auto d = 3.14; + auto e = true; + auto f = 'd'; + + std::cout << "STARTING Type Inference" << std::endl; + std::cout << "Type of a: " << typeid(a).name() << std::endl; + std::cout << "Type of b: " << typeid(b).name() << std::endl; + std::cout << "Type of c: " << typeid(c).name() << std::endl; + std::cout << "Type of d: " << typeid(d).name() << std::endl; + std::cout << "Type of e: " << typeid(e).name() << std::endl; + std::cout << "Type of f: " << typeid(f).name() << std::endl; +} + +void varplay() { + int a, b = 5; + + float c = 2.4f; + double d = 9.234545; + long double ld = 9.234545; + char e = 'e'; + bool myBool = false; + string str = "This is a big string I don't care how it is handled"; + + std::cout << "Size of int: " << sizeof(a) << " sizeof float: " << + sizeof(c) << " sizeof double: " << sizeof(d) << + " sizeof long double: " << sizeof(ld) << " sizeof char: " << + sizeof(e) << " sizeof bool: " << sizeof(myBool) << std::endl; + + std::cout << "This is my string: " << str << std::endl; +} + +int main() { + string str; + +#ifdef CAPACITY + int32_t cap = CAPACITY; + uint32_t small = 37; + + const int LENGTH = 4; + int myArr[LENGTH]; + + myArr[0] = 3; + myArr[1] = 4; + myArr[2] = 5; + myArr[3] = 6; + cap += small; +#endif + + std::cout << "Please enter your first name: "; + cin >> str; + + std::cout << "Hello " << str << ", welcome to the world!" << std::endl; + + // Just relies on using namespace + cout << "Hello World, with namespace" << endl; + +// varplay(); + t_inference(); + +#ifdef DEBUG + std::cout << "DEBUGGING..." << std::endl; + std::cout << "Array size: " << LENGTH << std::endl; + std::cout << "Arr[0] = " << myArr[0] << std::endl; + std::cout << "Arr[1] = " << myArr[1] << std::endl; + std::cout << "Arr[2] = " << myArr[2] << std::endl; + std::cout << "Arr[3] = " << myArr[3] << std::endl; +#endif + +#ifdef CAPACITY + std::cout << "Current CAPS: " << cap << std::endl; +#endif + + strings(); + tcast(); + average(); + return 0; +} diff --git a/CPP/Basics/calc.txt b/CPP/Basics/calc.txt new file mode 100644 index 0000000..8f57534 --- /dev/null +++ b/CPP/Basics/calc.txt @@ -0,0 +1,9 @@ +Ronaldo +25 +J +Cretino +23 +C +Mano dos Pano +23 +M diff --git a/CPP/Basics/cow.cpp b/CPP/Basics/cow.cpp new file mode 100644 index 0000000..96a47d6 --- /dev/null +++ b/CPP/Basics/cow.cpp @@ -0,0 +1,24 @@ +#include "cow.h" + +// Constructor +cow::cow(std::string name_i, int age_i, unsigned char purpose_i) { + name = name_i; + age = age_i; + purpose = purpose_i; +} + +std::string cow::get_name() { + return name; +} + +int cow::get_age() { + return age; +} + +unsigned char cow::get_purpose() { + return purpose; +} + +void cow::set_age(int age_i) { + age = age_i; +} diff --git a/CPP/Basics/cow.h b/CPP/Basics/cow.h new file mode 100644 index 0000000..b9cdaae --- /dev/null +++ b/CPP/Basics/cow.h @@ -0,0 +1,32 @@ +#ifndef COW_H +#define COW_H + +#include <string> + +enum cow_p { + DAIRY, + MEAT, + HIDE, + PET, +}; + +// By default class members are private +class cow { + +private: + std::string name; + int age; + unsigned char purpose; + +public: + // Constructor + cow(std::string name_i, int age_i, unsigned char purpose_i); + + std::string get_name(); + int get_age(); + unsigned char get_purpose(); + + void set_age(int age_i); +}; + +#endif /* COW_H */ diff --git a/CPP/Basics/files.cpp b/CPP/Basics/files.cpp new file mode 100644 index 0000000..1242224 --- /dev/null +++ b/CPP/Basics/files.cpp @@ -0,0 +1,66 @@ +#include <iostream> +#include <string> +#include <fstream> + +using namespace std; + +void read_from_file() +{ + ifstream myFile; + string str, str2; + int number; + char letter; + + myFile.open("people.txt"); + + if (myFile.fail()) { + cout << endl << "File not found!" << endl; + } else { + while (!myFile.eof()) { + getline(myFile, str); + cout << str << ", "; + getline(myFile, str); + number = stoi(str); + cout << number << ", "; + getline(myFile, str); + cout << str << endl; + } + myFile.close(); + } +} + +void write_to_file() +{ + ofstream outFile; + float a = 4.333f; + float b = 5.302f; + + outFile.open("calc.txt"); + if (outFile.fail()) { + cout << endl << "Couldn't open the file!" << endl; + } else { + outFile << "Ronaldo" << endl; + outFile << "25" << endl; + outFile << "J" << endl; + outFile << "Cretino" << endl; + outFile << "23" << endl; + outFile << "C" << endl; + outFile << "Mano dos Pano" << endl; + outFile << "23" << endl; + outFile << "M" << endl; + outFile.close(); + cout << "File written successfully!" << endl; + + } +} +int main(void) +{ + + write_to_file(); + read_from_file(); + + // Reading a whole line from the terminal +// getline(cin, str2); +// cout << str2 << endl; + return 0; +} 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; +} diff --git a/CPP/Basics/functions.cpp b/CPP/Basics/functions.cpp new file mode 100644 index 0000000..5a26992 --- /dev/null +++ b/CPP/Basics/functions.cpp @@ -0,0 +1,41 @@ +#include <iostream> + +// C++ can pass arguments are references + +// by value +int square(int x) +{ + return x * x; +} + +// swap by value (passing pointers) +void swap(int *x, int *y) +{ + int temp = *x; + *x = *y; + *y = temp; +} + +// Swap by reference - function overload +void swap(int& x, int& y) +{ + int temp = x; + x = y; + y = temp; +} + + +int main(void) { + + int a = 9, b; + b = square(a); + std::cout << "Square of a: " << b << std::endl; + std::cout << "A: " << a << " B: " << b << std::endl; + swap(&a, &b); + std::cout << "Swapping by addr value:" << std::endl; + std::cout << "New A: " << a << " New B: " << b << std::endl; + swap(a, b); + std::cout << "Swapping by reference:" << std::endl; + std::cout << "New A: " << a << " New B: " << b << std::endl; + return 0; +} diff --git a/CPP/Basics/main.cpp b/CPP/Basics/main.cpp new file mode 100644 index 0000000..1b6d751 --- /dev/null +++ b/CPP/Basics/main.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <string> +#include "cow.h" + +int main(void) { + cow *my_cow; + my_cow = new cow("Hildy", 7, PET); + + std::cout << my_cow->get_name() << " is a type - " << + (int)my_cow->get_purpose() << + std::endl; + + std::cout << my_cow->get_name() << " is " << + my_cow->get_age() << " years old" << + std::endl; + + + my_cow->set_age(24); + std::cout << my_cow->get_name() << " is NOW " << + my_cow->get_age() << " years old" << + std::endl; + + delete my_cow; + return 0; +} diff --git a/CPP/Basics/people.txt b/CPP/Basics/people.txt new file mode 100644 index 0000000..b426faf --- /dev/null +++ b/CPP/Basics/people.txt @@ -0,0 +1,12 @@ +Jenny Drake
+25
+J
+George P. Burdell
+62
+G
+Jane Rogers
+34
+J
+Joe Petersen
+30
+J
\ No newline at end of file diff --git a/CPP/Basics/records/Course.cpp b/CPP/Basics/records/Course.cpp new file mode 100644 index 0000000..0c39e3e --- /dev/null +++ b/CPP/Basics/records/Course.cpp @@ -0,0 +1,19 @@ +#include "record.h" + +Course::Course(int c_id, std::string c_name, unsigned char c_credits) { + id = c_id; + name = c_name; + credits = c_credits; +} + +int Course::get_id(void) { + return id; +} + +int Course::get_credits() { + return credits; +} + +std::string Course::get_name() { + return name; +} diff --git a/CPP/Basics/records/Grade.cpp b/CPP/Basics/records/Grade.cpp new file mode 100644 index 0000000..8a300e6 --- /dev/null +++ b/CPP/Basics/records/Grade.cpp @@ -0,0 +1,19 @@ +#include "record.h" + +Grade::Grade(int g_student_id, int g_course_id, char g_grade) { + student_id = g_student_id; + course_id = g_course_id; + grade = g_grade; +} + +int Grade::get_student_id() { + return student_id; +} + +int Grade::get_course_id() { + return course_id; +} + +char Grade::get_grade() { + return grade; +} diff --git a/CPP/Basics/records/Student.cpp b/CPP/Basics/records/Student.cpp new file mode 100644 index 0000000..d8cccaf --- /dev/null +++ b/CPP/Basics/records/Student.cpp @@ -0,0 +1,14 @@ +#include "record.h" + +Student::Student(int s_id, std::string s_name) { + id = s_id; + name = s_name; +} + +int Student::get_id(void) { + return id; +} + +std::string Student::get_name(void) { + return name; +} diff --git a/CPP/Basics/records/record.h b/CPP/Basics/records/record.h new file mode 100644 index 0000000..ff0a9e7 --- /dev/null +++ b/CPP/Basics/records/record.h @@ -0,0 +1,41 @@ +#ifndef RECORDS_H +#define RECORDS_H +#include <string> + +class Student { +private: + int id; + std::string name; +public: + Student(int s_id, std::string s_name); + int get_id(); + std::string get_name(); +}; + + +class Course { +private: + int id; + std::string name; + unsigned char credits; +public: + Course(int c_id, std::string c_name, unsigned char c_credits); + int get_id(); + std::string get_name(); + int get_credits(); + +}; + +class Grade { +private: + int student_id; + int course_id; + char grade; +public: + Grade(int g_student_id, int g_course_id, char g_grade); + int get_student_id(); + int get_course_id(); + char get_grade(); + +}; +#endif diff --git a/CPP/Basics/records/records.cpp b/CPP/Basics/records/records.cpp new file mode 100644 index 0000000..1052504 --- /dev/null +++ b/CPP/Basics/records/records.cpp @@ -0,0 +1,17 @@ +#include <iostream> +#include "record.h" + +using namespace std; + +Student my_student(1,"Hilda Jones"); +Course my_course(7,"Physics 101",3); +Grade my_grade(1,7,'B'); + +int main(){ + cout << "Student: " << my_student.get_name() << endl; + cout << "Course: " << my_course.get_name() << endl; + cout << "Credits: " << my_course.get_credits() << endl; + cout << "Grade: " << my_grade.get_grade() << endl; + return (0); +} + diff --git a/CPP/README.md b/CPP/README.md new file mode 100644 index 0000000..a2f24f8 --- /dev/null +++ b/CPP/README.md @@ -0,0 +1 @@ +Learning C++ is fun diff --git a/CPP/accel/greetings b/CPP/accel/greetings Binary files differnew file mode 100755 index 0000000..003c6e8 --- /dev/null +++ b/CPP/accel/greetings diff --git a/CPP/accel/greetings.cpp b/CPP/accel/greetings.cpp new file mode 100644 index 0000000..d916d87 --- /dev/null +++ b/CPP/accel/greetings.cpp @@ -0,0 +1,51 @@ +#include <iostream> +#include <string> + +#define PADDING 1 + +using std::cin; +using std::cout; +using std::endl; +using std::string; + +int main(void) { + string name; + + const int pad = PADDING; + const int rows = pad * 2 + 3 ; // * 2 blanks + (greeting+borders) + + cout << "Type your name: "; + cin >> name; + + // Build the message to write + const string greeting = "Hello, " + name + "!"; + + // pad * 2 blank borders + 2 * edges + const string::size_type cols = greeting.size() + pad * 2 + 2; + + cout << std::endl; + + // Write 'rows' rows of output + // invariant: we have written 'r' rows + for (int r = 0; r != rows; r++) { + string::size_type c = 0; + + while (c < cols) { + if ( r == pad + 1 && c == pad + 1) { + cout << greeting; + c += greeting.size(); + } else { + if (r == 0 || r == rows - 1 || + c == 0 || c == cols - 1) + cout << "*"; + else + cout << " "; + c++; + } + } + + cout << std::endl; + } + + return 0; +} diff --git a/CPP/fancy_greeting.cpp b/CPP/fancy_greeting.cpp new file mode 100644 index 0000000..ea1aa4c --- /dev/null +++ b/CPP/fancy_greeting.cpp @@ -0,0 +1,88 @@ +#include <iostream> +#include <string> + +int main(void) { + + std::string name; + + std::cout << "Please enter your first name: "; + std::cin >> name; + + // Build the welcome msg + const std::string greeting = "Hello, " + name + "!"; + + // blank rows + const int pad = 1; + + // total number of rows to write 1 for greetings 2 for top and bottom + const int rows = pad * 2 + 3; + const std::string::size_type cols = greeting.size() + pad * 2 + 2; + + // Separate output from input + std::cout << std::endl; + + for (int r = 0; r != rows; r++) { + + // size_type, defined by string class, defines the name of the + // appropriate type for holding the number of chars in a string. + std::string::size_type c = 0; + + while (c != cols) { + if (r == pad + 1 && c == pad + 1) { + std::cout << greeting; + c += greeting.size(); + } else { + if (r == 0 || r == rows - 1 || + c == 0 || c == cols - 1) + std::cout << "*"; + else + std::cout << " "; + c++; + } + // write one or more chars + // adjust the value of c to maintain the invariant + } + // write a row of output + std::cout << std::endl; + } + + // build the second and fourth lines of the output + const std::string spaces(greeting.size(), ' '); + const std::string second = "* " + spaces + " *"; + + // build the first and fifth lines of the output + const std::string first(second.size(), '*'); + + // Write everything + std::cout << std::endl; + std::cout << first << std::endl; + std::cout << second << std::endl; + std::cout << "* " << greeting << " *" << std::endl; + std::cout << second << std::endl; + std::cout << first << std::endl; + + const std::string ex = "!"; + const std::string msg = "hello" + ex; + std::cout << msg << std::endl; + + { const std::string s = "a string"; + std::cout << s << std::endl; } + { const std::string s = "another string"; + std::cout << s << std::endl; } + + { const std::string s = "a string"; + std::cout << s << std::endl; + { const std::string s = "another string"; + std::cout << s << std::endl; }} + + std::cout << "What is your name? "; + std::string n; + std::cin >> n; + std::cout << "Hello, " << n + << std::endl << "And what is yours? "; + std::cin >> n; + std::cout << "Hello, " << n + << "; nice to meet you too!" << std::endl; + + return 0; +} diff --git a/CPP/flush.cpp b/CPP/flush.cpp new file mode 100644 index 0000000..8f0eaa4 --- /dev/null +++ b/CPP/flush.cpp @@ -0,0 +1,12 @@ +#include <iostream> +#include <unistd.h> + +int main(void) { + + // This is written to a buffer, but it is not flushed immediately + std::cout << "First output"; + sleep(5); + std::cout << "Second output"; + std::cout << std::endl; + return 0; +} |
