К основному контенту

Возвращаюсь в ряды плюсовиков. Шаблоны C++

Давно не постила ничего, но это не значит что я ничем не занималась!
Задачек было решено немало, снова делюсь с вами решениями из разных задачников, в частности Дуравкиной. Условия как всегда в комментах.
Тема: шаблоны



// лаба адын.cpp: определяет точку входа для консольного приложения.
//Создать шаблонную функцию для ввода с клавиатуры и вывода на экран массива элементов. Разработать программу, в которой созданная шаблонная функция используется для пользовательского типа данных 
//сделать шаблонную функцию, которая будет использоваться для класса

//

#include "stdafx.h"
#include <iostream>
#include <iomanip> 
using namespace std;

class Class 
{
public: 
template <typename T>
void getArray( T * array, int count)
{
for (int i = 0; i < count; i++) 
{
cout << "Enter Value of " << i+1 << " element is " << endl;
cin >> array[i];
}
for (int ix = 0; ix < count; ix++)
{
cout << array[ix] << "   ";
}
    cout << endl;

 };

int _tmain(int argc, _TCHAR* argv[])
{

int num; // размер массива
    cout << "Enter integer value: ";
    cin >> num; // получение от пользователя размера массива
    int *p_darr = new int[num]; // Выделение памяти для массива
Class ob1;
ob1.getArray(p_darr, num);
    delete [] p_darr; // очистка памяти
    system("pause");
return 0;
}

// лаба адын.cpp: определяет точку входа для консольного приложения.
//создать шаблонную функцию, которая меняет местами значения двух переменных, передаваемых в качестве параметров
//Сздать шаблонную функцию для нахождения корня линейного уравнения

#include "stdafx.h"
#include <iostream>
#include <iomanip> 
using namespace std;

template <typename T>
void rev(T& a, T& b)
{
    T temp;
temp = a;
a = b;
b = temp;


template <typename T>
 T lineage(T a, T b)
 {
return (((-1)*b)/a);
 }


int _tmain(int argc, _TCHAR* argv[])
{
int A, B;
A = 1;
B = 2;
rev (A, B);
cout << A << endl << B << endl;
cout << lineage (4, 5) << endl;
    system("pause");
return 0;
}

// лаба адын.cpp: определяет точку входа для консольного приложения.
//Разработать класс, содержащий информацию о машине (марка, производитель, объем двигателя, масса, тип коробки передач, объем багажника, грузоподъемность). 
//Предусмотреть возможность раздельного ввода данных, ввода данных из файла.
//Определить методы для вычисления возраста машины и возможности перевезти груз с заданным объемом\весом.

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;

class automobile
{
private:
string mark;
string seller;
int volume;
int weight;
string typeBox;
int volumeTrunk;
int carryingCapacity;
public:

void in()
{
ifstream fin("cppstudio.txt"); // открыли файл для чтения
fin >> mark >> seller >> volume >> weight >> typeBox >> volumeTrunk >> carryingCapacity; // считали первое слово из файла
}
void display()
{
cout << mark << "    " << seller << "    " << volume << "    " << weight << "    "<< typeBox << "    " << volumeTrunk << "    " << carryingCapacity << endl;
}
int age(int year1)
{
return (2015 - year1);
}
bool opportunity(int vol, int wei)
{
if((vol < volume) && (wei < weight))
return true;
else
return false;
}


};

int _tmain(int argc, _TCHAR* argv[])
{
automobile ob;
int Y1;
ob.in();
ob.display();
int vol, wei;
cout << "calculate the age of the machine and the possibility to carry the goods with a given volume\weight. " << endl << "Enter Graduation Year: ";
cin >> Y1;
cout << ob.age(Y1) << endl;
cout << "enter volume and weight: ";
cin >> vol >> wei;
(ob.opportunity(vol, wei)) ? cout << "true" : cout << "false";
cout << endl;
    system("pause");
return 0;
}


// лаба адын.cpp: определяет точку входа для консольного приложения.
//Определить класс, хранящий такую информацию о пользователе библиотеки: ФИО, номер читательского билета, факультет,  дата рождения, телефон, дата последнего посещения библиотеки. 
//Доступ к данным класса организовать посредством соответствующих функций-членов. Разработать программу, в которой создается массив объектов данного класса (заполнение массива из файла и клавиатуры). 
//В программе организовать:
//– ввод данных о заданном читателе (фамилия);
//– вывод информации о читателях которые были в библиотеке после указанной даты;
//- вывод информации о пользователях младше заданного возраста.


#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;

class Date
{
private:
int day;
int month;
int year;
public:
void get()
{
cin >> day >> month >> year;
}
void display()
{
cout << day << "/" << month << "/" << year;
}
bool operator > (Date d)

{
int date = d.day + d.month*
      return true;
   else
      return false;

   }


class library
{
private:
string name;
string soname;
int num;
string facult;
string DOB;
int phone;
string last_date;
public:
void display()
{
cout << name << "   " << soname << "   " << num  << "   " << facult  << "   "<<DOB  << "   "<< phone << "   " << last_date << endl;
}
void in()
{
ifstream fin("cppstudio.txt"); // открыли файл для чтения
fin >> name >> soname >> num >> facult >> DOB >> phone >> last_date; // считали первое слово из файла
}
void get()
{
cout << "Enter Name, library card number , department, date of birth, phone number, date of last visit to the library. " <<  endl;
cin >> name >> soname >> num >> facult >> DOB >> phone >> last_date;
}
void change_son(string son)
{
soname = son;
}

};

int _tmain(int argc, _TCHAR* argv[])
{
library lib[2];
int num_reader;
string son;
lib[0].in();
lib[1].get();
lib[0].display();
lib[1].display();
cout << "Enter number reader" << endl;
cin >> num_reader;
cout << "Enter new soname" << endl;
cin >> son;
lib[num_reader-1].change_son(son);
lib[num_reader-1].display();

    system("pause");
return 0;
}





Комментарии

Популярные сообщения из этого блога

ВОПРОС К ЧИТАТЕЛЯМ

Уважаемые читатели моего блога и просто проходящие мимо! У меня появилась идея заняться созданием уроков по интересующим вас темам. Предпочтительно на C++, но не ограничиваясь ими, я хочу поделиться своими знаниями не только в виде готового кода но и подробными объяснениями что к чему. Прошу вас, если вы имеете идею и хотели бы разобраться в какой-то теме - отпишитесь в комментариях, что было бы вам интересно. Постараюсь помочь. 

7 глава, Лафоре Р

*1. Напишите функцию reversit(), которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний символы, затем следующие и т. д. до предпоследнего. Строка должна пере- даваться в функцию reversit() как аргумент. Напишите программу для выполнения функции reversit(). Программа долж- на принимать строку от пользователя, вызывать функцию reversit(), а за- тем выводить полученный результат. Используйте метод ввода, который позволяет использовать внутренние пробелы. Протестируйте программу на примере фразы «Аргентина манит негра».

6 глава, Лафоре Р

*1. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int. Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализирован- ных объекта, присвойте результат третьему, а затем отобразите результат на экране.