From 0772c1da3fa9b1cf53516a910fca065b00e56216 Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Tue, 21 Feb 2023 18:25:25 +0530 Subject: [PATCH 01/18] Adding Basics of C++ --- 1_cpp_basics/1_cpp_basics.cpp | 54 +++++++++++++++++++ 1_cpp_basics/1_cpp_basics.hpp | 1 + 1_cpp_basics/2_cpp_basics.cpp | 99 +++++++++++++++++++++++++++++++++++ 1_cpp_basics/2_cpp_basics.hpp | 8 +++ 4 files changed, 162 insertions(+) create mode 100644 1_cpp_basics/2_cpp_basics.cpp create mode 100644 1_cpp_basics/2_cpp_basics.hpp diff --git a/1_cpp_basics/1_cpp_basics.cpp b/1_cpp_basics/1_cpp_basics.cpp index e69de29..b5b660c 100644 --- a/1_cpp_basics/1_cpp_basics.cpp +++ b/1_cpp_basics/1_cpp_basics.cpp @@ -0,0 +1,54 @@ + +using namespace std; + +int main() +{ + int s[5][2] = { + {1, 2}, + {1, 2}, + {1, 2}, + {1, 2} + } ; + + int (*p)[2] ; + int i, j; + //Usage of pointer to an array + for (i = 0 ; i <= 3 ; i++) + { + p=&s[i]; + cout<<"Row"< \ No newline at end of file diff --git a/1_cpp_basics/2_cpp_basics.cpp b/1_cpp_basics/2_cpp_basics.cpp new file mode 100644 index 0000000..ef3ec49 --- /dev/null +++ b/1_cpp_basics/2_cpp_basics.cpp @@ -0,0 +1,99 @@ + +using std::cout; +using std::endl; + +int main() { + // Constructing from an Array + uint8_t greyArr[11][11] = { + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 } + }; + + cv::Mat greyImg = cv::Mat(11, 11, CV_8U, &greyArr); + std::string greyArrWindow = "Grey Array Image"; + cv::namedWindow(greyArrWindow, cv::WINDOW_AUTOSIZE); + cv::imshow(greyArrWindow, greyImg); + + // note that the above simply copied the pointer into the Mat + // object thus, its is only operatoring on the original array + // data which is very fast but, may not be exactly what you want + for (int i = 0; i < 11; i++) { + for (int j = 0; j < 11; j++) { + greyArr[i][j] = 100; + } + } + std::string monoGreyImgWindow = "Mono Grey Arr Image"; + cv::namedWindow(monoGreyImgWindow); + cv::imshow(monoGreyImgWindow, greyImg); + + // The Mat class also prints to standard out in a nicely readable format + // (a handy debugging feature for smallish Mat objects) + cout << "greyImg = \n" << greyImg << endl; + + // Now lets say I want to copy the data from my 2D array into a Mat instance so it + // has it's own copy to use and manage I can do so with memcpy + cv::Mat greyImgForArrCopy = cv::Mat(11, 11, CV_8U); + std::memcpy(greyImgForArrCopy.data, greyArr, 11 * 11 * sizeof(uint8_t)); + + // update every element of greyArr to be black (ie, 0) + for (int i = 0; i < 11; i++) { + for (int j = 0; j < 11; j++) { + greyArr[i][j] = 0; + } + } + std::string copyedArrImg = "Grey Copied Image"; + cv::namedWindow(copyedArrImg); + cv::imshow(copyedArrImg, greyImgForArrCopy); + + + + // Construct from vector + std::vector vec = { + 0, 0, 0, 0, 0, 0, + 25, 25, 25, 25, 25, 25, + 50, 50, 50, 50, 50, 50, + 75, 75, 75, 75, 75, 75, + 100, 100, 100, 100, 100, 100, + 125, 125, 125, 125, 125, 125, + 150, 150, 150, 150, 150, 150, + 175, 175, 175, 175, 175, 175, + 200, 200, 200, 200, 200, 200, + 225, 225, 225, 225, 225, 225, + 255, 255, 255, 255, 255, 255 + }; + cv::Mat greyImgFromVec(11, 6, CV_8U, vec.data()); + std::string greyImgFromVecWindow = "Grey Image From Vec"; + cv::namedWindow(greyImgFromVecWindow); + cv::imshow(greyImgFromVecWindow, greyImgFromVec); + + // similar to what was shown in the Array section when a Mat object + // is constructed in this manner a pointer to the vector data is copied + // to the data field within the Mat object so, modifying the source vector + // data will be reflected when displaying the contents of the Mat object. + + // again, the memcpy function can be used to copy a vector's data into + // a Mat object similar to what was shown with the array example previously. + + cv::Mat greyImgForVecCopy = cv::Mat(cv::Size(6, 11), CV_8U); + std::memcpy(greyImgForVecCopy.data, vec.data(), vec.size() * sizeof(uint8_t)); + + std::fill(std::begin(vec), std::end(vec), 100); + + std::string greyImgFromVecCopyWindow = "Grey Image Vec Copy"; + cv::namedWindow(greyImgFromVecCopyWindow); + cv::imshow(greyImgFromVecCopyWindow, greyImgForVecCopy); + + cv::waitKey(0); + cv::destroyAllWindows(); + + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/2_cpp_basics.hpp b/1_cpp_basics/2_cpp_basics.hpp new file mode 100644 index 0000000..c0a5b5f --- /dev/null +++ b/1_cpp_basics/2_cpp_basics.hpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include +#include + +#include +#include From 90c792e26b0d559d58ab93bde23fc8c3e8ea8139 Mon Sep 17 00:00:00 2001 From: VanshPanchal0308 Date: Wed, 22 Feb 2023 22:44:33 +0530 Subject: [PATCH 02/18] Documentation of Basics of C++ --- 1_cpp_basics/readme.md | 572 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 572 insertions(+) diff --git a/1_cpp_basics/readme.md b/1_cpp_basics/readme.md index e69de29..27d4e9d 100644 --- a/1_cpp_basics/readme.md +++ b/1_cpp_basics/readme.md @@ -0,0 +1,572 @@ +# **Basics Of C++** + + +- ## **What are Arrays :** + An array is a collection of elements of the same type placed in contiguous memory locations that can be individually referenced by using an index to a unique identifier. + +Five values of type int can be declared as an array without having to declare five different variables (each with its own identifier). + +For example, a five element integer array foo may be logically represented as; + +![array](https://i.imgur.com/TAHEqe6.jpg) + +where each blank panel represents an element of the array. In this case, these are values of type int. These elements are numbered from 0 to 4, with 0 being the first while 4 being the last; In C++, the index of the first array element is always zero. + + A typical declaration for an array in C++ is: + + **`type name [elements]`**; + + where type is a valid type (such as int, float ...), name is a valid identifier and the elements field (which is always enclosed in square brackets []), specifies the size of the array. + +Thus, the foo array, with five elements of type int, can be declared as: + +**`int foo [5]`**; + +- ## **Initializing Arrays :** +he elements in an array can be explicitly initialized to specific values when it is declared, by enclosing those initial values in braces {}. The number of values between braces {} shall not be greater than the number of elements in the array. For example: + +**`int foo [5] = { 16, 2, 77, 40, 12071 }`**; + + This statement declares an array that can be represented like this: +![array](https://i.imgur.com/TOGDgk5.jpg) + +- ## **Array Accessing :** +**The syntax is:** + +**`name[index]`** + + For example, the following statement stores the value 75 in the third element of foo: + +foo [2] = 75; + +**`int foo[5]; // declaration of a new array`** + + **`foo[2] = 75; // access to an element of the array.`** + + +- ## **Multidimensional Arrays :** + +A two-dimensional array in C++ is the simplest form of a multi-dimensional array. It can be visualized as an array of arrays. The image below depicts a two-dimensional array: + +![array](https://i.imgur.com/U2rhDGD.png) + +**We can initialize a 2D array in the following way.** + +**`int arr[4][2] = {`** +**`{1234, 56},`** + **`{1212, 33},`** + **`{1434, 80},`** + **`{1312, 78}`** +**`} ;`** + +**We can also initialize in following way :** + +**`int arr[4][2] = {1234, 56, 1212, 33, 1434, 80, 1312, 78};`** + +- ## **Printing a 2D Array in C++ :** + +```C++ +#include +using namespace std; +int main( ) +{ + int arr[4][2] = { + { 10, 11 }, + { 20, 21 }, + { 30, 31 }, + { 40, 41 } + } ; + + int i,j; + + cout<<"Printing a 2D Array:\n"; + for(i=0;i<4;i++) + { + for(j=0;j<2;j++) + { + cout<<"\t"<   + using namespace std;   + int main()   + {   + int number=30;     + int ∗p;       + p=&number;//stores the address of number variable     + cout<<"Address of number variable is:"<<&number< +using namespace std; +/* Usage of pointer to an array */ +int main( ) +{ + int a[4][2] = { + {1, 2}, + {1, 2}, + {1, 2}, + {1, 2} + } ; + + int (*ptr)[2] ; + int i, j; + for (i = 0 ; i <= 3 ; i++) + { + ptr=&a[i]; + cout<<"Row"< +using namespace std; + +void display(int (*ptr)[4], int row, int col) +{ + int i, j ; + for(i=0;i v1; `** + +**1. We can initialise vectors with different methods. They are shown** **in code below:** + +```C++ +#include +#include +using namespace std; + +int main() { + + // initializer list + vector vector1 = {1, 2, 3, 4, 5}; + + // uniform initialization + vector vector2{6, 7, 8, 9, 10}; + + // method 3 + vector vector3(5, 12); + // Here 5 is the size of vector and 12 is the value. + + cout << "vector1 = "; + + // ranged loop + for (const int& i : vector1) { + cout << i << " "; + } + + cout << "\nvector2 = "; + + // ranged loop + for (const int& i : vector2) { + cout << i << " "; + } + + cout << "\nvector3 = "; + + // ranged loop + for (int i : vector3) { + cout << i << " "; + } + + return 0; +} +``` +**Output :** + +![output](https://i.imgur.com/nqsiMAI.png) + +**2. Add Elements to a Vector :** +```C++ +#include +#include +using namespace std; + +int main() { + vector num {1, 2, 3, 4, 5}; + + cout << "Initial Vector: "; + + for (const int& i : num) { + cout << i << " "; + } + + // add the integers 6 and 7 to the vector + num.push_back(6); + num.push_back(7); + + cout << "\nUpdated Vector: "; + + for (const int& i : num) { + cout << i << " "; + } + + return 0; +} +``` +Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. Here, the **`push_back()`** function adds elements 6 and 7 to the vector. + +**Output :** +![output](https://i.imgur.com/zrPaav5.png) + +**3. Access Elements of a Vector :** + +```C++ +#include +#include +using namespace std; + +int main() { + vector num {1, 2, 3, 4, 5}; + + cout << "Element at Index 0: " << num.at(0) << endl; + cout << "Element at Index 2: " << num.at(2) << endl; + cout << "Element at Index 4: " << num.at(4); + + return 0; +} +``` + +We use the index number to access the vector elements. Here, we use the **`at()`** function to access the element from the specified index. + +**Output :** + +![output](https://i.imgur.com/bOxhXIl.png) + + +- ## **OpenCV MAT** + +The images captured using cameras, scanners etc. capture the numerical values at each points of the image which are nothing but the values of the pixels at those points and in order to store and handle the images in the form of a matrix and to manage the memory associated with the images, we make use of class called Mat in OpenCV and by making use of Mat class in OpenCV, the memory management happens automatically and the memory allocated for a Mat class object can be reused and this class is available in the package opencv2/core.hpp in the OpenCV C++ library. + +1. **Constructing an OpenCV Mat Object from C++ Array** + +``` C++ +include +#include +#include +#include + +#include +#include + +using std::cout; +using std::endl; + +int main() { + + // Construct from and array + uint8_t greyArr[11][11] = { + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, + { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 } + }; + + cv::Mat greyImg = cv::Mat(11, 11, CV_8U, &greyArr); + std::string greyArrWindow = "Grey Array Image"; + cv::namedWindow(greyArrWindow, cv::WINDOW_AUTOSIZE); + cv::imshow(greyArrWindow, greyImg); + + cv::waitKey(0); + cv::destroyAllWindows(); + + return 0; +} +``` + +Above is an example of creating a Mat object from a standard C++ two dimensional (ie, nested) array of unsigned 8 bit integers representing grey scale color intensities from black (0) to white (255). In this example we have specified the dimensions, in rows and columns, of the Mat object being constructed as well as the data type of CV_8U indicating a single channel 8 bit unsigned integer, also defined as a uchar in OpenCV. We then used the HighGUI library to display the Mat object populated with a gradient of intensities of grey pixels within a named window. + +**Output :** + +![image](https://i.imgur.com/2rP7TPs.png) + +2. **OpenCV program in C++ to create a matrix using Mat function and** **display the matrix as the output on the screen.** + +```C++ +//including all the necessary headers +#include "opencv2/core.hpp" +#include +#include +//defining the namespace std and cv +using namespace std; +using namespace cv; +void main() +{ +//creating a matrix using mat function and displaying the matrix as the output on the screen +Mat Mvalue(4, 4, CV_8UC3, Scalar(1, 0, 1)); +cout<<"The resulting matrix is:\n"; +cout << "Mvalue = " << endl << " " << Mvalue << endl << endl; +} +``` +Here we have used `cout` instead of `imshow` and hence we get a matrix as an output on terminal. + +**Output :** + +![image](https://i.imgur.com/iENpEyD.png) + +3. **Constructing an OpenCV Mat Object from C++ Vector :** + +Pixel data residing in the standard C++ vector can also be used to construct an OpenCV Mat object in a manner very similar to what is shown above in the array example. The major difference being you must call the data() method of the vector class like so. + +```C++ +#include +#include +#include +#include +#include + +#include +#include + +using std::cout; +using std::endl; + +int main() { + + // ... omitting the previous examples for brevity + + std::vector vec = { + 0, 0, 0, 0, 0, 0, + 25, 25, 25, 25, 25, 25, + 50, 50, 50, 50, 50, 50, + 75, 75, 75, 75, 75, 75, + 100, 100, 100, 100, 100, 100, + 125, 125, 125, 125, 125, 125, + 150, 150, 150, 150, 150, 150, + 175, 175, 175, 175, 175, 175, + 200, 200, 200, 200, 200, 200, + 225, 225, 225, 225, 225, 225, + 255, 255, 255, 255, 255, 255 + }; + cv::Mat greyImgFromVec(11, 6, CV_8U, vec.data()); + std::string greyImgFromVecWindow = "Grey Image From Vec"; + cv::namedWindow(greyImgFromVecWindow); + cv::imshow(greyImgFromVecWindow, greyImgFromVec); + + cv::waitKey(0); + cv::destroyAllWindows(); + + return 0; +} +``` +**Output :** + +![image](https://i.imgur.com/tijRwaX.png) + +4. **Copying vector Data Into an OpenCV Mat Object :** + +The method of copying vector data into a Mat object is done in a similar fashion as seen in the array example utilizing the memcpy function. However, to demonstrate yet another way of constructing a Mat object we will utilize the Size class from OpenCV to specify the dimensions of the Mat object being constructed but, do note the order of dimensions are switched when using the Size object whereby the number of columns is supplied first then followed by the rows which differs from the rows then columns order of the previously shown Mat constructors + +```C++ +#include +#include +#include +#include +#include + +#include +#include + +using std::cout; +using std::endl; + +int main() { + // ... omitting above examples for brevity + + std::vector vec = { + 0, 0, 0, 0, 0, 0, + 25, 25, 25, 25, 25, 25, + 50, 50, 50, 50, 50, 50, + 75, 75, 75, 75, 75, 75, + 100, 100, 100, 100, 100, 100, + 125, 125, 125, 125, 125, 125, + 150, 150, 150, 150, 150, 150, + 175, 175, 175, 175, 175, 175, + 200, 200, 200, 200, 200, 200, + 225, 225, 225, 225, 225, 225, + 255, 255, 255, 255, 255, 255 + }; + // ... omitting example for brevity + + // again, the memcpy function can be used to copy a vector's data into + // a Mat object similar to what was shown with the array example previously. + cv::Mat greyImgForVecCopy = cv::Mat(cv::Size(6, 11), CV_8U); + std::memcpy(greyImgForVecCopy.data, vec.data(), vec.size() * sizeof(uint8_t)); + + std::fill(std::begin(vec), std::end(vec), 100); + + std::string greyImgFromVecCopyWindow = "Grey Image Vec Copy"; + cv::namedWindow(greyImgFromVecCopyWindow); + cv::imshow(greyImgFromVecCopyWindow, greyImgForVecCopy); + + cv::waitKey(0); + cv::destroyAllWindows(); + + return 0; +} +``` +**Output :** + +![image](https://i.imgur.com/tijRwaX.png) + + + + +    + + + + + + + + + From dc2248f1f81f0997d569ff629274ac912379858d Mon Sep 17 00:00:00 2001 From: VanshPanchal0308 Date: Mon, 27 Feb 2023 21:03:39 +0530 Subject: [PATCH 03/18] Updated Readme of C++ --- 1_cpp_basics/readme.md | 222 +++++++++++++++++++++++++++++++++++------ 1 file changed, 193 insertions(+), 29 deletions(-) diff --git a/1_cpp_basics/readme.md b/1_cpp_basics/readme.md index 27d4e9d..45cced4 100644 --- a/1_cpp_basics/readme.md +++ b/1_cpp_basics/readme.md @@ -1,7 +1,164 @@ # **Basics Of C++** +## **Table Of Contents :** + +* [Type Casting](#type-casting) +* [Namespace](#namespace) +* [Enumeration](#enumeration) +* [Arrays](#arrays) + * [Initializing Arrays](#initializing-arrays) + * [ Array Accessing](#array-accessing) + * [Multidimensional Arrays](#multidimensional-arrays) + * [Printing a 2D array](#printing-a-2d-array) +* [Pointers](#pointers) +* [Pointers And Array](#pointers-and-array) +* [Passing 2D Array To A Function](#passing-2d-array-to-a-function) +* [Vectors](#vectors) +* [OpenCV Mat](#opencv-mat) + + +## **Type Casting:** + Type casting refers to the conversion of one data type to another in a program. Typecasting can be done in two ways: automatically by the compiler and manually by the programmer or user. Type Casting is also known as Type Conversion. + + 1.**Implicit Type Conversion** also known as ‘automatic type conversion’. +Done by the compiler on its own, without any external trigger from the user. +```C++ +// An example of implicit conversion + +#include +using namespace std; + +int main() +{ + int x = 10; // integer x + char y = 'a'; // character c + + // y implicitly converted to int. ASCII + // value of 'a' is 97 + x = x + y; + + // x is implicitly converted to float + float z = x + 1.0; + + cout << "x = " << x << endl + << "y = " << y << endl + << "z = " << z << endl; + + return 0; +} +``` +2. **Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. + +**Synatx:** + +**`(type)expression`** + +```C++ +// C++ program to demonstrate +// explicit type casting + +#include +using namespace std; + +int main() +{ + float x = 1.2; + + // Explicit conversion from double to int + int sum = (int)x + 1; + + cout << "Sum = " << sum; + + return 0; +} +``` +**Output:** +**`Sum = 2`** + +## **Namespace:** +Namespace provide the space where we can define or declare identifier i.e. variable, method, classes.Using namespace, you can define the space or context in which identifiers are defined i.e. variable, method, classes. In essence, a namespace defines a scope. + +Example, you might be writing some code that has a function called xyz() and there is another library available which is also having same function xyz(). Now the compiler has no way of knowing which version of xyz() function you are referring to within your code. +A namespace is designed to overcome this difficulty and is used as additional information to differentiate similar functions, classes, variables etc. with the same name available in different libraries.  + +A namespace definition begins with the keyword namespace followed by the namespace name as follows: +```C++ +namespace namespace_name +{ + // code declarations i.e. variable (int a;) + method (void add();) + classes ( class student{};) +} +``` + +```C++ +#include +using namespace std; +// first name space +namespace first_space +{ +void func() +{ + cout << "Inside first_space" << endl; +} +} + +// second name space +namespace second_space +{ +void func() +{ + cout << "Inside second_space" << endl; +} +} +using namespace first_space; +int main () +{ +// This calls function from first name space. +func(); +return 0; +} +``` +**Output:** + +**`Inside first_space`** + +## **Enumeration:** + +Enum, which is also known as enumeration, is a user-defined data type that enables you to create a new data type that has a fixed range of possible values, and the variable can select one value from the set of values.nums or enumerations are generally used when you expect the variable to select one value from the possible set of values. It increases the abstraction and enables you to focus more on values rather than worrying about how to store them. + +**Synatx:** +```C++ +enum name_of_enum +{Element_1, + Element_2, + Element_3, + Element_4}; +``` +```C++ +#include +using namespace std; + +enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32}; + +int main() { + + seasons s; + + s = summer; + cout << "Summer = " << s << endl; + + return 0; +} +``` -- ## **What are Arrays :** +**Output:** + +**`Summer = 4`** + +In the above code we first made an enum datatype `seasons` ,having elements `spring,summer,autumn and winter` and assigned them values of 34,4,9,32 respectively.Then we made a variable `s` of data type `seasons` i.e enum and assigned it the value of `summer`i.e value of summer(4) is stored in `s` variable. + +## **Arrays :** An array is a collection of elements of the same type placed in contiguous memory locations that can be individually referenced by using an index to a unique identifier. Five values of type int can be declared as an array without having to declare five different variables (each with its own identifier). @@ -14,23 +171,26 @@ where each blank panel represents an element of the array. In this case, these a A typical declaration for an array in C++ is: - **`type name [elements]`**; - + ```C++ + type name [elements]; +``` where type is a valid type (such as int, float ...), name is a valid identifier and the elements field (which is always enclosed in square brackets []), specifies the size of the array. Thus, the foo array, with five elements of type int, can be declared as: +```C++ **`int foo [5]`**; +``` -- ## **Initializing Arrays :** -he elements in an array can be explicitly initialized to specific values when it is declared, by enclosing those initial values in braces {}. The number of values between braces {} shall not be greater than the number of elements in the array. For example: - -**`int foo [5] = { 16, 2, 77, 40, 12071 }`**; - +## **Initializing Arrays :** +The elements in an array can be explicitly initialized to specific values when it is declared, by enclosing those initial values in braces {}. The number of values between braces {} shall not be greater than the number of elements in the array. For example: +```C++ +int foo [5] = { 16, 2, 77, 40, 12071 }; +``` This statement declares an array that can be represented like this: ![array](https://i.imgur.com/TOGDgk5.jpg) -- ## **Array Accessing :** + ## **Array Accessing :** **The syntax is:** **`name[index]`** @@ -38,11 +198,11 @@ he elements in an array can be explicitly initialized to specific values when it For example, the following statement stores the value 75 in the third element of foo: foo [2] = 75; +```C++ +int foo[5]; // declaration of a new array`** -**`int foo[5]; // declaration of a new array`** - - **`foo[2] = 75; // access to an element of the array.`** - + foo[2] = 75; // access to an element of the array.`** +``` - ## **Multidimensional Arrays :** @@ -51,19 +211,21 @@ A two-dimensional array in C++ is the simplest form of a multi-dimensional array ![array](https://i.imgur.com/U2rhDGD.png) **We can initialize a 2D array in the following way.** - -**`int arr[4][2] = {`** -**`{1234, 56},`** - **`{1212, 33},`** - **`{1434, 80},`** - **`{1312, 78}`** -**`} ;`** +```C++ +int arr[4][2] = { +{1234, 56}, + {1212, 33}, + {1434, 80}, + {1312, 78} +} ; +``` **We can also initialize in following way :** -**`int arr[4][2] = {1234, 56, 1212, 33, 1434, 80, 1312, 78};`** - -- ## **Printing a 2D Array in C++ :** +```C++ +int arr[4][2] = {1234, 56, 1212, 33, 1434, 80, 1312, 78}; +``` +## **Printing a 2D Array:** ```C++ #include @@ -115,8 +277,10 @@ A pointer is a variable that stores the memory address of an object. Pointers ar 3. To iterate over elements in arrays or other data structures. **The syntax is:** - - **`datatype *var_name; `**   +```C++ + datatype *var_name;  + ``` +   ``` C++ @@ -145,7 +309,7 @@ A pointer is a variable that stores the memory address of an object. Pointers ar 3. The address of **`number`** is assigned to the **`p`** pointer with the help of **`&(reference) operator`**. 4. We can get the value stored at address of **`number`** we use **`*(Dereference) operator`**. - - ## **Pointers And Array :** + ## **Pointers And Array :** Not only can a pointer store the address of a single variable, it can also store the address of cells of an array.The name of an array is considered às a pointer, i.e., the name of an array contains the address of an element. C++ considers the array name as the address of the first element @@ -189,7 +353,7 @@ Here, 4. We use a for loop to traverse over these 5 elements of the array, s. For each iteration, we assign p with the address of s[i], 5. Further, the inner for loop prints out the individual elements of the array s[i] using the pointer p. Here, (*p + j) gives us the address of the individual element s[i][j], so using *(*p+j) we can access the corresponding value. -- ## **Passing 2D Array To A Function :** +## **Passing 2D Array To A Function :** C++ does not allow to pass an entire array as an argument to a function. However, You can pass a pointer to an array by specifying the array's name without an index. There are three ways to pass a 2D array to a function : @@ -260,7 +424,7 @@ Here, 5. In the second function print(), the declaration of ptr looks like this: int ptr[][4] , 6. This is same as int (*ptr )[4], where ptr is a pointer to an array of 4 integers. The only advantage is that we can now use the more familiar expression ptr[i][j] to access array elements. We could have used the same expression in display() as well but for better understanding of the use of pointers, we use pointers to access each element. -- ## **Vectors :** +## **Vectors :** In C++, vectors are used to store elements of similar data types. However, unlike arrays, the size of a vector can grow dynamically. @@ -375,7 +539,7 @@ We use the index number to access the vector elements. Here, we use the **`at()` ![output](https://i.imgur.com/bOxhXIl.png) -- ## **OpenCV MAT** + ## **OpenCV MAT** The images captured using cameras, scanners etc. capture the numerical values at each points of the image which are nothing but the values of the pixels at those points and in order to store and handle the images in the form of a matrix and to manage the memory associated with the images, we make use of class called Mat in OpenCV and by making use of Mat class in OpenCV, the memory management happens automatically and the memory allocated for a Mat class object can be reused and this class is available in the package opencv2/core.hpp in the OpenCV C++ library. From ef0c177f2d8f3608c1af55163ca8e7913c5b7e8d Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Thu, 23 Mar 2023 12:29:57 +0530 Subject: [PATCH 04/18] code files updated --- 1_cpp_basics/1_cpp_basics.cpp | 54 ----- 1_cpp_basics/1_cpp_basics.hpp | 1 - 1_cpp_basics/2_cpp_basics.cpp | 99 --------- 1_cpp_basics/2_cpp_basics.hpp | 8 - 1_cpp_basics/arrays/a.out | Bin 0 -> 17368 bytes 1_cpp_basics/arrays/arrays2d.cpp | 24 +++ .../arrays/passing2darraytofunction.cpp | 35 +++ 1_cpp_basics/enumeration/a.out | Bin 0 -> 17376 bytes 1_cpp_basics/enumeration/enumeration.cpp | 14 ++ 1_cpp_basics/namespace/a.out | Bin 0 -> 17424 bytes 1_cpp_basics/namespace/namespace.cpp | 26 +++ 1_cpp_basics/pointers/a.out | Bin 0 -> 17432 bytes 1_cpp_basics/pointers/pointers.cpp | 13 ++ 1_cpp_basics/pointers/pointers_and_array.cpp | 24 +++ 1_cpp_basics/readme.md | 201 +----------------- 1_cpp_basics/typecasting/a.out | Bin 0 -> 17520 bytes .../typecasting/explicit_typecasting.cpp | 17 ++ .../typecasting/implicit_typecasting.cpp | 23 ++ 1_cpp_basics/vectors/a.out | Bin 0 -> 27360 bytes 1_cpp_basics/vectors/access_vector.cpp | 13 ++ 1_cpp_basics/vectors/addtovector.cpp | 25 +++ .../vectors/vectors_initialization.cpp | 39 ++++ 22 files changed, 256 insertions(+), 360 deletions(-) delete mode 100644 1_cpp_basics/1_cpp_basics.cpp delete mode 100644 1_cpp_basics/1_cpp_basics.hpp delete mode 100644 1_cpp_basics/2_cpp_basics.cpp delete mode 100644 1_cpp_basics/2_cpp_basics.hpp create mode 100755 1_cpp_basics/arrays/a.out create mode 100644 1_cpp_basics/arrays/arrays2d.cpp create mode 100644 1_cpp_basics/arrays/passing2darraytofunction.cpp create mode 100755 1_cpp_basics/enumeration/a.out create mode 100644 1_cpp_basics/enumeration/enumeration.cpp create mode 100755 1_cpp_basics/namespace/a.out create mode 100644 1_cpp_basics/namespace/namespace.cpp create mode 100755 1_cpp_basics/pointers/a.out create mode 100644 1_cpp_basics/pointers/pointers.cpp create mode 100644 1_cpp_basics/pointers/pointers_and_array.cpp create mode 100755 1_cpp_basics/typecasting/a.out create mode 100644 1_cpp_basics/typecasting/explicit_typecasting.cpp create mode 100644 1_cpp_basics/typecasting/implicit_typecasting.cpp create mode 100755 1_cpp_basics/vectors/a.out create mode 100644 1_cpp_basics/vectors/access_vector.cpp create mode 100644 1_cpp_basics/vectors/addtovector.cpp create mode 100644 1_cpp_basics/vectors/vectors_initialization.cpp diff --git a/1_cpp_basics/1_cpp_basics.cpp b/1_cpp_basics/1_cpp_basics.cpp deleted file mode 100644 index b5b660c..0000000 --- a/1_cpp_basics/1_cpp_basics.cpp +++ /dev/null @@ -1,54 +0,0 @@ - -using namespace std; - -int main() -{ - int s[5][2] = { - {1, 2}, - {1, 2}, - {1, 2}, - {1, 2} - } ; - - int (*p)[2] ; - int i, j; - //Usage of pointer to an array - for (i = 0 ; i <= 3 ; i++) - { - p=&s[i]; - cout<<"Row"< \ No newline at end of file diff --git a/1_cpp_basics/2_cpp_basics.cpp b/1_cpp_basics/2_cpp_basics.cpp deleted file mode 100644 index ef3ec49..0000000 --- a/1_cpp_basics/2_cpp_basics.cpp +++ /dev/null @@ -1,99 +0,0 @@ - -using std::cout; -using std::endl; - -int main() { - // Constructing from an Array - uint8_t greyArr[11][11] = { - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 } - }; - - cv::Mat greyImg = cv::Mat(11, 11, CV_8U, &greyArr); - std::string greyArrWindow = "Grey Array Image"; - cv::namedWindow(greyArrWindow, cv::WINDOW_AUTOSIZE); - cv::imshow(greyArrWindow, greyImg); - - // note that the above simply copied the pointer into the Mat - // object thus, its is only operatoring on the original array - // data which is very fast but, may not be exactly what you want - for (int i = 0; i < 11; i++) { - for (int j = 0; j < 11; j++) { - greyArr[i][j] = 100; - } - } - std::string monoGreyImgWindow = "Mono Grey Arr Image"; - cv::namedWindow(monoGreyImgWindow); - cv::imshow(monoGreyImgWindow, greyImg); - - // The Mat class also prints to standard out in a nicely readable format - // (a handy debugging feature for smallish Mat objects) - cout << "greyImg = \n" << greyImg << endl; - - // Now lets say I want to copy the data from my 2D array into a Mat instance so it - // has it's own copy to use and manage I can do so with memcpy - cv::Mat greyImgForArrCopy = cv::Mat(11, 11, CV_8U); - std::memcpy(greyImgForArrCopy.data, greyArr, 11 * 11 * sizeof(uint8_t)); - - // update every element of greyArr to be black (ie, 0) - for (int i = 0; i < 11; i++) { - for (int j = 0; j < 11; j++) { - greyArr[i][j] = 0; - } - } - std::string copyedArrImg = "Grey Copied Image"; - cv::namedWindow(copyedArrImg); - cv::imshow(copyedArrImg, greyImgForArrCopy); - - - - // Construct from vector - std::vector vec = { - 0, 0, 0, 0, 0, 0, - 25, 25, 25, 25, 25, 25, - 50, 50, 50, 50, 50, 50, - 75, 75, 75, 75, 75, 75, - 100, 100, 100, 100, 100, 100, - 125, 125, 125, 125, 125, 125, - 150, 150, 150, 150, 150, 150, - 175, 175, 175, 175, 175, 175, - 200, 200, 200, 200, 200, 200, - 225, 225, 225, 225, 225, 225, - 255, 255, 255, 255, 255, 255 - }; - cv::Mat greyImgFromVec(11, 6, CV_8U, vec.data()); - std::string greyImgFromVecWindow = "Grey Image From Vec"; - cv::namedWindow(greyImgFromVecWindow); - cv::imshow(greyImgFromVecWindow, greyImgFromVec); - - // similar to what was shown in the Array section when a Mat object - // is constructed in this manner a pointer to the vector data is copied - // to the data field within the Mat object so, modifying the source vector - // data will be reflected when displaying the contents of the Mat object. - - // again, the memcpy function can be used to copy a vector's data into - // a Mat object similar to what was shown with the array example previously. - - cv::Mat greyImgForVecCopy = cv::Mat(cv::Size(6, 11), CV_8U); - std::memcpy(greyImgForVecCopy.data, vec.data(), vec.size() * sizeof(uint8_t)); - - std::fill(std::begin(vec), std::end(vec), 100); - - std::string greyImgFromVecCopyWindow = "Grey Image Vec Copy"; - cv::namedWindow(greyImgFromVecCopyWindow); - cv::imshow(greyImgFromVecCopyWindow, greyImgForVecCopy); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} \ No newline at end of file diff --git a/1_cpp_basics/2_cpp_basics.hpp b/1_cpp_basics/2_cpp_basics.hpp deleted file mode 100644 index c0a5b5f..0000000 --- a/1_cpp_basics/2_cpp_basics.hpp +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include - -#include -#include diff --git a/1_cpp_basics/arrays/a.out b/1_cpp_basics/arrays/a.out new file mode 100755 index 0000000000000000000000000000000000000000..cb73575295adbe482ee40167223b35410f40107d GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/1_cpp_basics/arrays/arrays2d.cpp b/1_cpp_basics/arrays/arrays2d.cpp new file mode 100644 index 0000000..6269493 --- /dev/null +++ b/1_cpp_basics/arrays/arrays2d.cpp @@ -0,0 +1,24 @@ +#include +using namespace std; +int main( ) +{ + int arr[4][2] = { + { 10, 11 }, + { 20, 21 }, + { 30, 31 }, + { 40, 41 } + } ; + + int i,j; + + cout<<"Printing a 2D Array:\n"; + for(i=0;i<4;i++) + { + for(j=0;j<2;j++) + { + cout<<"\t"< +using namespace std; + +void display(int (*ptr)[4], int row, int col) +{ + int i, j ; + for(i=0;iT17JPQ36b5wDo@HzI$Gu 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 MQ(~n +using namespace std; + +enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32}; + +int main() { + + seasons s; + + s = summer; + cout << "Summer = " << s << endl; + + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/namespace/a.out b/1_cpp_basics/namespace/a.out new file mode 100755 index 0000000000000000000000000000000000000000..a9b5d4eb8a6fd44c3318c52c493b8f54def6fe35 GIT binary patch literal 17424 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 FzX8(z>ly$6 literal 0 HcmV?d00001 diff --git a/1_cpp_basics/namespace/namespace.cpp b/1_cpp_basics/namespace/namespace.cpp new file mode 100644 index 0000000..6141e7a --- /dev/null +++ b/1_cpp_basics/namespace/namespace.cpp @@ -0,0 +1,26 @@ +#include +using namespace std; +// first name space +namespace first_space +{ +void func() +{ + cout << "Inside first_space" << endl; +} +} + +// second name space +namespace second_space +{ +void func() +{ + cout << "Inside second_space" << endl; +} +} +using namespace first_space; +int main () +{ +// This calls function from first name space. +func(); +return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/pointers/a.out b/1_cpp_basics/pointers/a.out new file mode 100755 index 0000000000000000000000000000000000000000..e8582781433933880217fad2443a82895ed71b05 GIT binary patch literal 17432 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 +using namespace std; +int main() +{ + int number=30; + int *p; + p=&number;//stores the address of number variable + cout<<"Address of number variable is:"<<&number< +using namespace std; +/* Usage of pointer to an array */ +int main() +{ + int a[4][2] = { + {1, 2}, + {1, 2}, + {1, 2}, + {1, 2} + } ; + + int (*ptr)[2] ; + int i, j; + for (i = 0 ; i <= 3 ; i++) + { + ptr=&a[i]; + cout<<"Row"< -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -int main() { - - // Construct from and array - uint8_t greyArr[11][11] = { - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 } - }; - - cv::Mat greyImg = cv::Mat(11, 11, CV_8U, &greyArr); - std::string greyArrWindow = "Grey Array Image"; - cv::namedWindow(greyArrWindow, cv::WINDOW_AUTOSIZE); - cv::imshow(greyArrWindow, greyImg); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} -``` - -Above is an example of creating a Mat object from a standard C++ two dimensional (ie, nested) array of unsigned 8 bit integers representing grey scale color intensities from black (0) to white (255). In this example we have specified the dimensions, in rows and columns, of the Mat object being constructed as well as the data type of CV_8U indicating a single channel 8 bit unsigned integer, also defined as a uchar in OpenCV. We then used the HighGUI library to display the Mat object populated with a gradient of intensities of grey pixels within a named window. - -**Output :** - -![image](https://i.imgur.com/2rP7TPs.png) - -2. **OpenCV program in C++ to create a matrix using Mat function and** **display the matrix as the output on the screen.** - -```C++ -//including all the necessary headers -#include "opencv2/core.hpp" -#include -#include -//defining the namespace std and cv -using namespace std; -using namespace cv; -void main() -{ -//creating a matrix using mat function and displaying the matrix as the output on the screen -Mat Mvalue(4, 4, CV_8UC3, Scalar(1, 0, 1)); -cout<<"The resulting matrix is:\n"; -cout << "Mvalue = " << endl << " " << Mvalue << endl << endl; -} -``` -Here we have used `cout` instead of `imshow` and hence we get a matrix as an output on terminal. - -**Output :** - -![image](https://i.imgur.com/iENpEyD.png) - -3. **Constructing an OpenCV Mat Object from C++ Vector :** - -Pixel data residing in the standard C++ vector can also be used to construct an OpenCV Mat object in a manner very similar to what is shown above in the array example. The major difference being you must call the data() method of the vector class like so. - -```C++ -#include -#include -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -int main() { - - // ... omitting the previous examples for brevity - - std::vector vec = { - 0, 0, 0, 0, 0, 0, - 25, 25, 25, 25, 25, 25, - 50, 50, 50, 50, 50, 50, - 75, 75, 75, 75, 75, 75, - 100, 100, 100, 100, 100, 100, - 125, 125, 125, 125, 125, 125, - 150, 150, 150, 150, 150, 150, - 175, 175, 175, 175, 175, 175, - 200, 200, 200, 200, 200, 200, - 225, 225, 225, 225, 225, 225, - 255, 255, 255, 255, 255, 255 - }; - cv::Mat greyImgFromVec(11, 6, CV_8U, vec.data()); - std::string greyImgFromVecWindow = "Grey Image From Vec"; - cv::namedWindow(greyImgFromVecWindow); - cv::imshow(greyImgFromVecWindow, greyImgFromVec); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} -``` -**Output :** - -![image](https://i.imgur.com/tijRwaX.png) - -4. **Copying vector Data Into an OpenCV Mat Object :** - -The method of copying vector data into a Mat object is done in a similar fashion as seen in the array example utilizing the memcpy function. However, to demonstrate yet another way of constructing a Mat object we will utilize the Size class from OpenCV to specify the dimensions of the Mat object being constructed but, do note the order of dimensions are switched when using the Size object whereby the number of columns is supplied first then followed by the rows which differs from the rows then columns order of the previously shown Mat constructors - -```C++ -#include -#include -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -int main() { - // ... omitting above examples for brevity - - std::vector vec = { - 0, 0, 0, 0, 0, 0, - 25, 25, 25, 25, 25, 25, - 50, 50, 50, 50, 50, 50, - 75, 75, 75, 75, 75, 75, - 100, 100, 100, 100, 100, 100, - 125, 125, 125, 125, 125, 125, - 150, 150, 150, 150, 150, 150, - 175, 175, 175, 175, 175, 175, - 200, 200, 200, 200, 200, 200, - 225, 225, 225, 225, 225, 225, - 255, 255, 255, 255, 255, 255 - }; - // ... omitting example for brevity - - // again, the memcpy function can be used to copy a vector's data into - // a Mat object similar to what was shown with the array example previously. - cv::Mat greyImgForVecCopy = cv::Mat(cv::Size(6, 11), CV_8U); - std::memcpy(greyImgForVecCopy.data, vec.data(), vec.size() * sizeof(uint8_t)); - - std::fill(std::begin(vec), std::end(vec), 100); - - std::string greyImgFromVecCopyWindow = "Grey Image Vec Copy"; - cv::namedWindow(greyImgFromVecCopyWindow); - cv::imshow(greyImgFromVecCopyWindow, greyImgForVecCopy); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} -``` -**Output :** - -![image](https://i.imgur.com/tijRwaX.png) - - - - -    - - - - - - - - - + \ No newline at end of file diff --git a/1_cpp_basics/typecasting/a.out b/1_cpp_basics/typecasting/a.out new file mode 100755 index 0000000000000000000000000000000000000000..633226e5481c6f8921b3a078417eef624b70cace GIT binary patch literal 17520 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 PAKW1%aQ$m7wkG>0+!$;o literal 0 HcmV?d00001 diff --git a/1_cpp_basics/typecasting/explicit_typecasting.cpp b/1_cpp_basics/typecasting/explicit_typecasting.cpp new file mode 100644 index 0000000..b84de96 --- /dev/null +++ b/1_cpp_basics/typecasting/explicit_typecasting.cpp @@ -0,0 +1,17 @@ +// C++ program to demonstrate +// explicit type casting + +#include +using namespace std; + +int main() +{ + float x = 1.2; + + // Explicit conversion from double to int + int sum = (int)x + 1; + + cout << "Sum = " << sum< +using namespace std; + +int main() +{ + int x = 10; // integer x + char y = 'a'; // character c + + // y implicitly converted to int. ASCII + // value of 'a' is 97 + x = x + y; + + // x is implicitly converted to float + float z = x + 1.0; + + cout << "x = " << x << endl + << "y = " << y << endl + << "z = " << z << endl; + + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/vectors/a.out b/1_cpp_basics/vectors/a.out new file mode 100755 index 0000000000000000000000000000000000000000..6fd8d19976125f58f968f563125a3de54667c950 GIT binary patch literal 27360 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 +#include +using namespace std; + +int main() { + vector num {1, 2, 3, 4, 5}; + + cout << "Element at Index 0: " << num.at(0) << endl; + cout << "Element at Index 2: " << num.at(2) << endl; + cout << "Element at Index 4: " << num.at(4) << endl; + + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/vectors/addtovector.cpp b/1_cpp_basics/vectors/addtovector.cpp new file mode 100644 index 0000000..ec96c9a --- /dev/null +++ b/1_cpp_basics/vectors/addtovector.cpp @@ -0,0 +1,25 @@ +#include +#include +using namespace std; + +int main() { + vector num {1, 2, 3, 4, 5}; + + cout << "Initial Vector: "; + + for (const int& i : num) { + cout << i << " "; + } + + // add the integers 6 and 7 to the vector + num.push_back(6); + num.push_back(7); + + cout << "\nUpdated Vector: "; + + for (const int& i : num) { + cout << i << " "; + } + cout<< endl; + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/vectors/vectors_initialization.cpp b/1_cpp_basics/vectors/vectors_initialization.cpp new file mode 100644 index 0000000..4db7ff7 --- /dev/null +++ b/1_cpp_basics/vectors/vectors_initialization.cpp @@ -0,0 +1,39 @@ +#include +#include +using namespace std; + +int main() { + + // initializer list + vector vector1 = {1, 2, 3, 4, 5}; + + // uniform initialization + vector vector2{6, 7, 8, 9, 10}; + + // method 3 + vector vector3(5, 12); + // Here 5 is the size of vector and 12 is the value. + + cout << "vector1 = "; + + // ranged loop + for (const int& i : vector1) { + cout << i << " "; + } + + cout << "\nvector2 = "; + + // ranged loop + for (const int& i : vector2) { + cout << i << " "; + } + + cout << "\nvector3 = "; + + // ranged loop + for (int i : vector3) { + cout << i << " "; + } + cout << endl; + return 0; +} \ No newline at end of file From 4a9246e8a421c00f4ea89556d3948f068ce49e54 Mon Sep 17 00:00:00 2001 From: VanshPanchal0308 Date: Thu, 23 Mar 2023 12:43:31 +0530 Subject: [PATCH 05/18] Updated Readme of C++ with fun,class,templates --- 1_cpp_basics/readme.md | 387 +++++++++++++++++++++-------------------- 1 file changed, 195 insertions(+), 192 deletions(-) diff --git a/1_cpp_basics/readme.md b/1_cpp_basics/readme.md index 45cced4..5b46df1 100644 --- a/1_cpp_basics/readme.md +++ b/1_cpp_basics/readme.md @@ -1,10 +1,13 @@ # **Basics Of C++** ## **Table Of Contents :** - +* [Variables And Data Types](#variables-and-data-types) * [Type Casting](#type-casting) * [Namespace](#namespace) * [Enumeration](#enumeration) +* [Functions](#functions) +* [Classes And Objects](#classes-and-objects) +* [Templates](#templates) * [Arrays](#arrays) * [Initializing Arrays](#initializing-arrays) * [ Array Accessing](#array-accessing) @@ -14,9 +17,15 @@ * [Pointers And Array](#pointers-and-array) * [Passing 2D Array To A Function](#passing-2d-array-to-a-function) * [Vectors](#vectors) -* [OpenCV Mat](#opencv-mat) +## **Variables and Data Types:** +A variable provides us with named storage that our programs can manipulate. Each variable in C++ has a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable. + +![datatypes](https://i.imgur.com/1IycG7T.jpg) + + +![size](https://i.imgur.com/UAGOLXA.png) ## **Type Casting:** Type casting refers to the conversion of one data type to another in a program. Typecasting can be done in two ways: automatically by the compiler and manually by the programmer or user. Type Casting is also known as Type Conversion. @@ -47,7 +56,15 @@ int main() return 0; } ``` -2. **Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. +**Output:** + +**`x = 107`** + +**`y = a`** + +**`z = 108`** + +2.**Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. **Synatx:** @@ -158,6 +175,181 @@ int main() { In the above code we first made an enum datatype `seasons` ,having elements `spring,summer,autumn and winter` and assigned them values of 34,4,9,32 respectively.Then we made a variable `s` of data type `seasons` i.e enum and assigned it the value of `summer`i.e value of summer(4) is stored in `s` variable. + +## **Functions:** + +A function is a set of statements that take inputs, do some specific computation, and produce output. The idea is to put some commonly or repeatedly done tasks together and make a function so that instead of writing the same code again and again for different inputs, we can call the function. + +A C++ function definition consists of a function header and a function body. Here are all the parts of a function − + + Return Type − A function may return a value. The return_type is the data type of the value the function returns. Some functions perform the desired operations without returning a value. In this case, the return_type is the keyword void. + + Function Name − This is the actual name of the function. The function name and the parameter list together constitute the function signature. + + Parameters − A parameter is like a placeholder. When a function is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument. The parameter list refers to the type, order, and number of the parameters of a function. Parameters are optional; that is, a function may contain no parameters. + + Function Body − The function body contains a collection of statements that define what the function does. + +```C++ +#include +using namespace std; + +// Following function that takes two parameters 'x' and 'y' +// as input and returns max of two input numbers +int max(int x, int y) +{ + if (x > y) + return x; + else + return y; +} + +// main function that doesn't receive any parameter and +// returns integer +int main() +{ + int a = 10, b = 20; + + // Calling above function to find max of 'a' and 'b' + int m = max(a, b); + + cout << "m is " << m; + return 0; +} +``` +**Output:** + +**`m is 20`** + +## **Classes And Objects:** +A class in C++ is the building block that leads to Object-Oriented programming. It is a user-defined data type, which holds its own data members and member functions, which can be accessed and used by creating an instance of that class. A C++ class is like a blueprint for an object.A Class is a user defined data-type which has data members and member functions. + +An Object is an instance of a Class. When a class is defined, no memory is allocated but when it is instantiated (i.e. an object is created) memory is allocated. + +![immage](https://i.imgur.com/ekXLq3C.png) + +In C++, there are three access specifiers: + + **public** - members are accessible from outside the class + + **private** - members cannot be accessed (or viewed) from outside the class + + **protected** - members cannot be accessed from outside the class, however, they can be accessed in inherited classes. + +```C++ +// C++ program to demonstrate function +// declaration outside class + +#include +using namespace std; +class Sra +{ + public: + char first_letter; + int id; + + // printname is not defined inside class definition + void printletter(); + + // printid is defined inside class definition + void printid() + { + cout <<"SRA id is: "<   +using namespace std;   +template T add(T &a,T &b)   +{   +    T result = a+b;   +    return result;   +       +}   +int main()   +{   +  int i =2;   +  int j =3;   +  float m = 2.3;   +  float n = 1.2;   +  cout<<"Addition of i and j is :"<   + using namespace std;   + template   + class A    + {   +     public:   +     T num1 = 5;   +     T num2 = 6;   +     void add()   +     {   +         std::cout << "Addition of num1 and num2 : " << num1+num2< d;   +     d.add();   +     return 0;   + }   + ``` +**Output:** + +**`Addition of num1 and num2 : 11`** + ## **Arrays :** An array is a collection of elements of the same type placed in contiguous memory locations that can be individually referenced by using an index to a unique identifier. @@ -539,195 +731,6 @@ We use the index number to access the vector elements. Here, we use the **`at()` ![output](https://i.imgur.com/bOxhXIl.png) - ## **OpenCV MAT** - -The images captured using cameras, scanners etc. capture the numerical values at each points of the image which are nothing but the values of the pixels at those points and in order to store and handle the images in the form of a matrix and to manage the memory associated with the images, we make use of class called Mat in OpenCV and by making use of Mat class in OpenCV, the memory management happens automatically and the memory allocated for a Mat class object can be reused and this class is available in the package opencv2/core.hpp in the OpenCV C++ library. - -1. **Constructing an OpenCV Mat Object from C++ Array** - -``` C++ -include -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -int main() { - - // Construct from and array - uint8_t greyArr[11][11] = { - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 }, - { 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255 } - }; - - cv::Mat greyImg = cv::Mat(11, 11, CV_8U, &greyArr); - std::string greyArrWindow = "Grey Array Image"; - cv::namedWindow(greyArrWindow, cv::WINDOW_AUTOSIZE); - cv::imshow(greyArrWindow, greyImg); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} -``` - -Above is an example of creating a Mat object from a standard C++ two dimensional (ie, nested) array of unsigned 8 bit integers representing grey scale color intensities from black (0) to white (255). In this example we have specified the dimensions, in rows and columns, of the Mat object being constructed as well as the data type of CV_8U indicating a single channel 8 bit unsigned integer, also defined as a uchar in OpenCV. We then used the HighGUI library to display the Mat object populated with a gradient of intensities of grey pixels within a named window. - -**Output :** - -![image](https://i.imgur.com/2rP7TPs.png) - -2. **OpenCV program in C++ to create a matrix using Mat function and** **display the matrix as the output on the screen.** - -```C++ -//including all the necessary headers -#include "opencv2/core.hpp" -#include -#include -//defining the namespace std and cv -using namespace std; -using namespace cv; -void main() -{ -//creating a matrix using mat function and displaying the matrix as the output on the screen -Mat Mvalue(4, 4, CV_8UC3, Scalar(1, 0, 1)); -cout<<"The resulting matrix is:\n"; -cout << "Mvalue = " << endl << " " << Mvalue << endl << endl; -} -``` -Here we have used `cout` instead of `imshow` and hence we get a matrix as an output on terminal. - -**Output :** - -![image](https://i.imgur.com/iENpEyD.png) - -3. **Constructing an OpenCV Mat Object from C++ Vector :** - -Pixel data residing in the standard C++ vector can also be used to construct an OpenCV Mat object in a manner very similar to what is shown above in the array example. The major difference being you must call the data() method of the vector class like so. - -```C++ -#include -#include -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -int main() { - - // ... omitting the previous examples for brevity - - std::vector vec = { - 0, 0, 0, 0, 0, 0, - 25, 25, 25, 25, 25, 25, - 50, 50, 50, 50, 50, 50, - 75, 75, 75, 75, 75, 75, - 100, 100, 100, 100, 100, 100, - 125, 125, 125, 125, 125, 125, - 150, 150, 150, 150, 150, 150, - 175, 175, 175, 175, 175, 175, - 200, 200, 200, 200, 200, 200, - 225, 225, 225, 225, 225, 225, - 255, 255, 255, 255, 255, 255 - }; - cv::Mat greyImgFromVec(11, 6, CV_8U, vec.data()); - std::string greyImgFromVecWindow = "Grey Image From Vec"; - cv::namedWindow(greyImgFromVecWindow); - cv::imshow(greyImgFromVecWindow, greyImgFromVec); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} -``` -**Output :** - -![image](https://i.imgur.com/tijRwaX.png) - -4. **Copying vector Data Into an OpenCV Mat Object :** - -The method of copying vector data into a Mat object is done in a similar fashion as seen in the array example utilizing the memcpy function. However, to demonstrate yet another way of constructing a Mat object we will utilize the Size class from OpenCV to specify the dimensions of the Mat object being constructed but, do note the order of dimensions are switched when using the Size object whereby the number of columns is supplied first then followed by the rows which differs from the rows then columns order of the previously shown Mat constructors - -```C++ -#include -#include -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -int main() { - // ... omitting above examples for brevity - - std::vector vec = { - 0, 0, 0, 0, 0, 0, - 25, 25, 25, 25, 25, 25, - 50, 50, 50, 50, 50, 50, - 75, 75, 75, 75, 75, 75, - 100, 100, 100, 100, 100, 100, - 125, 125, 125, 125, 125, 125, - 150, 150, 150, 150, 150, 150, - 175, 175, 175, 175, 175, 175, - 200, 200, 200, 200, 200, 200, - 225, 225, 225, 225, 225, 225, - 255, 255, 255, 255, 255, 255 - }; - // ... omitting example for brevity - - // again, the memcpy function can be used to copy a vector's data into - // a Mat object similar to what was shown with the array example previously. - cv::Mat greyImgForVecCopy = cv::Mat(cv::Size(6, 11), CV_8U); - std::memcpy(greyImgForVecCopy.data, vec.data(), vec.size() * sizeof(uint8_t)); - - std::fill(std::begin(vec), std::end(vec), 100); - - std::string greyImgFromVecCopyWindow = "Grey Image Vec Copy"; - cv::namedWindow(greyImgFromVecCopyWindow); - cv::imshow(greyImgFromVecCopyWindow, greyImgForVecCopy); - - cv::waitKey(0); - cv::destroyAllWindows(); - - return 0; -} -``` -**Output :** - -![image](https://i.imgur.com/tijRwaX.png) - - - - -    - - - From 9b15ef53ca158225c22197bd92081cd01a82c3ad Mon Sep 17 00:00:00 2001 From: VanshPanchal0308 Date: Thu, 23 Mar 2023 13:23:17 +0530 Subject: [PATCH 06/18] Updated Readme of C++ with control_loops --- 1_cpp_basics/readme.md | 162 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 2 deletions(-) diff --git a/1_cpp_basics/readme.md b/1_cpp_basics/readme.md index 55c9e4c..1570484 100644 --- a/1_cpp_basics/readme.md +++ b/1_cpp_basics/readme.md @@ -4,6 +4,8 @@ * [Variables And Data Types](#variables-and-data-types) * [Type Casting](#type-casting) * [Namespace](#namespace) +* [Conditional Statements](#conditional-statements) +* [Control Loops](#control-loops) * [Enumeration](#enumeration) * [Functions](#functions) * [Classes And Objects](#classes-and-objects) @@ -11,8 +13,9 @@ * [Arrays](#arrays) * [Initializing Arrays](#initializing-arrays) * [ Array Accessing](#array-accessing) + * [Printing 1-D Array](#printing-1-d-array) * [Multidimensional Arrays](#multidimensional-arrays) - * [Printing a 2D array](#printing-a-2d-array) + * [Printing a 2D array](#printing-a-2d-array) * [Pointers](#pointers) * [Pointers And Array](#pointers-and-array) * [Passing 2D Array To A Function](#passing-2d-array-to-a-function) @@ -143,6 +146,134 @@ return 0; **`Inside first_space`** +## **Conditional Statements:** +Conditional statements, also known as selection statements, are used to make decisions based on a given condition. If the condition evaluates to True, a set of statements is executed, otherwise another set of statements is executed. + +1. **If Statement:** + +```C++ +#include +using namespace std; +int main() +{ + int num =10; + if(num>5) // condition + { + cout<<"Hello From SRA\n"; +//If condn is fullfilled it will get executed + } + return 0; +} +``` +**Output:** + +**`Hello From SRA`** + +2. **If-else:** +```C++ +//Code to find even and odd num using if else statement +#include +using namespace std; +int main() +{ + int num =10; + if(num%2 == 0) + {cout<<"the number is even\n"; + } + else + {cout<<"The number is odd\n";} + return 0; +} +``` +**Output:** + +**`Then number is even`** + +3. **Switch statement:** + +```C++ +#include +using namespace std; +int main() +{ +int day = 4; +switch (day) { + case 1: + cout << "Monday"; + break; + case 2: + cout << "Tuesday"; + break; + case 3: + cout << "Wednesday"; + break; + case 4: + cout << "Thursday"; + break; + case 5: + cout << "Friday"; + break; + case 6: + cout << "Saturday"; + break; + case 7: + cout << "Sunday"; + break; + default: + cout<<"Not a day"; + break; +} +return 0; +} +``` + +**Output** + +**`Thursday`** + +## **Control Loops:** + +1, **For Loop:** + +Firsts initialize,then condition check,then execute bode,finally updates the control variable. + +**Synatx:** +```C++ +for( initialization exp; test exp; update exp) +{ + + // statement we want to execute; +} +``` + +2. **While Loop:** + +**Syntax:** +```C++ +initialization exp; +while(test exp) +{ + + // statement we want to execute; + //update statement; +} +``` +3. **Do-While Loop:** + +Firsts initialize,,then execute bode, updates the control variable,then condition check. +In a do-while loop the loop body executes at least once irrespective of of the test condition. + +**Syntax:** +```C++ +nitialization exp; +do +{ + // statement we want to execute; + // update expression; +}while(test expression); +``` + + ## **Enumeration:** Enum, which is also known as enumeration, is a user-defined data type that enables you to create a new data type that has a fixed range of possible values, and the variable can select one value from the set of values.nums or enumerations are generally used when you expect the variable to select one value from the possible set of values. It increases the abstraction and enables you to focus more on values rather than worrying about how to store them. @@ -398,8 +529,35 @@ int foo[5]; // declaration of a new array`** foo[2] = 75; // access to an element of the array.`** ``` +## **Printing 1-D Array:** +We can use loops for taking and printing values of a 1-D array, +```C++ +#include +using namespace std; +int main() +{ + int arr1[5]= {1,2,3,4,5}; + int i; + for(i=0;i<5;i++) + {cout< Date: Thu, 23 Mar 2023 17:46:35 +0530 Subject: [PATCH 07/18] Final changes --- 1_cpp_basics/arrays/a.out | Bin 17368 -> 0 bytes .../classes_and_objects.cpp | 40 ++++++++++++++++++ 1_cpp_basics/conditional_statements/if.cpp | 12 ++++++ .../conditional_statements/if_else.cpp | 16 +++++++ .../conditional_statements/switch.cpp | 33 +++++++++++++++ 1_cpp_basics/enumeration/a.out | Bin 17376 -> 0 bytes 1_cpp_basics/functions/function.cpp | 25 +++++++++++ 1_cpp_basics/namespace/a.out | Bin 17424 -> 0 bytes 1_cpp_basics/pointers/a.out | Bin 17432 -> 0 bytes 1_cpp_basics/readme.md | 11 ++++- 1_cpp_basics/templates/class_template.cpp | 21 +++++++++ .../templates/functional_template.cpp | 21 +++++++++ 1_cpp_basics/typecasting/a.out | Bin 17520 -> 0 bytes 1_cpp_basics/vectors/a.out | Bin 27360 -> 0 bytes .../vectors/vectors_initialization.cpp | 3 +- 15 files changed, 179 insertions(+), 3 deletions(-) delete mode 100755 1_cpp_basics/arrays/a.out create mode 100644 1_cpp_basics/classes_and_objects/classes_and_objects.cpp create mode 100644 1_cpp_basics/conditional_statements/if.cpp create mode 100644 1_cpp_basics/conditional_statements/if_else.cpp create mode 100644 1_cpp_basics/conditional_statements/switch.cpp delete mode 100755 1_cpp_basics/enumeration/a.out create mode 100644 1_cpp_basics/functions/function.cpp delete mode 100755 1_cpp_basics/namespace/a.out delete mode 100755 1_cpp_basics/pointers/a.out create mode 100644 1_cpp_basics/templates/class_template.cpp create mode 100644 1_cpp_basics/templates/functional_template.cpp delete mode 100755 1_cpp_basics/typecasting/a.out delete mode 100755 1_cpp_basics/vectors/a.out diff --git a/1_cpp_basics/arrays/a.out b/1_cpp_basics/arrays/a.out deleted file mode 100755 index cb73575295adbe482ee40167223b35410f40107d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17368 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 diff --git a/1_cpp_basics/classes_and_objects/classes_and_objects.cpp b/1_cpp_basics/classes_and_objects/classes_and_objects.cpp new file mode 100644 index 0000000..0b7577d --- /dev/null +++ b/1_cpp_basics/classes_and_objects/classes_and_objects.cpp @@ -0,0 +1,40 @@ +// C++ program to demonstrate function +// declaration outside class + +#include +using namespace std; +class Sra +{ + public: + char first_letter; + int id; + + // printname is not defined inside class definition + void printletter(); + + // printid is defined inside class definition + void printid() + { + cout <<"SRA id is: "< +using namespace std; +int main() +{ + int num =10; + if(num>5) // condition + { + cout<<"Hello From SRA\n"; +//If condn is fullfilled it will get executed + } + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/conditional_statements/if_else.cpp b/1_cpp_basics/conditional_statements/if_else.cpp new file mode 100644 index 0000000..3a619df --- /dev/null +++ b/1_cpp_basics/conditional_statements/if_else.cpp @@ -0,0 +1,16 @@ +//Code to find even and odd num using if else statement +#include +using namespace std; +int main() +{ + int num =10; + if(num%2 == 0) + { + cout<<"the number is even\n"; + } + else + { + cout<<"The number is odd\n"; + } + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/conditional_statements/switch.cpp b/1_cpp_basics/conditional_statements/switch.cpp new file mode 100644 index 0000000..51ca69a --- /dev/null +++ b/1_cpp_basics/conditional_statements/switch.cpp @@ -0,0 +1,33 @@ +#include +using namespace std; +int main() +{ +int day = 4; +switch (day) { + case 1: + cout << "Monday"; + break; + case 2: + cout << "Tuesday"; + break; + case 3: + cout << "Wednesday"; + break; + case 4: + cout << "Thursday"; + break; + case 5: + cout << "Friday"; + break; + case 6: + cout << "Saturday"; + break; + case 7: + cout << "Sunday"; + break; + default: + cout<<"Not a day"; + break; +} +return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/enumeration/a.out b/1_cpp_basics/enumeration/a.out deleted file mode 100755 index 831d2d0ca2312de51cc65451a802da0ffcb83d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17376 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 MQ(~n +using namespace std; + +// Following function that takes two parameters 'x' and 'y' +// as input and returns max of two input numbers +int max(int x, int y) +{ + if (x > y) + return x; + else + return y; +} + +// main function that doesn't receive any parameter and +// returns integer +int main() +{ + int a = 10, b = 20; + + // Calling above function to find max of 'a' and 'b' + int m = max(a, b); + + cout << "m is " << m; + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/namespace/a.out b/1_cpp_basics/namespace/a.out deleted file mode 100755 index a9b5d4eb8a6fd44c3318c52c493b8f54def6fe35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17424 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 FzX8(z>ly$6 diff --git a/1_cpp_basics/pointers/a.out b/1_cpp_basics/pointers/a.out deleted file mode 100755 index e8582781433933880217fad2443a82895ed71b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17432 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.cpp +Followed by running the executable, with this command: +$ ./a.out +``` ## **Variables and Data Types:** A variable provides us with named storage that our programs can manipulate. Each variable in C++ has a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable. @@ -233,7 +240,7 @@ return 0; ## **Control Loops:** -1, **For Loop:** +1. **For Loop:** Firsts initialize,then condition check,then execute bode,finally updates the control variable. @@ -265,7 +272,7 @@ In a do-while loop the loop body executes at least once irrespective of of the t **Syntax:** ```C++ -nitialization exp; +initialization exp; do { // statement we want to execute; diff --git a/1_cpp_basics/templates/class_template.cpp b/1_cpp_basics/templates/class_template.cpp new file mode 100644 index 0000000..f048dda --- /dev/null +++ b/1_cpp_basics/templates/class_template.cpp @@ -0,0 +1,21 @@ +#include +using namespace std; +template +class A + { + public: + T num1 = 5; + T num2 = 6; + void add() + { + std::cout << "Addition of num1 and num2 : " << num1+num2< d; + d.add(); + return 0; + } \ No newline at end of file diff --git a/1_cpp_basics/templates/functional_template.cpp b/1_cpp_basics/templates/functional_template.cpp new file mode 100644 index 0000000..3cd02b2 --- /dev/null +++ b/1_cpp_basics/templates/functional_template.cpp @@ -0,0 +1,21 @@ +//Example of Function Template + +#include +using namespace std; +template T add(T &a,T &b) +{ + T result = a+b; + return result; + +} +int main() +{ + int i =2; + int j =3; + float m = 2.3; + float n = 1.2; + cout<<"Addition of i and j is :"<Eb3O%~HBhJBictmX?sDqbroFW4p;oj_uiJ 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 PAKW1%aQ$m7wkG>0+!$;o diff --git a/1_cpp_basics/vectors/a.out b/1_cpp_basics/vectors/a.out deleted file mode 100755 index 6fd8d19976125f58f968f563125a3de54667c950..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27360 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 Date: Thu, 23 Mar 2023 22:12:05 +0530 Subject: [PATCH 08/18] Updated Readme of C++ with comments --- 1_cpp_basics/arrays/arrays2d.cpp | 8 +-- .../classes_and_objects.cpp | 6 +-- .../conditional_statements/if_else.cpp | 4 +- .../conditional_statements/switch.cpp | 12 ++--- 1_cpp_basics/enumeration/enumeration.cpp | 6 +-- 1_cpp_basics/functions/function.cpp | 2 +- 1_cpp_basics/readme.md | 52 +++++++++---------- 7 files changed, 45 insertions(+), 45 deletions(-) diff --git a/1_cpp_basics/arrays/arrays2d.cpp b/1_cpp_basics/arrays/arrays2d.cpp index 6269493..a57d1d5 100644 --- a/1_cpp_basics/arrays/arrays2d.cpp +++ b/1_cpp_basics/arrays/arrays2d.cpp @@ -2,19 +2,19 @@ using namespace std; int main( ) { - int arr[4][2] = { + int arr[4][2] = {//An array with 4 rows and 2 columns is made and initialized { 10, 11 }, { 20, 21 }, { 30, 31 }, { 40, 41 } } ; - int i,j; + int i,j;//Two variables for looping cout<<"Printing a 2D Array:\n"; - for(i=0;i<4;i++) + for(i=0;i<4;i++)//traversing through row { - for(j=0;j<2;j++) + for(j=0;j<2;j++)//traversing through column { cout<<"\t"< Date: Sat, 25 Mar 2023 11:35:28 +0530 Subject: [PATCH 09/18] Final changes --- .../arrays/passing2darraytofunction.cpp | 14 +++--- 1_cpp_basics/pointers/pointers_and_array.cpp | 14 +++--- 1_cpp_basics/readme.md | 48 +++++++++---------- 1_cpp_basics/templates/class_template.cpp | 14 +++--- .../templates/functional_template.cpp | 6 +-- 1_cpp_basics/vectors/access_vector.cpp | 10 ++-- 1_cpp_basics/vectors/addtovector.cpp | 4 +- 7 files changed, 55 insertions(+), 55 deletions(-) diff --git a/1_cpp_basics/arrays/passing2darraytofunction.cpp b/1_cpp_basics/arrays/passing2darraytofunction.cpp index aa3e9b6..30da0c0 100644 --- a/1_cpp_basics/arrays/passing2darraytofunction.cpp +++ b/1_cpp_basics/arrays/passing2darraytofunction.cpp @@ -1,27 +1,27 @@ #include using namespace std; -void display(int (*ptr)[4], int row, int col) +void display(int (*ptr)[4], int row, int col) //Call by Address { int i, j ; for(i=0;i using namespace std; /* Usage of pointer to an array */ -int main() +int main( ) { - int a[4][2] = { + int a[4][2] = { // Declaring and initialising a 2D array {1, 2}, {1, 2}, {1, 2}, {1, 2} } ; - int (*ptr)[2] ; + int (*ptr)[2] ; //Declaring a 2D pointer int i, j; for (i = 0 ; i <= 3 ; i++) { - ptr=&a[i]; + ptr=&a[i]; //Stores the address of Array a with index i, in ptr cout<<"Row"<   using namespace std;   -template T add(T &a,T &b)   +template T add(T &a,T &b)  //Declaring a Functional template {       T result = a+b;       return result;   @@ -451,9 +451,9 @@ int main()     int j =3;     float m = 2.3;     float n = 1.2;   -  cout<<"Addition of i and j is :"<   using namespace std;   - template   + template  //Declaring the Class template class A    {       public:   @@ -483,7 +483,7 @@ int main()   int main()   {       A d;   -     d.add();   +     d.add();  //Calling the class method     return 0;   }   ``` @@ -651,7 +651,7 @@ A pointer is a variable that stores the memory address of an object. Pointers ar int number=30;     int ∗p;       p=&number;//stores the address of number variable     - cout<<"Address of number variable is:"<<&number< +#include using namespace std; /* Usage of pointer to an array */ int main( ) { - int a[4][2] = { + int a[4][2] = { // Declaring and initialising a 2D array {1, 2}, {1, 2}, {1, 2}, {1, 2} } ; - int (*ptr)[2] ; + int (*ptr)[2] ; //Declaring a 2D pointer int i, j; for (i = 0 ; i <= 3 ; i++) { - ptr=&a[i]; + ptr=&a[i]; //Stores the address of Array a with index i, in ptr cout<<"Row"< using namespace std; -void display(int (*ptr)[4], int row, int col) +void display(int (*ptr)[4], int row, int col) //Call by Address { int i, j ; for(i=0;i num {1, 2, 3, 4, 5}; + vector num {1, 2, 3, 4, 5}; //Initialising a vector cout << "Initial Vector: "; @@ -882,11 +882,11 @@ Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. H using namespace std; int main() { - vector num {1, 2, 3, 4, 5}; + vector num {1, 2, 3, 4, 5}; //Initialised a vector - cout << "Element at Index 0: " << num.at(0) << endl; - cout << "Element at Index 2: " << num.at(2) << endl; - cout << "Element at Index 4: " << num.at(4); + cout << "Element at Index 0: " << num.at(0) << endl; //Printing value at vector index 0 + cout << "Element at Index 2: " << num.at(2) << endl; //Printing value at vector index 2 + cout << "Element at Index 4: " << num.at(4); //Printing value at vector index 4 return 0; } diff --git a/1_cpp_basics/templates/class_template.cpp b/1_cpp_basics/templates/class_template.cpp index f048dda..6d628f6 100644 --- a/1_cpp_basics/templates/class_template.cpp +++ b/1_cpp_basics/templates/class_template.cpp @@ -1,7 +1,7 @@ -#include -using namespace std; -template -class A + #include + using namespace std; + template //Declaring the Class template + class A { public: T num1 = 5; @@ -13,9 +13,9 @@ class A }; -int main() + int main() { A d; - d.add(); + d.add(); //Calling the class method return 0; - } \ No newline at end of file + } \ No newline at end of file diff --git a/1_cpp_basics/templates/functional_template.cpp b/1_cpp_basics/templates/functional_template.cpp index 3cd02b2..6a62a2b 100644 --- a/1_cpp_basics/templates/functional_template.cpp +++ b/1_cpp_basics/templates/functional_template.cpp @@ -2,7 +2,7 @@ #include using namespace std; -template T add(T &a,T &b) +template T add(T &a,T &b) //Declaring a Functional template { T result = a+b; return result; @@ -14,8 +14,8 @@ int main() int j =3; float m = 2.3; float n = 1.2; - cout<<"Addition of i and j is :"< num {1, 2, 3, 4, 5}; + vector num {1, 2, 3, 4, 5}; //Initialised a vector - cout << "Element at Index 0: " << num.at(0) << endl; - cout << "Element at Index 2: " << num.at(2) << endl; - cout << "Element at Index 4: " << num.at(4) << endl; + cout << "Element at Index 0: " << num.at(0) << endl; //Printing value at vector index 0 + cout << "Element at Index 2: " << num.at(2) << endl; //Printing value at vector index 2 + cout << "Element at Index 4: " << num.at(4); //Printing value at vector index 4 return 0; -} \ No newline at end of file +} diff --git a/1_cpp_basics/vectors/addtovector.cpp b/1_cpp_basics/vectors/addtovector.cpp index ec96c9a..42f596b 100644 --- a/1_cpp_basics/vectors/addtovector.cpp +++ b/1_cpp_basics/vectors/addtovector.cpp @@ -3,7 +3,7 @@ using namespace std; int main() { - vector num {1, 2, 3, 4, 5}; + vector num {1, 2, 3, 4, 5}; //Initialising a vector cout << "Initial Vector: "; @@ -20,6 +20,6 @@ int main() { for (const int& i : num) { cout << i << " "; } - cout<< endl; + return 0; } \ No newline at end of file From db3faf4239245f6fa4c437299f1c4abc3698de85 Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Sat, 25 Mar 2023 11:41:27 +0530 Subject: [PATCH 10/18] Changed the readme name to README --- 1_cpp_basics/{readme.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 1_cpp_basics/{readme.md => README.md} (100%) diff --git a/1_cpp_basics/readme.md b/1_cpp_basics/README.md similarity index 100% rename from 1_cpp_basics/readme.md rename to 1_cpp_basics/README.md From 570ab5905c46f4a34f0794f0a46a7f81198d81e8 Mon Sep 17 00:00:00 2001 From: VanshPanchal0308 Date: Sun, 26 Mar 2023 17:36:01 +0530 Subject: [PATCH 11/18] Updated Readme of C++ with comments --- 1_cpp_basics/readme.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/1_cpp_basics/readme.md b/1_cpp_basics/readme.md index 7868265..4834c07 100644 --- a/1_cpp_basics/readme.md +++ b/1_cpp_basics/readme.md @@ -1,6 +1,7 @@ # **Basics Of C++** ## **Table Of Contents :** +* [To Run a .cpp file On your terminal](#to-run-a-cpp-file) * [Variables And Data Types](#variables-and-data-types) * [Type Casting](#type-casting) * [Namespace](#namespace) @@ -77,8 +78,7 @@ int main() 2.**Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. - 2.**Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. - + **Syntax:** **`(type)expression`** @@ -847,12 +847,14 @@ int main() { #include using namespace std; -int main() { +int main() +{ vector num {1, 2, 3, 4, 5}; cout << "Initial Vector: "; - for (const int& i : num) { + for (const int& i : num) + { cout << i << " "; } @@ -862,7 +864,8 @@ int main() { cout << "\nUpdated Vector: "; - for (const int& i : num) { + for (const int& i : num) + { cout << i << " "; } From 4eb7b58a37daacdf0077d248884e90a2be015a90 Mon Sep 17 00:00:00 2001 From: VanshPanchal0308 Date: Sun, 26 Mar 2023 19:40:16 +0530 Subject: [PATCH 12/18] Updated Readme of C++ with changes in output,images --- 1_cpp_basics/README.md | 106 ++++++++++++++++------------ assets/images/2darray.png | Bin 0 -> 3844 bytes assets/images/2darrayimg.png | Bin 0 -> 7020 bytes assets/images/2darrnpoin.png | Bin 0 -> 3798 bytes assets/images/2dtofunc.png | Bin 0 -> 6353 bytes assets/images/array1.jpg | Bin 0 -> 20654 bytes assets/images/array2.jpg | Bin 0 -> 23436 bytes assets/images/classes.png | Bin 0 -> 10524 bytes assets/images/classesnew.png | Bin 0 -> 3819 bytes assets/images/cpp_datatype1.png | Bin 0 -> 16462 bytes assets/images/data_types_cpp.jpg | Bin 0 -> 34401 bytes assets/images/enum.png | Bin 0 -> 1243 bytes assets/images/explicit.png | Bin 0 -> 1006 bytes assets/images/func.png | Bin 0 -> 1253 bytes assets/images/if.png | Bin 0 -> 1721 bytes assets/images/ifelse.png | Bin 0 -> 1616 bytes assets/images/implicit_typecast.png | Bin 0 -> 2169 bytes assets/images/namespace.png | Bin 0 -> 2102 bytes assets/images/print1darr.png | Bin 0 -> 4884 bytes assets/images/switch.png | Bin 0 -> 1472 bytes assets/images/templates.png | Bin 0 -> 3218 bytes assets/images/templclass.png | Bin 0 -> 3616 bytes assets/images/vector.png | Bin 0 -> 4315 bytes assets/images/vector1.png | Bin 0 -> 7805 bytes assets/images/vector2.png | Bin 0 -> 5212 bytes assets/images/vector3.png | Bin 0 -> 4032 bytes 26 files changed, 59 insertions(+), 47 deletions(-) create mode 100644 assets/images/2darray.png create mode 100644 assets/images/2darrayimg.png create mode 100644 assets/images/2darrnpoin.png create mode 100644 assets/images/2dtofunc.png create mode 100644 assets/images/array1.jpg create mode 100644 assets/images/array2.jpg create mode 100644 assets/images/classes.png create mode 100644 assets/images/classesnew.png create mode 100644 assets/images/cpp_datatype1.png create mode 100644 assets/images/data_types_cpp.jpg create mode 100644 assets/images/enum.png create mode 100644 assets/images/explicit.png create mode 100644 assets/images/func.png create mode 100644 assets/images/if.png create mode 100644 assets/images/ifelse.png create mode 100644 assets/images/implicit_typecast.png create mode 100644 assets/images/namespace.png create mode 100644 assets/images/print1darr.png create mode 100644 assets/images/switch.png create mode 100644 assets/images/templates.png create mode 100644 assets/images/templclass.png create mode 100644 assets/images/vector.png create mode 100644 assets/images/vector1.png create mode 100644 assets/images/vector2.png create mode 100644 assets/images/vector3.png diff --git a/1_cpp_basics/README.md b/1_cpp_basics/README.md index cdcc4b3..ac54fe8 100644 --- a/1_cpp_basics/README.md +++ b/1_cpp_basics/README.md @@ -1,7 +1,7 @@ # **Basics Of C++** ## **Table Of Contents :** -* [To Run a .cpp file On your terminal](#to-run-a-cpp-file) +* [To Run a .cpp file On your terminal](#to-run-a-.cpp-file-on-your-terminal) * [Variables And Data Types](#variables-and-data-types) * [Type Casting](#type-casting) * [Namespace](#namespace) @@ -33,10 +33,10 @@ $ ./a.out ## **Variables and Data Types:** A variable provides us with named storage that our programs can manipulate. Each variable in C++ has a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable. -![datatypes](https://i.imgur.com/1IycG7T.jpg) + + -![size](https://i.imgur.com/UAGOLXA.png) ## **Type Casting:** Type casting refers to the conversion of one data type to another in a program. Typecasting can be done in two ways: automatically by the compiler and manually by the programmer or user. Type Casting is also known as Type Conversion. @@ -70,11 +70,9 @@ int main() **Output:** -**`x = 107`** -**`y = a`** + -**`z = 108`** 2.**Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. @@ -103,7 +101,9 @@ int main() } ``` **Output:** -**`Sum = 2`** + + + ## **Namespace:** Namespace provide the space where we can define or declare identifier i.e. variable, method, classes.Using namespace, you can define the space or context in which identifiers are defined i.e. variable, method, classes. In essence, a namespace defines a scope. @@ -151,12 +151,13 @@ return 0; ``` **Output:** -**`Inside first_space`** + + ## **Conditional Statements:** Conditional statements, also known as selection statements, are used to make decisions based on a given condition. If the condition evaluates to True, a set of statements is executed, otherwise another set of statements is executed. -1. **If Statement:** +1.**If Statement:** ```C++ #include @@ -174,9 +175,10 @@ int main() ``` **Output:** -**`Hello From SRA`** + + -2. **If-else:** +2.**If-else:** ```C++ //Code to find even and odd num using if else statement #include @@ -185,7 +187,7 @@ int main() { int num =10; if(num%2 == 0) //if num is divisible by 2 i.e remainder is 0 when divided by 2 - {cout<<"the number is even\n"; + {cout<<"the Number is even\n"; } else//if If statement is not satisfied the else statement is executed {cout<<"The number is odd\n";} @@ -194,9 +196,10 @@ int main() ``` **Output:** -**`Then number is even`** + -3. **Switch statement:** + +3.**Switch statement:** ```C++ #include @@ -236,7 +239,8 @@ return 0; **Output** -**`Thursday`** + + ## **Control Loops:** @@ -283,7 +287,7 @@ do ## **Enumeration:** -Enum, which is also known as enumeration, is a user-defined data type that enables you to create a new data type that has a fixed range of possible values, and the variable can select one value from the set of values.nums or enumerations are generally used when you expect the variable to select one value from the possible set of values. It increases the abstraction and enables you to focus more on values rather than worrying about how to store them. +Enum, which is also known as enumeration, is a user-defined data type that enables you to create a new data type that has a fixed range of possible values, and the variable can select one value from the set of values.Enums or enumerations are generally used when you expect the variable to select one value from the possible set of values. It increases the abstraction and enables you to focus more on values rather than worrying about how to store them. **Synatx:** ```C++ @@ -312,7 +316,8 @@ int main() { **Output:** -**`Summer = 4`** + + In the above code we first made an enum datatype `seasons` ,having elements `spring,summer,autumn and winter` and assigned them values of 34,4,9,32 respectively.Then we made a variable `s` of data type `seasons` i.e enum and assigned it the value of `summer`i.e value of summer(4) is stored in `s` variable. @@ -360,14 +365,16 @@ int main() ``` **Output:** -**`m is 20`** + + ## **Classes And Objects:** A class in C++ is the building block that leads to Object-Oriented programming. It is a user-defined data type, which holds its own data members and member functions, which can be accessed and used by creating an instance of that class. A C++ class is like a blueprint for an object.A Class is a user defined data-type which has data members and member functions. An Object is an instance of a Class. When a class is defined, no memory is allocated but when it is instantiated (i.e. an object is created) memory is allocated. -![immage](https://i.imgur.com/ekXLq3C.png) + + In C++, there are three access specifiers: @@ -421,9 +428,8 @@ int main() { ``` **Output:** -**`First letter of my name is v.`** - -**` SRA id is 24.`** + + ## **Templates:** @@ -459,9 +465,8 @@ int main()   ``` **Output:** -**`Addition of i and j is : 5`** + -**`Addition of m and n is : 3.5`** ```C++ @@ -489,7 +494,8 @@ int main()   ``` **Output:** -**`Addition of num1 and num2 : 11`** + + ## **Arrays :** An array is a collection of elements of the same type placed in contiguous memory locations that can be individually referenced by using an index to a unique identifier. @@ -498,7 +504,9 @@ Five values of type int can be declared as an array without having to declare fi For example, a five element integer array foo may be logically represented as; -![array](https://i.imgur.com/TAHEqe6.jpg) + + + where each blank panel represents an element of the array. In this case, these are values of type int. These elements are numbered from 0 to 4, with 0 being the first while 4 being the last; In C++, the index of the first array element is always zero. @@ -521,7 +529,8 @@ The elements in an array can be explicitly initialized to specific values when i int foo [5] = { 16, 2, 77, 40, 12071 }; ``` This statement declares an array that can be represented like this: -![array](https://i.imgur.com/TOGDgk5.jpg) + + ## **Array Accessing :** **The syntax is:** @@ -546,7 +555,7 @@ int main() int arr1[5]= {1,2,3,4,5};//An array of size 5 is declared and initialized int i; // a variables made for looping for(i=0;i<5;i++)// for loop used for looping - {cout< -**`Values of Array are: 3`** - -**`Values of Array are: 4`** - -**`Values of Array are: 5`** ## **Multidimensional Arrays :** A two-dimensional array in C++ is the simplest form of a multi-dimensional array. It can be visualized as an array of arrays. The image below depicts a two-dimensional array: -![array](https://i.imgur.com/U2rhDGD.png) + + **We can initialize a 2D array in the following way.** ```C++ @@ -614,6 +617,10 @@ int main( ) } ``` +**Output:** + + + In the above code 1. We firstly initialize a 2D array, arr[4][2] with certain values, @@ -626,7 +633,7 @@ In the above code 5. And accordingly, we print the individual element arr[ i ][ j ]. -- ## **Pointers :** +## **Pointers :** A pointer is a variable that stores the memory address of an object. Pointers are used extensively in both C and C++ for three main purposes: @@ -703,7 +710,7 @@ int main( ) ``` The output is: -![outout](https://i.imgur.com/aA7IBsy.png) + Here, @@ -774,6 +781,9 @@ int main() return 0; } ``` +**Output:** + + Here, @@ -839,7 +849,8 @@ int main() { ``` **Output :** -![output](https://i.imgur.com/nqsiMAI.png) + + **2. Add Elements to a Vector :** ```C++ @@ -847,14 +858,13 @@ int main() { #include using namespace std; -<<<<<<< HEAD:1_cpp_basics/readme.md + int main() { - vector num {1, 2, 3, 4, 5}; -======= -int main() { + + vector num {1, 2, 3, 4, 5}; //Initialising a vector ->>>>>>> db3faf4239245f6fa4c437299f1c4abc3698de85:1_cpp_basics/README.md + cout << "Initial Vector: "; @@ -880,7 +890,8 @@ int main() { Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. Here, the **`push_back()`** function adds elements 6 and 7 to the vector. **Output :** -![output](https://i.imgur.com/zrPaav5.png) + + **3. Access Elements of a Vector :** @@ -904,7 +915,8 @@ We use the index number to access the vector elements. Here, we use the **`at()` **Output :** -![output](https://i.imgur.com/bOxhXIl.png) + + diff --git a/assets/images/2darray.png b/assets/images/2darray.png new file mode 100644 index 0000000000000000000000000000000000000000..da4482e120e911f34093409f743f1f05baf268a6 GIT binary patch literal 3844 zcmZ9PcTf|~w#TspD)J+A5D=mu-5_0hkWT0zQY9e07L#DM3S#t`sTKq!XG% zN~l2rg@~aC0t9lo_s)B7=IzYcv-{WX`F_4iKM(3QIjtmtpEUX0+!coEDmJzUT1QwDLFgaq$mweBn&<+}p>?Sq$d%!r9py=IZ0W zb*WRChK354mAH%)TG2r#Y ztW{hjD7&v_;|>GSJIv}}&@Yp>R(!x&(_*-8P@=^j`-urqqHj97m6~8AHQE$N9@{&v zJc|7AVNFV^Fa)*rYof?EAV8W=qg*OZ-6xD}Df)NnN2YW9^gQ52WFKjOTQ3Nb_SF!_ z{DJ4G{E|>o+>%e7e~{6jG=jz?e*e|a(RckBVn?4OIB~JEqO)RZ{9(3QyA%aSm_SnW z{A~7SN?XP{Vv?2A)j@+x*ki!|h=7o?Wo`Yez7jTYh+3b1DZsqEU7-encI~+ zqH}qx!}$f5?&yVSs)4SA=zOGeNKYrvEoyzTkI6%*&?4dBr(~&^855wnmMo8xjbqGx zhxV%%-{(|F6+;bk9B5Wy;2OWi6IEnV)&_VNT^9{*=G9n)^I52xFx}q;$rqw8JOq}E z_0IH1*5Bj(m3f>-LT*kMwtI|ET`7h`0E5?VX^&5pydp zu3kh8SB#Sh{cVFzM1P zPb|}^Z;fT5BH``5J}4cFLZruDfP`ng*G!=!Q5>*?@jX7|>W#jHp;@)J8zy&LxICiL zb^2X7ql4)7*@M9;?iT-g)Wt2Go)E3)Kak?DL*NV!+fg@r(+oX*?Jr)u7~FaI2)$2_ zAzpfzFIP~`<3`z{@ZEz)MztMM-0V_5a<|S2gHpnWzqpx_eRtJ649%sWSS|m_JbZus z->j6G^}3_#OzsB7kk>E;HtU8UnHB>dxGV_%Mf>-xX@1o_YDe1ck+&%ERI0JFip)zu zlkeb>7N>2fe#>>O)B|6~CCJ^m!#C~80Y5X=KZFOQx`~J)INMkT*&!^4;n`_a)szSD=z$OXOU5`si(X4qx8dzkf(|gc;2~aiU6|Do=IX5 z`$B@tT_yljZgAdBZ4(LwWK&L_@|5kp&;7wc-uvBqN$v0wqAV-5B_d~Vk6=M5DcReK z>)d2xxGn2d9GRt^J4To+LL_nDWG=ALR$&?YZeaQI?P1GyApbR%-?t~(@L{15TIExF zv@AoyCZV3zCvkB+&1ImLkh>XzOHv1PZp8$T+=a&OlIy%l8}atn+5S}UP?fmEo{t3g z&5ykqDTMK}x7APt8FY*Gh^nns!>{hmM+s1NH*S}noT%@QF@2LdILm5WvZ4&lMD$+0 zh8rf=`iOdeo+UB3~-1!2(uxlpxt*FL{4rh0wlW1OJ{a-7S$4``FSSGV}>qoEN(9NuP?Pck=q2Lw*UruKI%tyRHqX1#E$z=5D-clS- zoDKlVpUirXEs7l*t+o*i0W1smwN&O_dGZx^J;;X44@x}lNZeICUiK>NKgtM_JW%r= z++Bg=&C;1!yN41rWmo1nCn;__a^Vr~b;QA#7yG++iFxeQ(}EA$PqA4+RCMt~HT%`f z7q1s93`HsUU9X8FvEhGGsos|FiN7sWx;mWXn{S*Y;79ZQ0(YExf5?_UTmEUKX2*H| zmOHkpo{NUQBv;w#)K5(4|}Lt=S3Eo! zY4TvA<0$%b#wCt=p(IE79K>Q|ekJdhyoHa8!)Q0wwuG(F-^fY>!TZaSf|FlY6#^77ea#b=WYwpu$@4ZSy}1oeCnZbuG@<6Vh8Q1C z-{Gg%8*9&4P7h)KtM@Vb5_more!~PsE_#;10h&?uoHVfewSua%>a$&7=_++&d|&Cl zqfvMzUD-ihC!ilbjPq8crJZ#m)Vv{nMva-5a$Bk#lgr&q^bi%fY;bO3%w7vSQkA7F zvffcY_$emKHePg*MW+hQ+|AwCNOD#5W!A_qFq(DMQEH8mu;Bje-vlk{Sr$@%RHviZ zfqDl>6W`$VUz4zjwYU%mWZPF zus73FiKQu_oA>%ZxtX&+unx(8Bgxu%|6{660&-CQ=s?(vu+tkJ@v1o|oMmdgElo3` z0PC5rG5+B_w^7IFz~1rc+3jjz|FUeOy&;(CE#_zF!}nZ`pALU$g6u)f4VxR9$unD4 ztgzSyE86f9Ff+LsErv z7m6-R4QT9Kwh6X9dBo$gX1o?-Bm`nUZyJ_pL}ZDX0TMp zVs}6&?o9-yb3I_v86Pw-AV!Byf}*+?V_1V=!TwKslJ%9?0{i#))-Ne5MHE(J4E=L| zq;7n^t)Gph28xJ8njQ?tHV2LA4}Ix*!j8X1g2lSb5ep?lJ%o+?YXgSD?1E=7ThA(M z$p#@2tLpzjQrHs9XO*DM|38S*waC>t41kZvk{lDXwD!9@9Hvz#VD}Ac@hYO!P z9;TEy5}W1iP$J)zc&Pw}Cy^A=IHFkxD_3 z+bNJEQw1pxw2m6w%33X+6edM_0 zV33{Q2y~xlV#`HU=(?Z6E0RNnUa{z(^TX{Ml(8$J=qI~|XdHDh{L0L z+MHMH)D%F8xAXJ4>daoH+o|6uWo}WFB=!z^x|L!k?##Ozh_h+=m)o^kh2?^w4g{2C zlF4$D%rjv6GKF3_@8Mg*o-AWT6N|vbrHD;B&__WKXJ-JT01}MBU{pb}W0kIqN(n7q zhqZs3Nt1wf(X%U^tn4S!PyP`wzGA|jX;v>~WuS!JL-qa#(bc=k`*}o7{QKYn@t_x{hrK&HzGFcV!gcv->tN}0;NB$84A_Ej>UD|O;z z`P|t1RXP8`bzWgvg+iJ`KF3d&NtTrCEg+X5fsYP#S*HLI z19fjiiWd_EK>Kp#qoI;hCF7ui>dVf3_GXZV*!F7@>GwOknl2;3OwDmg-D~6Sjli6? z^2;Ib`xdb36!*rl!#GSoosT1-m_HIa(Lj)SM(gZs9jKkVYK`rmpufMOoY=rhM z0l$UvPpmXCfK*m1xvw4`G*tgo&zhp5hwByly?}KdavFkzt*AjO%7r^&qEpg|j5^S` z=tTQ%H;0wwfgwsD#hEDd=wQTU2M>Kwxt5lu5R1aQ%b7H6`(Z-SxUh>3qLCf~>4W;5 z$))5q;g)2q@Vg%toNfg9C<;yx#HwNiQ9^2?b$5TvaJxvq?aB1JP8VSVX$W;=hR{#1 z8a@e<>#F3%0e)RNRaqN8L!-1AU*)6?ET}Vz{`bBAUl8q$I+@22jODc&+Fou1)SC~W z6CaOlK9VnExnP)O_{zl!Zt2fqs5{S>y}36k$#69LP;{Kd&BXI>ERBw)A-G1}A^Kk< CT&OGn literal 0 HcmV?d00001 diff --git a/assets/images/2darrayimg.png b/assets/images/2darrayimg.png new file mode 100644 index 0000000000000000000000000000000000000000..494026c13ae0282fe218b97808bacb276706f7e1 GIT binary patch literal 7020 zcmcJUc|25q-~Y!l2HCP@tz=7lNtQB}EQztpHVDU>HL{E?dnsHbd$uB(V&sr5`;ZFR z8M2cy7^Ljm{En{c{@&O9`}e-D^Y}dGan5@_>v@0X`F?%g6K7k+KbgNTuysU{h^R+kG?nte`6XZ$J9A7+KKexF8b)AKiP}OB(SEowF*Ev|%Jh-}9IJsG0+)O;FKSNw4$9K)tPtFXIm*eYZ;_H?RyEfyymWit~@x{&1 z^!9v(R{4ZheVfSS=^Y)RRh^tesN<=e4L+fbtm(Zh%m!rSGuqI>>`jpmvy678pl_Rg z^9lWKAn*7>-x{sz82!#_A~#@G`7nEA@@-Yo_~z_o8SPC?A5P``))D%xV^rVOSzp&&KS|!dzgh@`@lc>{sF?;) zknqwJFc>xL@{0&(vHKI0(47DKie$D_=Jg?ECmKwsvOLK1T;O7es+a7*)MeZ5YmukP ztK-HN1M>63mjd}M2Hy&KzI>?WH^Y~+a9mzeoA~+1d}W!za>*W?w6%8g#$CIrgvAdU z%hppRY-O2rKD`k&_SnFo3da_0gR^V90-9U% ztv~9yrXQ!lF&}&P&}Ic|DGQU$UZpG?d2l~<_EAZMd|!u#pmS7*cSfL#7W0<*Pw(BP z^brG??w8I7xiD+NZr0Ja%qsmZ@3{&+RWkVLe$4EhQ|$TTq7CcrMLoWmaWN_9ks*_3 zMuLD!wS{n0^)=#4Zazi@bdt6M#34^ms$FXc!I;Zv+?8i2jmOuYYX2sHVDM`Qlv$(O$}$PbtEZ-De_74>DyWjvvoi0?b|Fa-#IOnkyX} z9Dkk6?|YQyl`kp(@DTLy8x)sY$bIpnW#^; zSmdD{ubSDvT^yLDELvzUI%EkSmTFLaqKtSGC21@s1q4U{a0!r-6HRg8Ts`yYdK4UT zL@VVf3GjdaA+NZDAHF%bNpU~XCr$8iXyVi0_qprw=}uAi0sh(Zi@A~!WT_2353<}< zVef!9qervBUs_5HcwIVjUBZ>!%UP%!EMtirZkvc}*jiT7T%aaM*CMnqS#574-is2) z??VRb3AItzv*6K6OWOC|HAW5`HNGB!|H!40Nr_ps`1*B1s`Of+rk9EP)cAh}x zd0vouqOtfOdCMv6c^!->3)ZomX`#a0y0A7ah~8O}@&9f)6g-kDBZ~OFX)`10%2<_s zUN|`7noY9SdSv?0XrUpY82qsrfjD z3AM^c&-eY$`B6*-lv^YvT|mp^r3umKK6(`yP_iVHkB_1!Oz-H8>L~9W=F`i|clE8z z(F#6nVwbS}awEj7wd<=O4M7K+Uqquzv0^&(unAGn0VDK7EkcyvL~3fXSoFj%y_~;S z|LA$V85-VTQPyc0*;Lt|{jp=c<%-hEhd1UPBMkr61BXWU0{!yw%chswp4_Ou5&CVa{T73}Jm3 z<%vMjEySs?!Psn7$qvKTd~VX(3aPc`ZTOWLljdZsEQLpriQ%mnXq}}?G~Th+oM3G8 zo%*{>=CMoyqal&$VxQr-e(Ra6oZ0=wvJP*abZT?tmJkP;9^IGSOHJqx9IU3qT+w0_ zk74_!N>%#gN+FqYC%~5?!3q<+yzv1g<|c(gH4xkbCdPEEjhgsc!$(ynXmL-I>It1s znF!`X?_=aPyeF*n5_qyS6aUASD9Jk^To zCwhYI&|b{QK}|Hj1$6+JQ+HF6xzB7rP24Gu*pgno8-XBI0KOY_V|qGPwCRbmUDfk7 z(r5%y1l-Qzk~1~h8{OiOBGshNaR16E@zYjJ8m3+4#{84Z2^nk z7djlN>Sh?iPp-lQ)@|iho~4UGSs>k{J5mv?apKKQWmMxb5DK3!V=%1SlvI)YV7qU! zb3FMG(Oi9%S#YtjRr2hkp{|AOVd?_8TxL;=jJARFhdw`5fJA?H)FqG|442E}#}%ws ztsudlC6RIu_9sqPRFfrKGbX^tQ

{RmBw-`;$YwpihuAU|F!-QgvTorty@vh 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 ARsaA1 literal 0 HcmV?d00001 diff --git a/assets/images/2darrnpoin.png b/assets/images/2darrnpoin.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac8e6bf61304434e18fd28b983c97989f53b68b GIT binary patch literal 3798 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 Duz0{& literal 0 HcmV?d00001 diff --git a/assets/images/2dtofunc.png b/assets/images/2dtofunc.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc4d78376f1b6688bfe0618191e71d75dfae482 GIT binary patch literal 6353 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 L&{MBfwTb)>f?cf? literal 0 HcmV?d00001 diff --git a/assets/images/array1.jpg b/assets/images/array1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..708ead50738c53ce662b4d76b4953097ed0ead8c GIT binary patch literal 20654 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 BX{7)F literal 0 HcmV?d00001 diff --git a/assets/images/array2.jpg b/assets/images/array2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f404fc429f4dde45647240441af4b52f128eaee GIT binary patch literal 23436 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 U$GT{L9~1oDqWL!wuH3r+1=0v2@Bjb+ literal 0 HcmV?d00001 diff --git a/assets/images/classes.png b/assets/images/classes.png new file mode 100644 index 0000000000000000000000000000000000000000..cea2a31fa28867d3509fc1c008df5bd5d6d0e810 GIT binary patch literal 10524 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 Rsdv(7J=9k(fAH+}{{X6Ia|Qqa literal 0 HcmV?d00001 diff --git a/assets/images/data_types_cpp.jpg b/assets/images/data_types_cpp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37d928c6b2cef35ce23ee3fb2fb161167bd8346a GIT binary patch literal 34401 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 FV1j@NSnmJ; literal 0 HcmV?d00001 diff --git a/assets/images/explicit.png b/assets/images/explicit.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a32199d86143fec9bd87ea3dcedb9149a54416 GIT binary patch literal 1006 zcmVZgXgFbngSdJ^%m%fJsC_R9J=W zmVZptWgN#}_l+;!d1HZ$6BRE>J#B~LNvT7FWz22~^+%D_8IHDcYXn3FSRqWutfls2 z!(TaNOBQT_&iPN~U;>^bVw|ny4&yilhnIOpoOnO!41P=y}tx;e9?LDyM8mVAL}S-_4qAb@?i~S_HthM^b!Cv(#fk! z$DaQt`((LPl*VK2ie%wDJ3m%8(4Vn^qRmX(B@3MoTXCy@p~}+D^dGDUDN*+v>pW9JexC}dpNH3V+Zu3& z5grOt^O9~M?uMNlb4h?sXiJ0Dv$&cB%C<3QexP{|?=|mXQF1y-32G8wF6Nu(o7k0C zL5u&BFjfJV6Fd$Vg2M%X+v#FRlm`^}s?l_xisO^GwSebtSMy4R&n`aG2gz}e63vit z)@b<=jQW!p^(U#_znZL?x6!42Ma#GS*vHg)WPt_oO7C40%x#}oc$h6S8u_H~_^9^T zEnQqE4%BnF_IR9s`4Jq#S^oI*UBaT}KtCP_c*Dd0>32sfP>5g-IM(qTQZhbvxJA3(!Nam%!#xt>2E;sf90@p5^ z@w~W}G+8UB2PG_dbqz|dGbr-#;M;!jI|uk+aSz9L>luhwp#lVllMYMw-J+IXVbNSj z^}X;S+cCDUWvTXc^0T6lPjk}W^Am>h-F((F{39rwILw!t0ZgXgFbngSdJ^%m&cS%G+R9J=W zmwixFRTzh#UGB=-N((AW?$$+$4<}qdYSKn48_PbmX-sVz(#9HdNT7m39V7`%Q%h5H zgvy3W)22jbq8VeFC`hG(5EdL+Cfr?JlWk>L1leUTY=7VY8nS?tG{f`XJ?Gxvec#`G z&pGdviK6Ibgh3&{(EMX%*uq0^^%N~IFLUXLV6*laccLPA3D^Yg=CF!XAm5EaMn^9a~^ISqYpu=0juKAn)QGJtFrW1RAB)6!*Rd2V^w6vb;k=Lt|yzdxO{GJo!RVFnEw*YNI%5FUMU zTK|%%*+uNr3t5o2V_fAs-tw_zZiXoDhiMIL$}Z=djtWoT(@zr(keZ=O;w7Bqjo>Fqgv~ z83Y6|-oK5O<~GJH%jENqS20uFNNY3PG&T^gyB5kM7&GDDIxyPsv_ZSugWT-_Kx*^g zRj7tUy|L&!N*BDyS6NY18BLh0ipeQBIVi2EYZH0u(m|fvU2)Zn2bsfxqoIYCt9PfL z&cm!*`>s5v(}_l-K@hq<76bu}MuXGo9B`l=$^k#pEAn&sY>rvTy3dYcbZgKr-N2U{ z<_%b9YVs$%F}9ek>v|jn7aiE$qfm`eVgKeW5|VSMatAVc3|wkx1VCF-*BM7&;uebq zK@iaE_2_gubUGb+y&gdjuvjbu4tA)iIhN0X-5I?4!LKymc`x(Z``-^vS)Ik|2}Qh@ zoWt*)?(x=uqnxrp=(NbLF;CQFqWx`{t2@mT>=jVsqtA1>To?=nL{UVm)dIt#RT(#L zIg2Rg`*ITvUJVfsPh|Xs67v1}*AGs5J)4wCXUTj27|mgkL;`Ym8>h@B01SE6G{rCD z%~I#(R^>j#KMs+2wnwd%{N;PkbGcj?jYeO$4Jos?<&re9`#Rykdw)yZipN+spC zRFYO^kSTOF$vd_j2D(2^P=VQZlRUz;8Q%Z4!<-TGu7eTtu7eTtu7ke;Sva&1%IqC? P00000NkvXXu0mjfm25`L literal 0 HcmV?d00001 diff --git a/assets/images/if.png b/assets/images/if.png new file mode 100644 index 0000000000000000000000000000000000000000..2ecfbc6fa9e1449792d1256123d8270a0e19707a GIT binary patch literal 1721 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 O0000ZgXgFbngSdJ^%m+3rR#lRCt{2 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 literal 0 HcmV?d00001 diff --git a/assets/images/switch.png b/assets/images/switch.png new file mode 100644 index 0000000000000000000000000000000000000000..67c48347c888dcbd82148ab3a05fce86dd8ee036 GIT binary patch literal 1472 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 literal 0 HcmV?d00001 diff --git a/assets/images/templclass.png b/assets/images/templclass.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb8783c27a92fabc06942136a533ca1e3463b4e GIT binary patch literal 3616 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 literal 0 HcmV?d00001 diff --git a/assets/images/vector1.png b/assets/images/vector1.png new file mode 100644 index 0000000000000000000000000000000000000000..55a646704847c7def33b80d639d190fde68e27da GIT binary patch literal 7805 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 QCqKs0P}NnbRI-WqH%$>uBLDyZ literal 0 HcmV?d00001 diff --git a/assets/images/vector2.png b/assets/images/vector2.png new file mode 100644 index 0000000000000000000000000000000000000000..f79f46915bab25525ce35829085b5bcef8c6a00a GIT binary patch literal 5212 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 a?ga9ZMt&jouD`{D1S(3Jij^>{i2ni-h4|M1 literal 0 HcmV?d00001 diff --git a/assets/images/vector3.png b/assets/images/vector3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f721d0b8dfa0bbd35fe399e9878704e972c60f1 GIT binary patch literal 4032 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 Date: Sun, 26 Mar 2023 20:30:37 +0530 Subject: [PATCH 13/18] Adding assets folder --- 1_cpp_basics/README.md | 50 ++++++++++++++++++------------------- assets/images/pointers.png | Bin 0 -> 19537 bytes 2 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 assets/images/pointers.png diff --git a/1_cpp_basics/README.md b/1_cpp_basics/README.md index ac54fe8..9982194 100644 --- a/1_cpp_basics/README.md +++ b/1_cpp_basics/README.md @@ -33,9 +33,9 @@ $ ./a.out ## **Variables and Data Types:** A variable provides us with named storage that our programs can manipulate. Each variable in C++ has a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable. - + - + ## **Type Casting:** Type casting refers to the conversion of one data type to another in a program. Typecasting can be done in two ways: automatically by the compiler and manually by the programmer or user. Type Casting is also known as Type Conversion. @@ -71,7 +71,7 @@ int main() **Output:** - + 2.**Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. @@ -102,7 +102,7 @@ int main() ``` **Output:** - + ## **Namespace:** @@ -151,7 +151,7 @@ return 0; ``` **Output:** - + ## **Conditional Statements:** @@ -175,7 +175,7 @@ int main() ``` **Output:** - + 2.**If-else:** @@ -196,7 +196,7 @@ int main() ``` **Output:** - + 3.**Switch statement:** @@ -239,7 +239,7 @@ return 0; **Output** - + ## **Control Loops:** @@ -316,7 +316,7 @@ int main() { **Output:** - + In the above code we first made an enum datatype `seasons` ,having elements `spring,summer,autumn and winter` and assigned them values of 34,4,9,32 respectively.Then we made a variable `s` of data type `seasons` i.e enum and assigned it the value of `summer`i.e value of summer(4) is stored in `s` variable. @@ -365,7 +365,7 @@ int main() ``` **Output:** - + ## **Classes And Objects:** @@ -374,7 +374,7 @@ A class in C++ is the building block that leads to Object-Oriented programming. An Object is an instance of a Class. When a class is defined, no memory is allocated but when it is instantiated (i.e. an object is created) memory is allocated. - + In C++, there are three access specifiers: @@ -428,7 +428,7 @@ int main() { ``` **Output:** - + @@ -465,7 +465,7 @@ int main()   ``` **Output:** - + @@ -494,7 +494,7 @@ int main()   ``` **Output:** - + ## **Arrays :** @@ -505,7 +505,7 @@ Five values of type int can be declared as an array without having to declare fi For example, a five element integer array foo may be logically represented as; - + where each blank panel represents an element of the array. In this case, these are values of type int. These elements are numbered from 0 to 4, with 0 being the first while 4 being the last; In C++, the index of the first array element is always zero. @@ -530,7 +530,7 @@ int foo [5] = { 16, 2, 77, 40, 12071 }; ``` This statement declares an array that can be represented like this: - + ## **Array Accessing :** **The syntax is:** @@ -563,14 +563,14 @@ int main() **Output:** - + ## **Multidimensional Arrays :** A two-dimensional array in C++ is the simplest form of a multi-dimensional array. It can be visualized as an array of arrays. The image below depicts a two-dimensional array: - + **We can initialize a 2D array in the following way.** @@ -619,7 +619,7 @@ int main( ) **Output:** - + In the above code @@ -668,7 +668,7 @@ A pointer is a variable that stores the memory address of an object. Pointers ar **The output of above code is :** - ![image](https://i.imgur.com/kCnRVPq.png) + In the above code: 1. We first created a integer **`number`** and assigned it the value 30 . @@ -710,7 +710,7 @@ int main( ) ``` The output is: - + Here, @@ -783,7 +783,7 @@ int main() ``` **Output:** - + Here, @@ -850,7 +850,7 @@ int main() { **Output :** - + **2. Add Elements to a Vector :** ```C++ @@ -891,7 +891,7 @@ Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. H **Output :** - + **3. Access Elements of a Vector :** @@ -916,7 +916,7 @@ We use the index number to access the vector elements. Here, we use the **`at()` **Output :** - + diff --git a/assets/images/pointers.png b/assets/images/pointers.png new file mode 100644 index 0000000000000000000000000000000000000000..a7eae75dd4e4d1d424f54866de6d3bfe51bbb071 GIT binary patch literal 19537 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 P3==_~b4HZ^>`VFs*h$UO literal 0 HcmV?d00001 From fb945b952c4040336d890633cd581ba4b5ccf539 Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Sun, 26 Mar 2023 20:51:15 +0530 Subject: [PATCH 14/18] Adding Image to readme --- 1_cpp_basics/README.md | 51 +++++++++++++++++------------------ 1_cpp_basics/pointers/a.out | Bin 0 -> 16640 bytes assets/images/2darrnpoin.png | Bin 3798 -> 27259 bytes 3 files changed, 25 insertions(+), 26 deletions(-) create mode 100755 1_cpp_basics/pointers/a.out diff --git a/1_cpp_basics/README.md b/1_cpp_basics/README.md index 9982194..23fcd75 100644 --- a/1_cpp_basics/README.md +++ b/1_cpp_basics/README.md @@ -33,9 +33,8 @@ $ ./a.out ## **Variables and Data Types:** A variable provides us with named storage that our programs can manipulate. Each variable in C++ has a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable. - - - + + ## **Type Casting:** Type casting refers to the conversion of one data type to another in a program. Typecasting can be done in two ways: automatically by the compiler and manually by the programmer or user. Type Casting is also known as Type Conversion. @@ -71,7 +70,7 @@ int main() **Output:** - + 2.**Explicit Type Conversion:** This process is also called type casting and it is user-defined. Here the user can typecast the result to make it of a particular data type. @@ -102,7 +101,7 @@ int main() ``` **Output:** - + ## **Namespace:** @@ -151,7 +150,7 @@ return 0; ``` **Output:** - + ## **Conditional Statements:** @@ -175,7 +174,7 @@ int main() ``` **Output:** - + 2.**If-else:** @@ -196,7 +195,7 @@ int main() ``` **Output:** - + 3.**Switch statement:** @@ -239,7 +238,7 @@ return 0; **Output** - + ## **Control Loops:** @@ -316,7 +315,7 @@ int main() { **Output:** - + In the above code we first made an enum datatype `seasons` ,having elements `spring,summer,autumn and winter` and assigned them values of 34,4,9,32 respectively.Then we made a variable `s` of data type `seasons` i.e enum and assigned it the value of `summer`i.e value of summer(4) is stored in `s` variable. @@ -365,7 +364,7 @@ int main() ``` **Output:** - + ## **Classes And Objects:** @@ -374,7 +373,7 @@ A class in C++ is the building block that leads to Object-Oriented programming. An Object is an instance of a Class. When a class is defined, no memory is allocated but when it is instantiated (i.e. an object is created) memory is allocated. - + In C++, there are three access specifiers: @@ -428,7 +427,7 @@ int main() { ``` **Output:** - + @@ -465,7 +464,7 @@ int main()   ``` **Output:** - + @@ -494,7 +493,7 @@ int main()   ``` **Output:** - + ## **Arrays :** @@ -505,7 +504,7 @@ Five values of type int can be declared as an array without having to declare fi For example, a five element integer array foo may be logically represented as; - + where each blank panel represents an element of the array. In this case, these are values of type int. These elements are numbered from 0 to 4, with 0 being the first while 4 being the last; In C++, the index of the first array element is always zero. @@ -530,7 +529,7 @@ int foo [5] = { 16, 2, 77, 40, 12071 }; ``` This statement declares an array that can be represented like this: - + ## **Array Accessing :** **The syntax is:** @@ -563,14 +562,14 @@ int main() **Output:** - + ## **Multidimensional Arrays :** A two-dimensional array in C++ is the simplest form of a multi-dimensional array. It can be visualized as an array of arrays. The image below depicts a two-dimensional array: - + **We can initialize a 2D array in the following way.** @@ -619,7 +618,7 @@ int main( ) **Output:** - + In the above code @@ -668,7 +667,7 @@ A pointer is a variable that stores the memory address of an object. Pointers ar **The output of above code is :** - + In the above code: 1. We first created a integer **`number`** and assigned it the value 30 . @@ -710,7 +709,7 @@ int main( ) ``` The output is: - + Here, @@ -783,7 +782,7 @@ int main() ``` **Output:** - + Here, @@ -850,7 +849,7 @@ int main() { **Output :** - + **2. Add Elements to a Vector :** ```C++ @@ -891,7 +890,7 @@ Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. H **Output :** - + **3. Access Elements of a Vector :** @@ -916,7 +915,7 @@ We use the index number to access the vector elements. Here, we use the **`at()` **Output :** - + diff --git a/1_cpp_basics/pointers/a.out b/1_cpp_basics/pointers/a.out new file mode 100755 index 0000000000000000000000000000000000000000..a3d56cfcf2a9a3816eb0fd6ca4c0e264e25b098f GIT binary patch literal 16640 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 sVXlFYejDQU^Ye#(58$@j?Vo8>++K%}OV literal 0 HcmV?d00001 diff --git a/assets/images/2darrnpoin.png b/assets/images/2darrnpoin.png index 5ac8e6bf61304434e18fd28b983c97989f53b68b..cf5916bcf91affb281b6cdfd8f09f4602f31030c 100644 GIT binary patch literal 27259 zcmbrlbCBpz*XG+iZQHhO+qT_(+P3ZP)3$Bfwr$(?^!wE}x9-gRHTR|}$x3S1P9>?m z*3R?%5-u+*1_Ox+2><{9BOxxV2mk}?O6B;uYVq9<%}7n%qO z4ipSj1hple!D^jOYSEl=XxcWhcKk9TlToB0+dd2Q@*&38#pY<1?Vf#-$uu*`1L25#b&!L+jB{`SDKp-z%` zsM!3NHDKI4UC3AEfr8#Aau82X_^m7-coRmU+YklAk3#b)vdL?{lpo#-Lg@Q?L8_W! zdz(DvB_9g~^^$*pOqr~OEu&FXmt%-w#sz3NkX9YNk$314+HS}$2IA)^*`dNDA*~(k zPqR9t^zip`>_)=`igsQ~_qPGr%Fy(Q@8dTo)eq$zbG zs_b#4rfApq2^qfxS}y>v(SeR+gcJ?l4Z^kyXzy`+$m+U@pNJvVoD>ZR6%K^#O0eCR zh|v+hUsSw((y`Ug6!hprG{{!=YQ90LSPxt;f7#`#I2^O_$xPG0J)EF%y~11W*BURbSeI#}w#*Dn;&S$oBGgn5|Cn<%y5?6q z_hR){Lq}_;%+{Hi9=swCR$^zC^h>OPq4jgTsP9J#hOI2`{!H*rYJ%L;cWZ=aT>;hv zG|~twfmmz6yj$vEH@g<`a~=mP)tQ;?g9tRfQmDW6GWYOR?M}3 zd>6jeqNy0-<^&=E%`L{X7h=w&pR$7@j#?C{o1q%Xz!Ex#n_mfP=tP=HU;)8B+ncOH zLDfon;mah3z%HUS=U0W}ZenP}3o+ASQNRFMKaBzAv8LTBkRd&tiv#wv%I{abYO?*C zlaFi`3&llTBT+Ap7^Uc2??!s^`v?*q%(x51DNGk2B#ML+zGTCu(7KG)6@Mvoe>6tZ zKciIVaUdec|WJ+=jxrCK`Af##OG&EPznM4M)%u*-KYB4UOEqfr5?S5^Fm1 z-{pUj(ofVAei*b$EG|M;yWwuE2=X7xd<(p>e=>mr2X*#Qb)}BJNWQ(G^696lq8I`5 zx7|mUWNe_Pe3)B%@zdtnSK9nOwfKCAGEr{2VsVp<-;cWogdPRGU*s6%i}$Z@!gy*U z&(8(8s3ejwr@G^vd)t$plV{0V%tG+GmEl&t$-56SJ%`uVS`IG;IJXcv56eh~RKf^8 z)95cB{~%TSKs{JZ8${>FR0eR84*&TH^SBK z1;QXi@|1>-6!()ZIHUO)<`NO4r7KD&E)Y{U_60wjg0NyN+V63u*yI}sR;Y#xztD=I zv5vakG+W55J%XOdjgSYN2AHS-3uL0_cZ|Sr~_#L=KBWaM1mf!SLT!pY7VKJp; z-<@N==bSwc{2@{BlEPw?8txPy21%g{=f>Na9ClZ3gwqysc~d%*8ATd+ZZ+m)FS>MU zK8yQI1pUOAaJeh;<$L(h)ew#F0wfA_h+WP#pYvwG2gm#pd>!v!MM-`Bzd<(A{Ylzk zSxdnSOfjB${Qjp7J}JAtyW5flNe~;O|?%qgN$U4p-{45kOW1-UaM18{nA(C3VF3pb$b>iEI5q zYi{TItfeD^5m*6OU5^LVs69emEBFNthTMkK{A*2pfhCNkV5b|F1`?Yo<8fKtQ}&3<>dHPnhn!_avIau8zbw2-#zM=9%>1G$je?9Z~#?$-c6Qp)>M8 z#S~DNXF*Lqq1!Rz#tyNq4q9Px$8v(>t%!zy>8wPHj<);;xhNGS$x%6{{amClIC zENAnB@Qy`o4^kWR&MO*P`cg|k$~6mt)F3+IAxgZ@kf6V-6J zuFU0qfP4!Ik`A>*VFH|onW7Ce66-G`V`o@pw{cX@Jt`8^`Cbcr$0x*j#4%jSDX3*X zPSGR{{i7^?w|!x0J$Q`d>bu5xViSoJtGIMAcJSev z`XdTN6=NH%2BVNK;N5x2a|{>A9?tO15aqnEz%U|x)2RY#79@3#(pD;f6mV~pntQa!ZV?GdQCc}Z?h*h15xVGRFp0}(u#FihbP9s&> z7z1!e+gkJ?4INltqjl?;ntR}^&J{u|38#ZbVTURDXFw#&;&vyHjGF5R1J*QaWWL)S zxE*!~Tu>jp>>Fe52krsY*I2aPKGZnnCX+wr5YrVsdo8ilC1`$>tkhU3W+Zcv>bKEY zZ}a;JrPL6Fo&(G_+oMpfo1);ykHseuYqld3rzGG^% z>3xF`8g5y%m}*}sBfg(d-?kc-zNG(DN9|X3MpJlQ85izJtS@x;#x`ya^HS1l0pndE zdN#bkMqY4S4Y{A3W#1ng0?A}WNJoBlWxMTsNQy`}3f*be*}D1`T7FV@_%`Bx>u&7c z@KdavhJ{1IfJ%+kJ|zG)CvJNPQ%@%}691UtbJNaYdxfmw@uF2`aWr+u&&lU~wu;mE z*3{G<(#{ukNfvwL{XBO)W9O(jR)x(EwO*Gi7c9P@nB8}5&xF}@hKxlFSVc)f^LfeJ znmeD7J6kn^yP5q%Pxnlj(!KbC3}V1Fz?0jeXa2 zkZhkA-&E6z-r${>9O23hy!F;t`i@s5mXBKS)o{+%`zLv;HUXMAb)spwQf9dG7`5;L z*6EVB>sAo3D7L~z;4Mg;$(nk~q<{WCTfgcL+Ea64Gg5*qWxYRdGG z`mTR9ZXyi?IEY<@H~Sxj&sb<2lURAeRK5yo5Bk!ryPpZZAz}bQCL~`alU>A@pYR$3{*I$)>D^)s(lAArVb|J0Q;xpS=HC=8|W58|WAIORW;bK+8F_-y@oolS1KViT5 zUrPWU(V%mSRh2%+d<`RYyoY>q`_f@)M#}1Ztr6`N!4xc89J$eHQXhN-W8|q!HrMeu z{P7ipa4yE?jUG6luR+vk;u2;h4;jZlK_P&^Wj_gD$YjtPvcGg-hh;ENsd*KPDu$4R zTx0M->XwZ)cMZ`123t3V#1Tq17oO-;?8?TUAMh>{KvNB!B~h-?3%2hV?XFF72u|M^ z#mJ3Bk~-=dgg$WSQJMz_;lpzWBvN=4mYv6Z>ngX;&edW4U%eIv(-|%G z=>uhWt+l+@YAU&q3iChPRp-K`YN3`Egt&%P=RxI{cAQNB)jkVmIjRv<{7KqJUEoFh zW6I!$RqFw%Jy4ZpnagialVlrPMU z9M=^iun37)XW>pzJ=>l1iiLlfVRr62=o=?Gr?VC%O=H4bdk&~MbrE3MwyPu5S@>dG z-}tV2L~ds>TCKJ!==X9*Qof(e4<%p-LO}O{G2rqpoA%N$e3Py{&wB0LLz5lv6<$YW zU}GFVh}RxGkU^` zs@syqmbLr_W0;?!IX)-b&jhZ&I{Oy*+LJzZ&ImpRsoK89dQP6NA70-FqR03de$;7S z`z=O8ef#NbHw0QY1f^y~7MUO4iiYFazG5<_D-Ps#+G0#ty2#Joq%(~b*`~Mr>l-3Y zt~-OxE;hmel~dO}IO^jrGUkj(|7=b6N3M9F`g_Soj{%{MCjdM!Bbb$AJ4jgT74p z?jP7`ja)xQ&kkS=*!VcKKbWcZ@^RV(J!Fh|?!|Izwpi6u7dMQ7^Hc@z;{5mN`Go4l z_oowczJO3JOX{-{ej35zR`z4JeY>jP*Vfx%NO38SHw{`Fg>D)Ir!e|`QH((e|0W=bgcg_vX94S=aFiET-vjIEL(g(J3O!(%V!tA z_hjfzogwDWpb>f2L8mp9Po-_nGM+GucAZP$Z?-$Xa;pHHc83b1gCs2fdkecIq|1r$ zV2+pH05N0RoIB|MsfegYHKHLO@K7WEa~PT&c=xbC4^SxF`9Pb!axm5-LoOY2TZwQoj#zmS zGh!1il#N%HhdJZx@eWzWZZ^}KPOR{KN9*BDDwGj-rVEcqf*oqb$0&pU1R^PHXyzWr z8HED@l?lWL4j;Ys^|8W2CtHVB7+xCt^uj}iWU1cfFT@cKFpgEt8C0{RB>>QB7KLu4N_U=otPy+uzp}&j}1`Y8Eb}k5G zkSIL>@3#=0YzMEvRyIMpjq^i7^u^8Th&szIB{%{ zl!j0jvu~q0SpPsYfCnOlv4vO-#RU52+3fB_M^wrnaW>g(ZlXGug$-t*U>8r0vip*x z^)1KP+5I%jo?~wlzV1?+kt@MJG^|r%kJ4Y6M_gnmvo}go?aGrwf|TNN~2!YhDEny3He# zY!2Ro2cAf1cGQ}1J+S^2vE`GZpuNA29jDB~xP)|O@Z2ZnHt^9*{L-N)i0Ru9v&^LM znYPGv9M9oFmu=MPgN+lpmd5>8j$Qwb?Y^Vjcc`3d*ErM92YBq)oAdbyLT7kDgT`l@ zL-W@;p^x24@uA~l#!&Ec$(X&~6rdPu<;hcuS{#6CcPE6d&%c@N+Auyk-^}NJNA=G( z#`2#NZ67B&7}ne43avS+?BjGS)Vob;|r6tazVc*E`Y zn}*v%>Tk`35MtSn<}2ZPqSSf(`ht*k0w^6qUxb{WaggoTb&Soomghr|;qs}|2i?8r z2|1FV8Q)@y*sTLAoqG_vPWsIT8KMe&Bu-t^rwQAJJlmT0cC}{#|6^EH?lz;Dk@6?r zV?8f6#~2zx_X-=iTTacLp`cjDAu>mG*Nc+2gYPW%UM#u|Z0D=FgBO^T`>1NX6qDh< zQq2$V3siMJ?vPMYKcg|4U`3ba$4O81??p|mvgfzhLrE=JLZ?Z14r@cPbFCvZ$u}xa z%)YQ46imYphF+edMZxA#eVNS0>(@?<{+U|-_6iU#)vT}XCp#a|(gx~ZX9LZ_r&k|6 z3z6-F0nP@b&t$P=-L*K*CP?e|q>1s@-JW9w_zOPM8!)*~O0IP5FgK@109 z>ovSUL&Vpa;XJ*64Yx$SURYsqP0<+=%dZbz^O!TozPmQi(GvylcdJe;6memJHQ8Td1?c9PYHR)PZODM&>bZfMxy zO1;%$)mI`6PmD@R4i3rbO)>oEmsgT+4ShS2DGJPEl?z~}c+sV11VvE)#J305mx0D- zN7H~L9_}Ku<}Yf>b0ZuyI<0nt&QNv1k78@ci6@fS9{A!2o54GtN>8cZi`RAJe{(uU z(A!k@GGyHPSbk+Exzt&q_#aW$lcPOEV5p-Up`W(_&9@+nXDFC_$?6NzY8yRbzYsYegJlL^vJ8?`1|P{iwU+^vAst zjf*b0ffYlk+%&StVa^KLVd`}zR>UGL+GLe?xlqO=_msJByN&)5eutuW0+hu$dy)}? z{l*;IhV{^b*_H?%?j7*rGQHku8s<)zEuDY%(IlD#319;1$ z`iiQkx?6QBg+*DE*L5iBuK452-8NqnVtF^}V3^H~$O~%gq&KaOKAkhtf8}k|>q_+2 zDTRZ1!#mt^+%;JFK)c^Rlw!9>hkJ;$!qW#g-4*_`*m2Rq>c}eQmf`l?qa~K9rgq{T z>Dy@sV}j`yAisOv4E0Z^)H`fu<^uyO2D@W&ea^6Qj=s76^GLM1?NPk=GHfL?Pq*6|b@8chiFIe$y*GOmm&GZ9^u#p(>@g)5|Hmk{Daib2r!R)> z_R3G!tW)CE&>;mh_^24s^nK2DpQCR_k|&!_6w3_t-cBsf*gRUx0+%eC>ix0fT9w}3 zXRL~1Y7xA3`2GWw%NsY*x2gHg()gLQitF8@R`iFr`C0d<Yd-=y2wMoB~Y0_$C#{-8;^ocw3V9vmRj+@X#)ZWYi-{RDzqjk|u zS&l}4y$MD$u8@vmw5lzknM@zML84Mqs7O9{52l_q!g2t2rN)~2$+3QxZp8OS(kTm( z`QK7*L42$5TZ^&PJRZ(TiN#-qDjIlhA>uofprrDKBspAh1Iiw%s0hkLh3K!d)u#~$ zn&;@&B1PdP9#!;HVApdmUzIBi zi@X}Q9&rv;Y!tp89{@7SJ+#GI*qiCSVrVtNF}}z`oMbcSoR<)?xjI+uLcGEwo0%(T z`yYoB8nVHdtl&m60yaCkYUJq@1fdDC??m;UjyUOTJC{5TFwJ^Ii!)Q7_{%Ozw=tWT z!0xLUDDzjSb6CXcr^5Kb5r6*T=Bg?fA-?e(qv(e{)%#6=QmiKn&4PEu;$iT8CIVsH$ z)Y|WE+!FL{vB^HnIU&WeAF)u_y6bu_eR!kT#MGWY?!p|}C=UMQJx7w+mzllzu$OP? zoS9+s^66&8lnQZ7+8*I^ylmurSmJ1KtG&RmE#rm4BGFX-jC}pBcy9yw8E;#9v`1V! z?jdSD&+Q#ayedLN{q>^PX#B6vUjIo(@ zVGX=*_SHU*nAKX&cx<|NTB=PQm*I^5a=ecKJLJBBJ3qS@)H|EOqZ*@VcwfipR2xF? zv?Q=VCU}P7z(g~BmQo>lhk8;y6LPc~gM%M~g)m<`FyyGCjf(6BohW7OBD{&|9*^f9PD_#AZ*%BS3$?PNf;ARc z9gx^zYrAUk48R6~qc8+d%P;Od?_sR_Uy=uIpy;?AP*>Z4HG`a~))=by-;`eLYd}pR z0maa~qvXr3ElTg>%u+Jp&|vU!S5n!%RA*9OEehuy2(qY*Y``O%5hdj}499o) zDn^GAX@1*i>ZC7AlubI|WWXF0cvOyPnqZ^upzM@kF|>=d2l|x^kkMIYvzsrggaknS7IRQ-w|tBXu&a7QXaR>zuWB z$$^_i!K*J(CO8R_YCA*@Zt?k1Q*F7F=ohr~N&7tBI&wi+Z;qU8-aGntmJsd^(qBrl z%F>^p)Ew7sPeI_An9-E9nqXt@juOTpE&@6td%nUI95a5VE{l|>nzbE($XPPg*I~ng zE0+J zK{ZjzRsaDbo)b+-5R7KspYWk}feh)vhM-kVHO4bd#1$p)I(9ZqRpJ8~1}w0*`n=ma zg+ePTIs^qge~@sj*#xMn1WEuQ=6C=BaVvQ8tA!Cv?&=_M8Hk)1@>w9%2;UncHG&_V zOJYYOcm-kgebO6tROfBjhcKVUjXJz6XIyZuhGWd>}85LiNYYW zP|#ci8-qS{ZO(V67Q6x3k&~ANJMqkYd^v10NB75Y>E(p?K;c=Nn7hvdiMEcWFu&hk zK2L`!71v=Kw!0I-_;|?P$(WJ#q6*1KMs_`|)rNtZ3X4{>ee#-GBE%#|HAqK!#1*Rg zO|@BqJ%U)4dPqBAT78V_^c-2Te)SIjRPHXH05>TCQxj?{nqH7S_5MM@lg9Y~c0eOT#tbpV(tF-ab&WE8-X8 zzKtF4v@Sh)`gwMw%n%smD@6^bzBA;{C;Rlx>VI%|C*HJ7eqV5-8HD5t;aMF1gV8>T zq)_*Q2RS^d3$@*hcvNxx7BPVYxr?ERh(#>C`{&d0i8@`QpahxnFz2LDAESzhY=s2R z9(vCo6?&mG4#=qX|C0si4|MFaLIl?J44L!)me=t;_izO%(lAUh*57vHb^#ODL%)Gz zdn$1i;ZnfFzO09yw8e?V0X(xDc^D|~Mm7&$U5k!88$C-J^koM$pd6jV{k1;sk;O{S%ViD97Fv`CO5mY8ng~;l*V>NvRcp{ixnGWt_7d0(Ym_qAc#hz=*v~( z+e`5hQpX>qiOUc!H|DA%))^vgqX7FPs0x0TFvUIQeic!2oDpiyZf6F0JFp(Vpc*#$ zQ$G`Ap|3~MT+7|xm<#%LgM4g4R}PIBqBjgLPgAKS?ow0;B1KnfX36(U@}cv^KPO6F%0K zwiVR3ggLC%4v{OK)3OIr*cxnkGO15zVg3nrDxN7SFy?yW;)2(?7z3Bf<6#TE)=-

@U2cmAu?o6uLOKNlSJ=FGiMAvM@8d9|r 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 Duz0{& From b07810bb5cff281692f5abfa422c7cdb2ea8f0fa Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Mon, 27 Mar 2023 21:13:43 +0530 Subject: [PATCH 15/18] Removing redundant files --- 1_cpp_basics/pointers/a.out | Bin 16640 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 1_cpp_basics/pointers/a.out diff --git a/1_cpp_basics/pointers/a.out b/1_cpp_basics/pointers/a.out deleted file mode 100755 index a3d56cfcf2a9a3816eb0fd6ca4c0e264e25b098f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16640 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 sVXlFYejDQU^Ye#(58$@j?Vo8>++K%}OV From 4577a1dfb5cd513e6a5f3ab1449e2fc3bc29e750 Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Mon, 27 Mar 2023 23:23:33 +0530 Subject: [PATCH 16/18] Final changes --- 1_cpp_basics/10_vectors/access_vector.cpp | 14 + .../{vectors => 10_vectors}/addtovector.cpp | 15 +- .../vectors_initialization.cpp | 13 +- .../explicit_typecasting.cpp | 4 +- .../implicit_typecasting.cpp | 8 +- 1_cpp_basics/2_namespace/namespace.cpp | 26 + 1_cpp_basics/3_conditional_statements/if.cpp | 12 + .../3_conditional_statements/if_else.cpp | 16 + .../3_conditional_statements/switch.cpp | 34 ++ 1_cpp_basics/4_enumeration/enumeration.cpp | 21 + .../{functions => 5_functions}/function.cpp | 4 +- .../classes_and_objects.cpp | 25 +- 1_cpp_basics/7_templates/class_template.cpp | 20 + .../7_templates/functional_template.cpp | 21 + 1_cpp_basics/8_arrays/arrays2d.cpp | 23 + .../8_arrays/passing2darraytofunction.cpp | 35 ++ 1_cpp_basics/9_pointers/pointers.cpp | 12 + .../9_pointers/pointers_and_array.cpp | 23 + 1_cpp_basics/README.md | 489 +++++++++--------- 1_cpp_basics/arrays/arrays2d.cpp | 24 - .../arrays/passing2darraytofunction.cpp | 35 -- 1_cpp_basics/conditional_statements/if.cpp | 12 - .../conditional_statements/if_else.cpp | 16 - .../conditional_statements/switch.cpp | 33 -- 1_cpp_basics/enumeration/enumeration.cpp | 14 - 1_cpp_basics/namespace/namespace.cpp | 26 - 1_cpp_basics/pointers/pointers.cpp | 13 - 1_cpp_basics/pointers/pointers_and_array.cpp | 24 - 1_cpp_basics/templates/class_template.cpp | 21 - .../templates/functional_template.cpp | 21 - 1_cpp_basics/vectors/access_vector.cpp | 13 - 31 files changed, 553 insertions(+), 514 deletions(-) create mode 100644 1_cpp_basics/10_vectors/access_vector.cpp rename 1_cpp_basics/{vectors => 10_vectors}/addtovector.cpp (66%) rename 1_cpp_basics/{vectors => 10_vectors}/vectors_initialization.cpp (82%) rename 1_cpp_basics/{typecasting => 1_typecasting}/explicit_typecasting.cpp (85%) rename 1_cpp_basics/{typecasting => 1_typecasting}/implicit_typecasting.cpp (78%) create mode 100644 1_cpp_basics/2_namespace/namespace.cpp create mode 100644 1_cpp_basics/3_conditional_statements/if.cpp create mode 100644 1_cpp_basics/3_conditional_statements/if_else.cpp create mode 100644 1_cpp_basics/3_conditional_statements/switch.cpp create mode 100644 1_cpp_basics/4_enumeration/enumeration.cpp rename 1_cpp_basics/{functions => 5_functions}/function.cpp (81%) rename 1_cpp_basics/{classes_and_objects => 6_classes_and_objects}/classes_and_objects.cpp (76%) create mode 100644 1_cpp_basics/7_templates/class_template.cpp create mode 100644 1_cpp_basics/7_templates/functional_template.cpp create mode 100644 1_cpp_basics/8_arrays/arrays2d.cpp create mode 100644 1_cpp_basics/8_arrays/passing2darraytofunction.cpp create mode 100644 1_cpp_basics/9_pointers/pointers.cpp create mode 100644 1_cpp_basics/9_pointers/pointers_and_array.cpp delete mode 100644 1_cpp_basics/arrays/arrays2d.cpp delete mode 100644 1_cpp_basics/arrays/passing2darraytofunction.cpp delete mode 100644 1_cpp_basics/conditional_statements/if.cpp delete mode 100644 1_cpp_basics/conditional_statements/if_else.cpp delete mode 100644 1_cpp_basics/conditional_statements/switch.cpp delete mode 100644 1_cpp_basics/enumeration/enumeration.cpp delete mode 100644 1_cpp_basics/namespace/namespace.cpp delete mode 100644 1_cpp_basics/pointers/pointers.cpp delete mode 100644 1_cpp_basics/pointers/pointers_and_array.cpp delete mode 100644 1_cpp_basics/templates/class_template.cpp delete mode 100644 1_cpp_basics/templates/functional_template.cpp delete mode 100644 1_cpp_basics/vectors/access_vector.cpp diff --git a/1_cpp_basics/10_vectors/access_vector.cpp b/1_cpp_basics/10_vectors/access_vector.cpp new file mode 100644 index 0000000..9021ec8 --- /dev/null +++ b/1_cpp_basics/10_vectors/access_vector.cpp @@ -0,0 +1,14 @@ +#include +#include +using namespace std; + +int main() +{ + vector num{1, 2, 3, 4, 5}; // Initialised a vector + + cout << "Element at Index 0: " << num.at(0) << endl; // Printing value at vector index 0 + cout << "Element at Index 2: " << num.at(2) << endl; // Printing value at vector index 2 + cout << "Element at Index 4: " << num.at(4); // Printing value at vector index 4 + + return 0; +} diff --git a/1_cpp_basics/vectors/addtovector.cpp b/1_cpp_basics/10_vectors/addtovector.cpp similarity index 66% rename from 1_cpp_basics/vectors/addtovector.cpp rename to 1_cpp_basics/10_vectors/addtovector.cpp index 42f596b..b7063b7 100644 --- a/1_cpp_basics/vectors/addtovector.cpp +++ b/1_cpp_basics/10_vectors/addtovector.cpp @@ -2,24 +2,27 @@ #include using namespace std; -int main() { - vector num {1, 2, 3, 4, 5}; //Initialising a vector +int main() +{ + vector num{1, 2, 3, 4, 5}; // Initialising a vector cout << "Initial Vector: "; - for (const int& i : num) { + for (const int &i : num) + { cout << i << " "; } - + // add the integers 6 and 7 to the vector num.push_back(6); num.push_back(7); cout << "\nUpdated Vector: "; - for (const int& i : num) { + for (const int &i : num) + { cout << i << " "; } return 0; -} \ No newline at end of file +} diff --git a/1_cpp_basics/vectors/vectors_initialization.cpp b/1_cpp_basics/10_vectors/vectors_initialization.cpp similarity index 82% rename from 1_cpp_basics/vectors/vectors_initialization.cpp rename to 1_cpp_basics/10_vectors/vectors_initialization.cpp index b9b3309..2d39902 100644 --- a/1_cpp_basics/vectors/vectors_initialization.cpp +++ b/1_cpp_basics/10_vectors/vectors_initialization.cpp @@ -2,7 +2,8 @@ #include using namespace std; -int main() { +int main() +{ // initializer list vector vector1 = {1, 2, 3, 4, 5}; @@ -17,24 +18,26 @@ int main() { cout << "vector1 = "; // ranged loop - for (const int& i : vector1) { + for (const int &i : vector1) + { cout << i << " "; } cout << "\nvector2 = "; // ranged loop - for (const int& i : vector2) { + for (const int &i : vector2) + { cout << i << " "; } cout << "\nvector3 = "; // ranged loop - for (int i : vector3) { + for (int i : vector3) + { cout << i << " "; } cout << endl; return 0; } - diff --git a/1_cpp_basics/typecasting/explicit_typecasting.cpp b/1_cpp_basics/1_typecasting/explicit_typecasting.cpp similarity index 85% rename from 1_cpp_basics/typecasting/explicit_typecasting.cpp rename to 1_cpp_basics/1_typecasting/explicit_typecasting.cpp index b84de96..a98faf8 100644 --- a/1_cpp_basics/typecasting/explicit_typecasting.cpp +++ b/1_cpp_basics/1_typecasting/explicit_typecasting.cpp @@ -11,7 +11,7 @@ int main() // Explicit conversion from double to int int sum = (int)x + 1; - cout << "Sum = " << sum< +using namespace std; +int main() +{ + int num = 10; + if (num > 5) // condition + { + cout << "Hello From SRA\n"; + // If condn is fullfilled it will get executed + } + return 0; +} diff --git a/1_cpp_basics/3_conditional_statements/if_else.cpp b/1_cpp_basics/3_conditional_statements/if_else.cpp new file mode 100644 index 0000000..6310ed1 --- /dev/null +++ b/1_cpp_basics/3_conditional_statements/if_else.cpp @@ -0,0 +1,16 @@ +// Code to find even and odd num using if else statement +#include +using namespace std; +int main() +{ + int num = 10; + if (num % 2 == 0) // if num is divisible by 2 i.e remainder is 0 when divided by 2 + { + cout << "the number is even\n"; + } + else // if If statement is not satisfied the else statement is executed + { + cout << "The number is odd\n"; + } + return 0; +} \ No newline at end of file diff --git a/1_cpp_basics/3_conditional_statements/switch.cpp b/1_cpp_basics/3_conditional_statements/switch.cpp new file mode 100644 index 0000000..97a40ae --- /dev/null +++ b/1_cpp_basics/3_conditional_statements/switch.cpp @@ -0,0 +1,34 @@ +#include +using namespace std; +int main() +{ + int day = 4; + switch (day) + { // Switch statement with day given as condition for cases + case 1: // If day=1 then case1 is executed + cout << "Monday"; + break; // if case1 is executed then break is executed and exits switch statement + case 2: // If day=2 then case2 is executed + cout << "Tuesday"; + break; // if case2 is executed then break is executed and exits switch statement + case 3: + cout << "Wednesday"; + break; + case 4: + cout << "Thursday"; + break; + case 5: + cout << "Friday"; + break; + case 6: + cout << "Saturday"; + break; + case 7: + cout << "Sunday"; + break; + default: // If none of the case is satisfied then default statement is executed. + cout << "Not a day"; + break; + } + return 0; +} diff --git a/1_cpp_basics/4_enumeration/enumeration.cpp b/1_cpp_basics/4_enumeration/enumeration.cpp new file mode 100644 index 0000000..3928384 --- /dev/null +++ b/1_cpp_basics/4_enumeration/enumeration.cpp @@ -0,0 +1,21 @@ +#include +using namespace std; + +enum seasons +{ + spring = 34, + summer = 4, + autumn = 9, + winter = 32 +}; +// enum named season is made and spring,summer ,autumn and winter are its member with values 34,5,9,32 respectively +int main() +{ + + seasons s; // s is a variable of type seasons(enum) + + s = summer; // s is assigned value of summer + cout << "Summer = " << s << endl; + + return 0; +} diff --git a/1_cpp_basics/functions/function.cpp b/1_cpp_basics/5_functions/function.cpp similarity index 81% rename from 1_cpp_basics/functions/function.cpp rename to 1_cpp_basics/5_functions/function.cpp index 5344507..02c2bcd 100644 --- a/1_cpp_basics/functions/function.cpp +++ b/1_cpp_basics/5_functions/function.cpp @@ -3,7 +3,7 @@ using namespace std; // Following function that takes two parameters 'x' and 'y' // as input and returns max of two input numbers -int max(int x, int y)//max function made with return type int and parameters int x and int y +int max(int x, int y) // max function made with return type int and parameters int x and int y { if (x > y) return x; @@ -22,4 +22,4 @@ int main() cout << "m is " << m; return 0; -} \ No newline at end of file +} diff --git a/1_cpp_basics/classes_and_objects/classes_and_objects.cpp b/1_cpp_basics/6_classes_and_objects/classes_and_objects.cpp similarity index 76% rename from 1_cpp_basics/classes_and_objects/classes_and_objects.cpp rename to 1_cpp_basics/6_classes_and_objects/classes_and_objects.cpp index 3b663f9..bd901ed 100644 --- a/1_cpp_basics/classes_and_objects/classes_and_objects.cpp +++ b/1_cpp_basics/6_classes_and_objects/classes_and_objects.cpp @@ -5,36 +5,37 @@ using namespace std; class Sra { - public: +public: char first_letter; int id; - + // printletter is not defined inside class definition void printletter(); - + // printid is defined inside class definition void printid() { - cout <<"SRA id is: "< +using namespace std; +template // Declaring the Class template +class A +{ +public: + T num1 = 5; + T num2 = 6; + void add() + { + std::cout << "Addition of num1 and num2 : " << num1 + num2 << std::endl; + } +}; + +int main() +{ + A d; + d.add(); // Calling the class method + return 0; +} diff --git a/1_cpp_basics/7_templates/functional_template.cpp b/1_cpp_basics/7_templates/functional_template.cpp new file mode 100644 index 0000000..1452723 --- /dev/null +++ b/1_cpp_basics/7_templates/functional_template.cpp @@ -0,0 +1,21 @@ +// Example of Function Template + +#include +using namespace std; +template +T add(T &a, T &b) // Declaring a Functional template +{ + T result = a + b; + return result; +} +int main() +{ + int i = 2; + int j = 3; + float m = 2.3; + float n = 1.2; + cout << "Addition of i and j is :" << add(i, j); // Calling the template for integer data type + cout << '\n'; + cout << "Addition of m and n is :" << add(m, n); // Calling the template for float data type + return 0; +} diff --git a/1_cpp_basics/8_arrays/arrays2d.cpp b/1_cpp_basics/8_arrays/arrays2d.cpp new file mode 100644 index 0000000..7815b93 --- /dev/null +++ b/1_cpp_basics/8_arrays/arrays2d.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; +int main() +{ + int arr[4][2] = {// An array with 4 rows and 2 columns is made and initialized + {10, 11}, + {20, 21}, + {30, 31}, + {40, 41}}; + + int i, j; // Two variables for looping + + cout << "Printing a 2D Array:\n"; + for (i = 0; i < 4; i++) // traversing through row + { + for (j = 0; j < 2; j++) // traversing through column + { + cout << "\t" << arr[i][j]; + } + cout << endl; + } + return 0; +} diff --git a/1_cpp_basics/8_arrays/passing2darraytofunction.cpp b/1_cpp_basics/8_arrays/passing2darraytofunction.cpp new file mode 100644 index 0000000..dc0d424 --- /dev/null +++ b/1_cpp_basics/8_arrays/passing2darraytofunction.cpp @@ -0,0 +1,35 @@ +#include +using namespace std; + +void display(int (*ptr)[4], int row, int col) // Call by Address +{ + int i, j; + for (i = 0; i < row; i++) + { + for (j = 0; j < col; j++) + cout << "\t" << *(*(ptr + i) + j); // Array is printed with help of pointer arithmetic + cout << "\n"; + } + cout << "\n"; +} + +void print(int ptr[][4], int row, int col) // Call by value +{ + int i, j; + for (i = 0; i < row; i++) + { + for (j = 0; j < col; j++) + cout << "\t" << ptr[i][j]; + cout << "\n"; + } + cout << "\n"; +} + +int main() +{ + int a[3][4] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21}; + + display(a, 3, 4); + print(a, 3, 4); + return 0; +} diff --git a/1_cpp_basics/9_pointers/pointers.cpp b/1_cpp_basics/9_pointers/pointers.cpp new file mode 100644 index 0000000..bbcf4d3 --- /dev/null +++ b/1_cpp_basics/9_pointers/pointers.cpp @@ -0,0 +1,12 @@ +#include +using namespace std; +int main() +{ + int number = 30; + int *p; + p = &number; // stores the address of number variable + cout << "Address of number variable is:" << &number << endl; + cout << "Address of p variable is:" << p << endl; + cout << "Value of p variable is:" << *p << endl; + return 0; +} diff --git a/1_cpp_basics/9_pointers/pointers_and_array.cpp b/1_cpp_basics/9_pointers/pointers_and_array.cpp new file mode 100644 index 0000000..b8844bd --- /dev/null +++ b/1_cpp_basics/9_pointers/pointers_and_array.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; +/* Usage of pointer to an array */ +int main() +{ + int a[4][2] = {// Declaring and initialising a 2D array + {1, 2}, + {1, 2}, + {1, 2}, + {1, 2}}; + + int(*ptr)[2]; // Declaring a 2D pointer + int i, j; + for (i = 0; i <= 3; i++) + { + ptr = &a[i]; // Stores the address of Array a with index i, in ptr + cout << "Row" << i << ":"; + for (j = 0; j <= 1; j++) + cout << "\t" << *(*ptr + j); // Prints the data at pointed by address ptr+j + cout << endl; + } + return 0; +} diff --git a/1_cpp_basics/README.md b/1_cpp_basics/README.md index 23fcd75..8dafdbc 100644 --- a/1_cpp_basics/README.md +++ b/1_cpp_basics/README.md @@ -1,26 +1,28 @@ # **Basics Of C++** ## **Table Of Contents :** -* [To Run a .cpp file On your terminal](#to-run-a-.cpp-file-on-your-terminal) -* [Variables And Data Types](#variables-and-data-types) -* [Type Casting](#type-casting) -* [Namespace](#namespace) -* [Conditional Statements](#conditional-statements) -* [Control Loops](#control-loops) -* [Enumeration](#enumeration) -* [Functions](#functions) -* [Classes And Objects](#classes-and-objects) -* [Templates](#templates) -* [Arrays](#arrays) - * [Initializing Arrays](#initializing-arrays) - * [ Array Accessing](#array-accessing) - * [Printing 1-D Array](#printing-1-d-array) - * [Multidimensional Arrays](#multidimensional-arrays) - * [Printing a 2D array](#printing-a-2d-array) -* [Pointers](#pointers) -* [Pointers And Array](#pointers-and-array) -* [Passing 2D Array To A Function](#passing-2d-array-to-a-function) -* [Vectors](#vectors) +- [**Basics Of C++**](#basics-of-c) + - [**Table Of Contents :**](#table-of-contents-) + - [**To run a .cpp file on your terminal**](#to-run-a-cpp-file-on-your-terminal) + - [**Variables and Data Types:**](#variables-and-data-types) + - [**Type Casting:**](#type-casting) + - [**Namespace:**](#namespace) + - [**Conditional Statements:**](#conditional-statements) + - [**Control Loops:**](#control-loops) + - [**Enumeration:**](#enumeration) + - [**Functions:**](#functions) + - [**Classes And Objects:**](#classes-and-objects) + - [**Templates:**](#templates) + - [**Arrays :**](#arrays-) + - [**Initializing Arrays :**](#initializing-arrays-) + - [**Array Accessing :**](#array-accessing-) + - [**Printing 1-D Array:**](#printing-1-d-array) + - [**Multidimensional Arrays :**](#multidimensional-arrays-) + - [**Printing a 2D Array:**](#printing-a-2d-array) + - [**Pointers :**](#pointers-) + - [**Pointers And Array :**](#pointers-and-array-) + - [**Passing 2D Array To A Function :**](#passing-2d-array-to-a-function-) + - [**Vectors :**](#vectors-) ## **To run a .cpp file on your terminal** ```md Compile the .cpp file with following command: @@ -49,7 +51,7 @@ using namespace std; int main() { - int x = 10; // integer x + int x = 10; // integer x char y = 'a'; // character c // y implicitly converted to int. ASCII @@ -60,11 +62,12 @@ int main() float z = x + 1.0; cout << "x = " << x << endl - << "y = " << y << endl - << "z = " << z << endl; + << "y = " << y << endl + << "z = " << z << endl; return 0; } + ``` **Output:** @@ -94,10 +97,11 @@ int main() // Explicit conversion from double to int int sum = (int)x + 1; - cout << "Sum = " << sum; + cout << "Sum = " << sum << endl; return 0; } + ``` **Output:** @@ -126,27 +130,28 @@ using namespace std; // first name space namespace first_space { -void func() -{ - cout << "Inside first_space" << endl; -} + void func() + { + cout << "Inside first_space" << endl; + } } // second name space namespace second_space { -void func() -{ - cout << "Inside second_space" << endl; -} + void func() + { + cout << "Inside second_space" << endl; + } } using namespace first_space; -int main () +int main() { -// This calls function from first name space. -func(); -return 0; + // This calls function from first name space. + func(); + return 0; } + ``` **Output:** @@ -163,14 +168,15 @@ Conditional statements, also known as selection statements, are used to make dec using namespace std; int main() { - int num =10; // num variable made nad initialized with value 10 - if(num>5) // condition + int num = 10; + if (num > 5) // condition { - cout<<"Hello From SRA\n"; -//If condn is fullfilled it will get executed - } + cout << "Hello From SRA\n"; + // If condn is fullfilled it will get executed + } return 0; } + ``` **Output:** @@ -180,16 +186,20 @@ int main() 2.**If-else:** ```C++ //Code to find even and odd num using if else statement +// Code to find even and odd num using if else statement #include using namespace std; int main() { - int num =10; - if(num%2 == 0) //if num is divisible by 2 i.e remainder is 0 when divided by 2 - {cout<<"the Number is even\n"; + int num = 10; + if (num % 2 == 0) // if num is divisible by 2 i.e remainder is 0 when divided by 2 + { + cout << "the number is even\n"; + } + else // if If statement is not satisfied the else statement is executed + { + cout << "The number is odd\n"; } - else//if If statement is not satisfied the else statement is executed - {cout<<"The number is odd\n";} return 0; } ``` @@ -205,14 +215,15 @@ int main() using namespace std; int main() { -int day = 4; -switch (day) {// Switch statement with day given as condition for cases - case 1: //If day=1 then case1 is executed + int day = 4; + switch (day) + { // Switch statement with day given as condition for cases + case 1: // If day=1 then case1 is executed cout << "Monday"; - break; //if case1 is executed then break is executed and exits switch statement - case 2: //If day=2 then case2 is executed + break; // if case1 is executed then break is executed and exits switch statement + case 2: // If day=2 then case2 is executed cout << "Tuesday"; - break;//if case2 is executed then break is executed and exits switch statement + break; // if case2 is executed then break is executed and exits switch statement case 3: cout << "Wednesday"; break; @@ -228,12 +239,13 @@ switch (day) {// Switch statement with day given as condition for cases case 7: cout << "Sunday"; break; - default:// If none of the case is satisfied then default statement is executed. - cout<<"Not a day"; - break; -} -return 0; + default: // If none of the case is satisfied then default statement is executed. + cout << "Not a day"; + break; + } + return 0; } + ``` **Output** @@ -247,11 +259,10 @@ return 0; Firsts initialize,then condition check,then execute bode,finally updates the control variable. -**Synatx:** +**Syntax:** ```C++ for( initialization exp; test exp; update exp) { - // statement we want to execute; } ``` @@ -265,7 +276,7 @@ while(test exp) { // statement we want to execute; - //update statement; + // update statement; } ``` 3. **Do-While Loop:** @@ -279,7 +290,7 @@ initialization exp; do { // statement we want to execute; - // update expression; + // update expression; }while(test expression); ``` @@ -300,17 +311,25 @@ enum name_of_enum #include using namespace std; -enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32}; -// enum named season is made and spring,summer ,autumn and winter are its member with values 34,5,9,32 respectively -int main() { +enum seasons +{ + spring = 34, + summer = 4, + autumn = 9, + winter = 32 +}; +// enum named season is made and spring,summer ,autumn and winter are its member with values 34,5,9,32 respectively +int main() +{ seasons s; // s is a variable of type seasons(enum) - s = summer; //s is assigned value of summer + s = summer; // s is assigned value of summer cout << "Summer = " << s << endl; return 0; } + ``` **Output:** @@ -341,7 +360,7 @@ using namespace std; // Following function that takes two parameters 'x' and 'y' // as input and returns max of two input numbers -int max(int x, int y)//max function made with return type int and parameters int x and int y +int max(int x, int y) // max function made with return type int and parameters int x and int y { if (x > y) return x; @@ -361,6 +380,7 @@ int main() cout << "m is " << m; return 0; } + ``` **Output:** @@ -389,41 +409,43 @@ In C++, there are three access specifiers: #include using namespace std; -class Sra //A class named Sra is made +class Sra { - public: //public specifier is used - char first_letter;// member variables +public: + char first_letter; int id; - + // printletter is not defined inside class definition void printletter(); - + // printid is defined inside class definition void printid() { - cout <<"SRA id is: "<   -using namespace std;   -template T add(T &a,T &b)  //Declaring a Functional template -{   -    T result = a+b;   -    return result;   -       -}   -int main()   -{   -  int i =2;   -  int j =3;   -  float m = 2.3;   -  float n = 1.2;   -  cout<<"Addition of i and j is :"< +using namespace std; +template +T add(T &a, T &b) // Declaring a Functional template +{ + T result = a + b; + return result; +} +int main() +{ + int i = 2; + int j = 3; + float m = 2.3; + float n = 1.2; + cout << "Addition of i and j is :" << add(i, j); // Calling the template for integer data type + cout << '\n'; + cout << "Addition of m and n is :" << add(m, n); // Calling the template for float data type + return 0; +} + ``` **Output:** @@ -469,27 +492,27 @@ int main()   ```C++ - #include    - using namespace std;   - template  //Declaring the Class template - class A    - {   -     public:   -     T num1 = 5;   -     T num2 = 6;   -     void add()   -     {   -         std::cout << "Addition of num1 and num2 : " << num1+num2< d;   -     d.add();  //Calling the class method -     return 0;   - }   + #include +using namespace std; +template // Declaring the Class template +class A +{ +public: + T num1 = 5; + T num2 = 6; + void add() + { + std::cout << "Addition of num1 and num2 : " << num1 + num2 << std::endl; + } +}; + +int main() +{ + A d; + d.add(); // Calling the class method + return 0; +} + ``` **Output:** @@ -542,7 +565,7 @@ foo [2] = 75; ```C++ int foo[5]; // declaration of a new array`** - foo[2] = 75; // access to an element of the array.`** +foo[2] = 75; // access to an element of the array.`** ``` ## **Printing 1-D Array:** We can use loops for taking and printing values of a 1-D array, @@ -551,9 +574,9 @@ We can use loops for taking and printing values of a 1-D array, using namespace std; int main() { - int arr1[5]= {1,2,3,4,5};//An array of size 5 is declared and initialized - int i; // a variables made for looping - for(i=0;i<5;i++)// for loop used for looping + int arr1[5]= {1,2,3,4,5}; //An array of size 5 is declared and initialized + int i; // a variables made for looping + for(i=0;i<5;i++) // for loop used for looping {cout<<"Values of Array are: "< -using namespace std; -int main( ) -{ - int arr[4][2] = {//An array with 4 rows and 2 columns is made and initialized - { 10, 11 }, - { 20, 21 }, - { 30, 31 }, - { 40, 41 } - } ; - - int i,j;//Two variables for looping - - cout<<"Printing a 2D Array:\n"; - for(i=0;i<4;i++)//traversing through row +#include +using namespace std; +int main() +{ + int arr[4][2] = {// An array with 4 rows and 2 columns is made and initialized + {10, 11}, + {20, 21}, + {30, 31}, + {40, 41}}; + + int i, j; // Two variables for looping + + cout << "Printing a 2D Array:\n"; + for (i = 0; i < 4; i++) // traversing through row { - for(j=0;j<2;j++)//traversing through column + for (j = 0; j < 2; j++) // traversing through column { - cout<<"\t"<   - using namespace std;   - int main()   - {   - int number=30;     - int ∗p;       - p=&number;//stores the address of number variable     - cout<<"Address of number variable is:"<<&number< +using namespace std; +int main() +{ + int number = 30; + int *p; + p = &number; // stores the address of number variable + cout << "Address of number variable is:" << &number << endl; + cout << "Address of p variable is:" << p << endl; + cout << "Value of p variable is:" << *p << endl; + return 0; +} ``` **The output of above code is :** @@ -682,30 +704,30 @@ A pointer is a variable that stores the memory address of an object. Pointers ar Here is an example of pointer to a 2D array: ``` C++ -#include +#include using namespace std; -/* Usage of pointer to an array */ -int main( ) -{ - int a[4][2] = { // Declaring and initialising a 2D array - {1, 2}, - {1, 2}, - {1, 2}, - {1, 2} - } ; - - int (*ptr)[2] ; //Declaring a 2D pointer - int i, j; - for (i = 0 ; i <= 3 ; i++) - { - ptr=&a[i]; //Stores the address of Array a with index i, in ptr - cout<<"Row"< -using namespace std; - -void display(int (*ptr)[4], int row, int col) //Call by Address +#include +using namespace std; + +void display(int (*ptr)[4], int row, int col) // Call by Address { - int i, j ; - for(i=0;i using namespace std; -int main() { +int main() +{ // initializer list vector vector1 = {1, 2, 3, 4, 5}; @@ -825,26 +849,30 @@ int main() { cout << "vector1 = "; // ranged loop - for (const int& i : vector1) { + for (const int &i : vector1) + { cout << i << " "; } cout << "\nvector2 = "; // ranged loop - for (const int& i : vector2) { + for (const int &i : vector2) + { cout << i << " "; } cout << "\nvector3 = "; // ranged loop - for (int i : vector3) { + for (int i : vector3) + { cout << i << " "; } - + cout << endl; return 0; } + ``` **Output :** @@ -857,34 +885,31 @@ int main() { #include using namespace std; - -int main() +int main() { - - - vector num {1, 2, 3, 4, 5}; //Initialising a vector - + vector num{1, 2, 3, 4, 5}; // Initialising a vector cout << "Initial Vector: "; - for (const int& i : num) + for (const int &i : num) { cout << i << " "; } - + // add the integers 6 and 7 to the vector num.push_back(6); num.push_back(7); cout << "\nUpdated Vector: "; - for (const int& i : num) + for (const int &i : num) { cout << i << " "; } return 0; } + ``` Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. Here, the **`push_back()`** function adds elements 6 and 7 to the vector. @@ -899,15 +924,17 @@ Here, we have initialized an int vector num with the elements {1, 2, 3, 4, 5}. H #include using namespace std; -int main() { - vector num {1, 2, 3, 4, 5}; //Initialised a vector +int main() +{ + vector num{1, 2, 3, 4, 5}; // Initialised a vector - cout << "Element at Index 0: " << num.at(0) << endl; //Printing value at vector index 0 - cout << "Element at Index 2: " << num.at(2) << endl; //Printing value at vector index 2 - cout << "Element at Index 4: " << num.at(4); //Printing value at vector index 4 + cout << "Element at Index 0: " << num.at(0) << endl; // Printing value at vector index 0 + cout << "Element at Index 2: " << num.at(2) << endl; // Printing value at vector index 2 + cout << "Element at Index 4: " << num.at(4); // Printing value at vector index 4 return 0; } + ``` We use the index number to access the vector elements. Here, we use the **`at()`** function to access the element from the specified index. diff --git a/1_cpp_basics/arrays/arrays2d.cpp b/1_cpp_basics/arrays/arrays2d.cpp deleted file mode 100644 index a57d1d5..0000000 --- a/1_cpp_basics/arrays/arrays2d.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -using namespace std; -int main( ) -{ - int arr[4][2] = {//An array with 4 rows and 2 columns is made and initialized - { 10, 11 }, - { 20, 21 }, - { 30, 31 }, - { 40, 41 } - } ; - - int i,j;//Two variables for looping - - cout<<"Printing a 2D Array:\n"; - for(i=0;i<4;i++)//traversing through row - { - for(j=0;j<2;j++)//traversing through column - { - cout<<"\t"< -using namespace std; - -void display(int (*ptr)[4], int row, int col) //Call by Address -{ - int i, j ; - for(i=0;i -using namespace std; -int main() -{ - int num =10; - if(num>5) // condition - { - cout<<"Hello From SRA\n"; -//If condn is fullfilled it will get executed - } - return 0; -} \ No newline at end of file diff --git a/1_cpp_basics/conditional_statements/if_else.cpp b/1_cpp_basics/conditional_statements/if_else.cpp deleted file mode 100644 index d85abb7..0000000 --- a/1_cpp_basics/conditional_statements/if_else.cpp +++ /dev/null @@ -1,16 +0,0 @@ -//Code to find even and odd num using if else statement -#include -using namespace std; -int main() -{ - int num =10; - if(num%2 == 0)//if num is divisible by 2 i.e remainder is 0 when divided by 2 - { - cout<<"the number is even\n"; - } - else//if If statement is not satisfied the else statement is executed - { - cout<<"The number is odd\n"; - } - return 0; -} \ No newline at end of file diff --git a/1_cpp_basics/conditional_statements/switch.cpp b/1_cpp_basics/conditional_statements/switch.cpp deleted file mode 100644 index 2d03c2c..0000000 --- a/1_cpp_basics/conditional_statements/switch.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include -using namespace std; -int main() -{ -int day = 4; -switch (day) {//Switch statement with day given as condition for cases - case 1://If day=1 then case1 is executed - cout << "Monday"; - break;//if case1 is executed then break is executed and exits switch statement - case 2://If day=2 then case2 is executed - cout << "Tuesday"; - break;//if case2 is executed then break is executed and exits switch statement - case 3: - cout << "Wednesday"; - break; - case 4: - cout << "Thursday"; - break; - case 5: - cout << "Friday"; - break; - case 6: - cout << "Saturday"; - break; - case 7: - cout << "Sunday"; - break; - default:// If none of the case is satisfied then default statement is executed. - cout<<"Not a day"; - break; -} -return 0; -} \ No newline at end of file diff --git a/1_cpp_basics/enumeration/enumeration.cpp b/1_cpp_basics/enumeration/enumeration.cpp deleted file mode 100644 index 37f8977..0000000 --- a/1_cpp_basics/enumeration/enumeration.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -using namespace std; - -enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32}; -// enum named season is made and spring,summer ,autumn and winter are its member with values 34,5,9,32 respectively -int main() { - - seasons s;// s is a variable of type seasons(enum) - - s = summer;//s is assigned value of summer - cout << "Summer = " << s << endl; - - return 0; -} \ No newline at end of file diff --git a/1_cpp_basics/namespace/namespace.cpp b/1_cpp_basics/namespace/namespace.cpp deleted file mode 100644 index 6141e7a..0000000 --- a/1_cpp_basics/namespace/namespace.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include -using namespace std; -// first name space -namespace first_space -{ -void func() -{ - cout << "Inside first_space" << endl; -} -} - -// second name space -namespace second_space -{ -void func() -{ - cout << "Inside second_space" << endl; -} -} -using namespace first_space; -int main () -{ -// This calls function from first name space. -func(); -return 0; -} \ No newline at end of file diff --git a/1_cpp_basics/pointers/pointers.cpp b/1_cpp_basics/pointers/pointers.cpp deleted file mode 100644 index c82674a..0000000 --- a/1_cpp_basics/pointers/pointers.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -using namespace std; -int main() -{ - int number=30; - int *p; - p=&number;//stores the address of number variable - cout<<"Address of number variable is:"<<&number< -using namespace std; -/* Usage of pointer to an array */ -int main( ) -{ - int a[4][2] = { // Declaring and initialising a 2D array - {1, 2}, - {1, 2}, - {1, 2}, - {1, 2} - } ; - - int (*ptr)[2] ; //Declaring a 2D pointer - int i, j; - for (i = 0 ; i <= 3 ; i++) - { - ptr=&a[i]; //Stores the address of Array a with index i, in ptr - cout<<"Row"< - using namespace std; - template //Declaring the Class template - class A - { - public: - T num1 = 5; - T num2 = 6; - void add() - { - std::cout << "Addition of num1 and num2 : " << num1+num2< d; - d.add(); //Calling the class method - return 0; - } \ No newline at end of file diff --git a/1_cpp_basics/templates/functional_template.cpp b/1_cpp_basics/templates/functional_template.cpp deleted file mode 100644 index 6a62a2b..0000000 --- a/1_cpp_basics/templates/functional_template.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//Example of Function Template - -#include -using namespace std; -template T add(T &a,T &b) //Declaring a Functional template -{ - T result = a+b; - return result; - -} -int main() -{ - int i =2; - int j =3; - float m = 2.3; - float n = 1.2; - cout<<"Addition of i and j is :"< -#include -using namespace std; - -int main() { - vector num {1, 2, 3, 4, 5}; //Initialised a vector - - cout << "Element at Index 0: " << num.at(0) << endl; //Printing value at vector index 0 - cout << "Element at Index 2: " << num.at(2) << endl; //Printing value at vector index 2 - cout << "Element at Index 4: " << num.at(4); //Printing value at vector index 4 - - return 0; -} From ddfa58094249d87aadbdafd48367e7dd737b9ef1 Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Mon, 27 Mar 2023 23:33:36 +0530 Subject: [PATCH 17/18] Corrected the formatting --- 1_cpp_basics/README.md | 12 +++++------- 1_cpp_basics/conditional_statements/if_else.cpp | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 1_cpp_basics/conditional_statements/if_else.cpp diff --git a/1_cpp_basics/README.md b/1_cpp_basics/README.md index 8dafdbc..540593e 100644 --- a/1_cpp_basics/README.md +++ b/1_cpp_basics/README.md @@ -1,8 +1,6 @@ # **Basics Of C++** ## **Table Of Contents :** -- [**Basics Of C++**](#basics-of-c) - - [**Table Of Contents :**](#table-of-contents-) - [**To run a .cpp file on your terminal**](#to-run-a-cpp-file-on-your-terminal) - [**Variables and Data Types:**](#variables-and-data-types) - [**Type Casting:**](#type-casting) @@ -14,11 +12,11 @@ - [**Classes And Objects:**](#classes-and-objects) - [**Templates:**](#templates) - [**Arrays :**](#arrays-) - - [**Initializing Arrays :**](#initializing-arrays-) - - [**Array Accessing :**](#array-accessing-) - - [**Printing 1-D Array:**](#printing-1-d-array) - - [**Multidimensional Arrays :**](#multidimensional-arrays-) - - [**Printing a 2D Array:**](#printing-a-2d-array) + - [**Initializing Arrays :**](#initializing-arrays-) + - [**Array Accessing :**](#array-accessing-) + - [**Printing 1-D Array:**](#printing-1-d-array) + - [**Multidimensional Arrays :**](#multidimensional-arrays-) + - [**Printing a 2D Array:**](#printing-a-2d-array) - [**Pointers :**](#pointers-) - [**Pointers And Array :**](#pointers-and-array-) - [**Passing 2D Array To A Function :**](#passing-2d-array-to-a-function-) diff --git a/1_cpp_basics/conditional_statements/if_else.cpp b/1_cpp_basics/conditional_statements/if_else.cpp new file mode 100644 index 0000000..7f27f51 --- /dev/null +++ b/1_cpp_basics/conditional_statements/if_else.cpp @@ -0,0 +1,16 @@ +//Code to find even and odd num using if else statement +#include +using namespace std; +int main() +{ + int num =10; + if(num%2 == 0)//if num is divisible by 2 i.e remainder is 0 when divided by 2 + { + cout<<"the number is even\n"; + } + else//if If statement is not satisfied the else statement is executed + { + cout<<"The number is odd\n"; + } + return 0; +} From 0f7440fb442eac9194e819a7e7fb296ef2a69b94 Mon Sep 17 00:00:00 2001 From: harshbhosale01 Date: Mon, 27 Mar 2023 23:47:55 +0530 Subject: [PATCH 18/18] Changed naming format --- .../explicit_typecasting.cpp | 0 .../implicit_typecasting.cpp | 0 .../{2_namespace => 1_namespace}/namespace.cpp | 0 .../if.cpp | 0 .../if_else.cpp | 0 .../switch.cpp | 0 .../enumeration.cpp | 0 .../{5_functions => 4_functions}/function.cpp | 0 .../classes_and_objects.cpp | 0 .../class_template.cpp | 0 .../functional_template.cpp | 0 1_cpp_basics/{8_arrays => 7_arrays}/arrays2d.cpp | 0 .../passing2darraytofunction.cpp | 0 .../{9_pointers => 8_pointers}/pointers.cpp | 0 .../pointers_and_array.cpp | 0 .../{10_vectors => 9_vectors}/access_vector.cpp | 0 .../{10_vectors => 9_vectors}/addtovector.cpp | 0 .../vectors_initialization.cpp | 0 1_cpp_basics/conditional_statements/if_else.cpp | 16 ---------------- 19 files changed, 16 deletions(-) rename 1_cpp_basics/{1_typecasting => 0_typecasting}/explicit_typecasting.cpp (100%) rename 1_cpp_basics/{1_typecasting => 0_typecasting}/implicit_typecasting.cpp (100%) rename 1_cpp_basics/{2_namespace => 1_namespace}/namespace.cpp (100%) rename 1_cpp_basics/{3_conditional_statements => 2_conditional_statements}/if.cpp (100%) rename 1_cpp_basics/{3_conditional_statements => 2_conditional_statements}/if_else.cpp (100%) rename 1_cpp_basics/{3_conditional_statements => 2_conditional_statements}/switch.cpp (100%) rename 1_cpp_basics/{4_enumeration => 3_enumeration}/enumeration.cpp (100%) rename 1_cpp_basics/{5_functions => 4_functions}/function.cpp (100%) rename 1_cpp_basics/{6_classes_and_objects => 5_classes_and_objects}/classes_and_objects.cpp (100%) rename 1_cpp_basics/{7_templates => 6_templates}/class_template.cpp (100%) rename 1_cpp_basics/{7_templates => 6_templates}/functional_template.cpp (100%) rename 1_cpp_basics/{8_arrays => 7_arrays}/arrays2d.cpp (100%) rename 1_cpp_basics/{8_arrays => 7_arrays}/passing2darraytofunction.cpp (100%) rename 1_cpp_basics/{9_pointers => 8_pointers}/pointers.cpp (100%) rename 1_cpp_basics/{9_pointers => 8_pointers}/pointers_and_array.cpp (100%) rename 1_cpp_basics/{10_vectors => 9_vectors}/access_vector.cpp (100%) rename 1_cpp_basics/{10_vectors => 9_vectors}/addtovector.cpp (100%) rename 1_cpp_basics/{10_vectors => 9_vectors}/vectors_initialization.cpp (100%) delete mode 100644 1_cpp_basics/conditional_statements/if_else.cpp diff --git a/1_cpp_basics/1_typecasting/explicit_typecasting.cpp b/1_cpp_basics/0_typecasting/explicit_typecasting.cpp similarity index 100% rename from 1_cpp_basics/1_typecasting/explicit_typecasting.cpp rename to 1_cpp_basics/0_typecasting/explicit_typecasting.cpp diff --git a/1_cpp_basics/1_typecasting/implicit_typecasting.cpp b/1_cpp_basics/0_typecasting/implicit_typecasting.cpp similarity index 100% rename from 1_cpp_basics/1_typecasting/implicit_typecasting.cpp rename to 1_cpp_basics/0_typecasting/implicit_typecasting.cpp diff --git a/1_cpp_basics/2_namespace/namespace.cpp b/1_cpp_basics/1_namespace/namespace.cpp similarity index 100% rename from 1_cpp_basics/2_namespace/namespace.cpp rename to 1_cpp_basics/1_namespace/namespace.cpp diff --git a/1_cpp_basics/3_conditional_statements/if.cpp b/1_cpp_basics/2_conditional_statements/if.cpp similarity index 100% rename from 1_cpp_basics/3_conditional_statements/if.cpp rename to 1_cpp_basics/2_conditional_statements/if.cpp diff --git a/1_cpp_basics/3_conditional_statements/if_else.cpp b/1_cpp_basics/2_conditional_statements/if_else.cpp similarity index 100% rename from 1_cpp_basics/3_conditional_statements/if_else.cpp rename to 1_cpp_basics/2_conditional_statements/if_else.cpp diff --git a/1_cpp_basics/3_conditional_statements/switch.cpp b/1_cpp_basics/2_conditional_statements/switch.cpp similarity index 100% rename from 1_cpp_basics/3_conditional_statements/switch.cpp rename to 1_cpp_basics/2_conditional_statements/switch.cpp diff --git a/1_cpp_basics/4_enumeration/enumeration.cpp b/1_cpp_basics/3_enumeration/enumeration.cpp similarity index 100% rename from 1_cpp_basics/4_enumeration/enumeration.cpp rename to 1_cpp_basics/3_enumeration/enumeration.cpp diff --git a/1_cpp_basics/5_functions/function.cpp b/1_cpp_basics/4_functions/function.cpp similarity index 100% rename from 1_cpp_basics/5_functions/function.cpp rename to 1_cpp_basics/4_functions/function.cpp diff --git a/1_cpp_basics/6_classes_and_objects/classes_and_objects.cpp b/1_cpp_basics/5_classes_and_objects/classes_and_objects.cpp similarity index 100% rename from 1_cpp_basics/6_classes_and_objects/classes_and_objects.cpp rename to 1_cpp_basics/5_classes_and_objects/classes_and_objects.cpp diff --git a/1_cpp_basics/7_templates/class_template.cpp b/1_cpp_basics/6_templates/class_template.cpp similarity index 100% rename from 1_cpp_basics/7_templates/class_template.cpp rename to 1_cpp_basics/6_templates/class_template.cpp diff --git a/1_cpp_basics/7_templates/functional_template.cpp b/1_cpp_basics/6_templates/functional_template.cpp similarity index 100% rename from 1_cpp_basics/7_templates/functional_template.cpp rename to 1_cpp_basics/6_templates/functional_template.cpp diff --git a/1_cpp_basics/8_arrays/arrays2d.cpp b/1_cpp_basics/7_arrays/arrays2d.cpp similarity index 100% rename from 1_cpp_basics/8_arrays/arrays2d.cpp rename to 1_cpp_basics/7_arrays/arrays2d.cpp diff --git a/1_cpp_basics/8_arrays/passing2darraytofunction.cpp b/1_cpp_basics/7_arrays/passing2darraytofunction.cpp similarity index 100% rename from 1_cpp_basics/8_arrays/passing2darraytofunction.cpp rename to 1_cpp_basics/7_arrays/passing2darraytofunction.cpp diff --git a/1_cpp_basics/9_pointers/pointers.cpp b/1_cpp_basics/8_pointers/pointers.cpp similarity index 100% rename from 1_cpp_basics/9_pointers/pointers.cpp rename to 1_cpp_basics/8_pointers/pointers.cpp diff --git a/1_cpp_basics/9_pointers/pointers_and_array.cpp b/1_cpp_basics/8_pointers/pointers_and_array.cpp similarity index 100% rename from 1_cpp_basics/9_pointers/pointers_and_array.cpp rename to 1_cpp_basics/8_pointers/pointers_and_array.cpp diff --git a/1_cpp_basics/10_vectors/access_vector.cpp b/1_cpp_basics/9_vectors/access_vector.cpp similarity index 100% rename from 1_cpp_basics/10_vectors/access_vector.cpp rename to 1_cpp_basics/9_vectors/access_vector.cpp diff --git a/1_cpp_basics/10_vectors/addtovector.cpp b/1_cpp_basics/9_vectors/addtovector.cpp similarity index 100% rename from 1_cpp_basics/10_vectors/addtovector.cpp rename to 1_cpp_basics/9_vectors/addtovector.cpp diff --git a/1_cpp_basics/10_vectors/vectors_initialization.cpp b/1_cpp_basics/9_vectors/vectors_initialization.cpp similarity index 100% rename from 1_cpp_basics/10_vectors/vectors_initialization.cpp rename to 1_cpp_basics/9_vectors/vectors_initialization.cpp diff --git a/1_cpp_basics/conditional_statements/if_else.cpp b/1_cpp_basics/conditional_statements/if_else.cpp deleted file mode 100644 index 7f27f51..0000000 --- a/1_cpp_basics/conditional_statements/if_else.cpp +++ /dev/null @@ -1,16 +0,0 @@ -//Code to find even and odd num using if else statement -#include -using namespace std; -int main() -{ - int num =10; - if(num%2 == 0)//if num is divisible by 2 i.e remainder is 0 when divided by 2 - { - cout<<"the number is even\n"; - } - else//if If statement is not satisfied the else statement is executed - { - cout<<"The number is odd\n"; - } - return 0; -}