forked from natto1784/ooplab
		
	
							
								
								
									
										4
									
								
								file.org
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								file.org
									
									
									
									
									
								
							@@ -36,3 +36,7 @@
 | 
				
			|||||||
* Lab 7
 | 
					* Lab 7
 | 
				
			||||||
#+INCLUDE: ./lab7/file.org
 | 
					#+INCLUDE: ./lab7/file.org
 | 
				
			||||||
#+LATEX: \clearpage
 | 
					#+LATEX: \clearpage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Lab 8
 | 
				
			||||||
 | 
					#+INCLUDE: ./lab8/file.org
 | 
				
			||||||
 | 
					#+LATEX: \clearpage
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								lab8/22.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lab8/22.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T, std::enable_if_t<std::is_arithmetic<T>::value, T> = 0>
 | 
				
			||||||
 | 
					void swap(T &x, T &y) {
 | 
				
			||||||
 | 
					  x += y;
 | 
				
			||||||
 | 
					  y = x - y;
 | 
				
			||||||
 | 
					  x -= y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  char x = '[';
 | 
				
			||||||
 | 
					  char y = 'w';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  swap(x, y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::cout << "x = " << x << ", y = " << y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								lab8/23.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								lab8/23.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T>
 | 
				
			||||||
 | 
					std::enable_if_t<std::is_arithmetic<T>::value, T> sq(T x) {
 | 
				
			||||||
 | 
					  return x * x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  float x = 4.4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::cout << "double: " << sq((double)5.3) << "\nlong: " << sq(4l);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								lab8/24.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lab8/24.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T>
 | 
				
			||||||
 | 
					std::enable_if_t<std::is_integral<T>::value, T> fn(T x) {
 | 
				
			||||||
 | 
					  return x * x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T>
 | 
				
			||||||
 | 
					std::enable_if_t<std::is_floating_point<T>::value, T> fn(T x) {
 | 
				
			||||||
 | 
					  return --x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  float x = 4.4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::cout << "floating: " << fn((double)5.3) << "\nintegral: " << fn(4l);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										73
									
								
								lab8/file.org
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								lab8/file.org
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					* Write a program to define the function template for swapping two items of the various data types such as integer ,float,and characters.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+ATTR_LATEX: :options frame=single,breaklines=true
 | 
				
			||||||
 | 
					#+begin_src cpp :tangle 22.cpp :results output :exports both :wrap src text
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T, std::enable_if_t<std::is_arithmetic<T>::value, T> = 0>
 | 
				
			||||||
 | 
					void swap(T &x, T &y) {
 | 
				
			||||||
 | 
					  x += y;
 | 
				
			||||||
 | 
					  y = x - y;
 | 
				
			||||||
 | 
					  x -= y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  char x = '[';
 | 
				
			||||||
 | 
					  char y = 'w';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  swap(x, y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::cout << "x = " << x << ", y = " << y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+LATEX: \clearpage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Write a program to define the function template for calculating the square of given numbers with different data types.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+ATTR_LATEX: :options frame=single,breaklines=true
 | 
				
			||||||
 | 
					#+begin_src cpp :tangle 23.cpp :results output :exports both :wrap src text
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T>
 | 
				
			||||||
 | 
					std::enable_if_t<std::is_arithmetic<T>::value, T> sq(T x) {
 | 
				
			||||||
 | 
					  return x * x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  float x = 4.4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::cout << "double: " << sq((double)5.3) << "\nlong: " << sq(4l);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+LATEX: \clearpage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Write a program to illustrate how template functions can be overloaded.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+ATTR_LATEX: :options frame=single,breaklines=true
 | 
				
			||||||
 | 
					#+begin_src cpp :tangle 24.cpp :results output :exports both :wrap src text
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T>
 | 
				
			||||||
 | 
					std::enable_if_t<std::is_integral<T>::value, T> fn(T x) {
 | 
				
			||||||
 | 
					  return x * x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template <typename T>
 | 
				
			||||||
 | 
					std::enable_if_t<std::is_floating_point<T>::value, T> fn(T x) {
 | 
				
			||||||
 | 
					  return --x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  float x = 4.4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::cout << "floating: " << fn((double)5.3) << "\nintegral: " << fn(4l);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
		Reference in New Issue
	
	Block a user