1. Составить программу, которая находит все числа из диапазона от M до N, обладающие тем свойством, что сумма нечетных цифр, входящих в состав числа является делителем исходного числа. 2. Дана шахматная доска 8 х 8. Составить программу, которая выводит сообщение о том, может ли ферзь Ф1 с клетки (а,b) сделать ход на клетку (c,d) и при этом не оказаться под боем коня К1, стоящего на клетке (e,f). Конь ходит "буквой Г", т.е если он стоит на клетке, помеченной буквой К1, то он может сделать ход на любую из клеток, помеченной символом (*). Ферзь ходит прямо, а также по диагонали и его возможные ходы с клетки отмеченной буквой Ф1 показаны символом (+) Рисунок 3. Дан массив X[1:N] целых чисел. Составить программу, которая позволяет определить наибольшее число идущих подряд различающихся элементов в этом массиве. Изменять порядок следования элементов и использовать другие массивы нельзя. Например, для массива 5,7,3,6,7 [7,8,9,10,11,23,1], 1,5 искомое значение равно 7. 4. Дан двумерный массив целых чисел А[N,N]. Составить фрагмент программы, которая определяет наибольших элемент заштрихованной области массива. Рисунок 5.Составить программу, которая выполняет удаление из натурального числа X некоторой заданной цифры D. Например, для числа 58789890 и цифры 8 результатом будет 57990. 6. Составить программу, которая вычисляет значение бесконечной цепной дроби с некоторой заданной точностью D<<1. Точность D определяется как абсолютное значение разности результатов текущего и предыдущего шагов деления. Рисунок. 7.Составить программу, которая позволяет определить правильность расстановки круглых скобок в заданном арифметическом выражении, записанном на языке программирования.
написать программу на С# сохранения и обновления файлов в долговременном архиве, т.е. сравнить все файлы с файлами на удаленном сервере если совпадения найдены мы сравниваем дату последнего изменения если нужно перезаписываем его если не надо идем дальше, если совпадений не найдено просто копируем этот файл в архив. Нужна помощь написать надо до 18.05.2015 а я не могу
С++ Заполнить 2х мерный массив, размер задает пользователь(не более 8 строк на 11 столбцов). Заполнить его случайными целыми числами в диапазоне заданным пользователем. Отсортировать строки по убыванию, если количество нечетных чисел больше чем четных и по возрастанию если количество четных чисел больше чем нечетных.
1. Заменить первый элемент массива, кратный 5, нулем. 2. Заменить элементы массива с нечетными номерами на квадраты их номеров. 3. Из элементов массива D сформировать массив Aтой же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2, а если нечетный, то по формуле Ai = Di / i. в лс , за работу $$
Сап, посоны. Я оказался сортом быдлокодера, способным по памяти реализовать наиболее важные алгоритмы и структуры данных, но не умеющим применять эти структуры в подобных задачах. В них главная сложность в том, чтобы правильно понять условие и предусмотреть все возможные ситуации. Помогите их решить. Говорят, что во всех трех задачах достаточно одного двойного условия "осталось ли время" и "остались ли задачи", и все три задачи можно решить одним кодом с использованием условной компиляции. Код для решения первой (не проходит 6 тест): https://ideone.com/Dtf1xb Code: [LIST=1] [*]#include <iostream> [*]#include <stack> [*] [*]int main(){ [*] int t, tmax, n; [*] int day_new_task; // День получения новой задачи [*] int day_last_task = 0; // День получения предыдущей [*] [*] std::stack<int> s; [*] [*] std::cin >> t; //Количество дней, которое тратится на любую задачу [*] std::cin >> tmax; // Количество дней в курсе [*] std::cin >> n; // Количество задач в курсе [*] [*] // В цикле рассматриваем задачи с 1 по n-ю [*] for(int i = 1; i <= n; i++){ [*] std::cin >> day_new_task; //День, в который получена i-я задача [*] if(day_last_task == 0) day_last_task = day_new_task; //День, в который получена предыдущая задача [*] [*] // Если при получении новой задачи студент еще решает старую [*] // Дополнительное условие: дни получения новой и текущей задачи не равны [*] // Запоминаем задачу, которую студент не решил [*] if((day_new_task - day_last_task < t) && (day_new_task ^ day_last_task)) [*] s.push(i); [*] // Если студент свободен, даем ему новую задачу [*] if(day_new_task - day_last_task >= t) [*] day_last_task = day_new_task; [*] } [*] [*] std::cout << s.size() << std::endl; [*] while(!s.empty()){ [*] std::cout << s.top() << " "; [*] s.pop(); [*] } [*] [*] int pause; [*] std::cin >> pause; [*]} [/LIST] Условия задач:
На языке СИ. Написать функцию NOD, которая возвращает наибольший общий делитель двух целых чисел, и функцию NOK, которая возвращает наименьшее общее кратное двух целых чисел. Помогите найти ошибку в коде #include <iostream> #include <stdio.h> #include <clocale> using namespace std; int NOD(int a, int b); int NOK(int a, int b); int NOD(int a, int b) { while ((a != 0) && (b != 0)) { if (a > b) a = a % b; else b = b % a; } return a + b; } int NOK(int a, int b) { return (a * b) / NOD(a, b); system("pause"); } void main() { int a, b; setlocale(LC_CTYPE, "rus"); printf("Введите чмсло а : "); scanf_s("%d", &a); setlocale(LC_CTYPE, "rus"); printf("Введите чмсло b : "); scanf_s("%d", &b); if (a <= 0 || b <= 0) { system("cls"); } printf("Наибольший общий делитель двух целых чисел : \n ", NOD); printf("Наименьшее общее кратное двух целых чиселл : \n ", NOK); printf ("\n\n"); system("pause"); }
Code: //... printf("Наибольший общий делитель двух целых чисел : %d\n ", NOD(a, b)); printf("Наименьшее общее кратное двух целых чиселл : %d\n ", NOK(a, b)); //...
Если тебе нужно было бы, ты бы потрудился перевести задачу и написать язык, на котором она должна быть выполнена.
Не могу сделать функцию runFile() что бы она: Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1000000 руб., используя созданное меню. Spoiler Code: #define _CRT_SECURE_NO_WARNINGS #include <conio.h> #include <iostream> using namespace std; struct date { int dd; int mm; int yy; }; struct commodity //объявляем шаблон структуры {char name[30]; //Наименование int num; //Количество едениц товара int price; //Цена за единицу date d;// дата поступления товара }; // функция для обмена ячейками массива структур void swapp(commodity &a, commodity &b) { commodity temp; temp = a; a = b; b = temp; } int u=0,y=0,l=0; //глобальные переменные.1-ая отвечает за создание файла,2-аяследит за колличеством заполненых структур commodity r[20]; //массив структур //прототипы функций int menu(); void newFile(); void viewFile(); void addFile(); void editFile(); void runFile(); void deleterecord(); int main() { while(1) switch (menu()) //вызом меню { case 1:newFile();break; case 2:viewFile();break; case 3:addFile();break; case 4:editFile();break; case 5:runFile();break; case 6:deleterecord();break; case 7:return 0; default:printf("Neverniy vibor\n"); } _getch(); } int menu() { int choice; do { system ("cls");//очищает содержание экрана printf("Menu\n"); printf("1.newFile\n"); printf("2.viewFile\n"); printf("3.addFile\n"); printf("4.editFile\n"); printf("5.runFile\n"); printf("6.deleterecord\n"); printf("7.vihod\n"); printf("Vash vibor?\n"); scanf("%d", &choice);//ввод действия,которое хотим произвести system("cls"); }while (choice>7); return choice; } void newFile() { int q; FILE *f; f=fopen("pkp.txt", "w"); do { printf("vvedite naimenovanie tovara "); scanf("%s",r[l].name); printf("vvedite kolichestvo edinic "); scanf("%d",&r[l].num); printf("vvedite cena za edinicy "); scanf("%d",&r[l].price); printf("vvedite den "); scanf("%d",&r[l].d.dd); printf("vvedite mesec "); scanf("%d",&r[l].d.mm); printf("vvedite god "); scanf("%d",&r[l].d.yy); printf("hotite dobavit esche tovaru?\n");//условие,которое спрашивает у нас,хотим ли мы ещё добавить структуру printf("1.Da\t2.Net\n"); printf("vash vibor(chislo)? "); scanf("%d",&q); l++; }while (q!=2); for(int i=0;i<l;i++)//записываем данные в файл { fprintf(f,"%s\n",r[i].name); fprintf(f,"%d\n",r[i].num); fprintf(f,"%d\n",r[i].price); fprintf(f,"%d\n",r[i].d.dd); fprintf(f,"%d\n",r[i].d.mm); fprintf(f,"%d\n",r[i].d.yy); } y++;//счетчик проверяющий создан ли файл изменяется только тут fclose(f);//закрываем файл } void viewFile() { if(y!=0)//смотрим создан ли файл { FILE *f; f=fopen("pkp.txt", "r");//фай открыт только для чтения if(u==0) { for(int i=0;i<l;i++)//в этом цикле считываем данные из файла в структуру { fscanf(f,"%s\n",r[i].name); fscanf(f,"%d\n",&r[i].num); fscanf(f,"%d\n",&r[i].price); fscanf(f,"%d\n",&r[i].d.dd); fscanf(f,"%d\n",&r[i].d.mm); fscanf(f,"%d\n",&r[i].d.yy); } for(int i=0;i<l;i++)//выводим стуктуру на экран { printf("naimenovanie tovara "); printf("%s\n",r[i].name); printf("kolichestvo edinic "); printf("%d\n",r[i].num); printf("cena za edinicy "); printf("%d\n",r[i].price); printf("den "); printf("%d\n",r[i].d.dd); printf("mesec "); printf("%d\n",r[i].d.mm); printf("god "); printf("%d\n",r[i].d.yy); } } else { for(int i=0;i<l;i++)//в этом цикле считываем данные из файла в структуру { fscanf(f,"%s\n",r[i].name); fscanf(f,"%d\n",&r[i].num); fscanf(f,"%d\n",&r[i].price); fscanf(f,"%d\n",&r[i].d.dd); fscanf(f,"%d\n",&r[i].d.mm); fscanf(f,"%d\n",&r[i].d.yy); } for(int i=0;i<l;i++)//выводим стуктуру на экран { printf("naimenovanie tovara %s\n", r[i].name); printf("kolichestvo edinic %d\n",r[i].num); printf("cena za edinicy %s\n",r[i].price); printf("den %s\n",r[i].d.dd); printf("mesec %s\n",r[i].d.mm); printf("god %s\n",r[i].d.yy); } } fclose(f);//закрываем файл } else//если файл не создан то printf("ne sozdan"); _getch(); } void addFile() { if(y!=0)//смотрим создан ли файл { FILE *f; f=fopen("pkp.txt", "a");//файл открыт для дозаписи if(u==0) { //дозаписываем printf("vvedite naimenovanie tovara "); scanf("%s",r[l].name); printf("vvedite kolichestvo edinic "); scanf("%d",&r[l].num); printf("vvedite cena za edinicy "); scanf("%d",&r[l].price); printf("den "); scanf("%d",&r[l].d.dd); printf("mesec "); scanf("%d",&r[l].d.mm); printf("god "); scanf("%d",&r[l].d.yy); l++;//увеличиваем счётчик колличества заполненых структур,т.к. мы добавляем новые данные в самый конец,т.е. на место l fclose(f); } else { printf("vvedite naimenovanie tovara "); scanf("%s",r[l].name); printf("vvedite kolichestvo edinic "); scanf("%d",&r[l].num); printf("vvedite cena za edinicy "); scanf("%d",&r[l].price); printf("den "); scanf("%d",&r[l].d.dd); printf("mesec "); scanf("%d",&r[l].d.mm); printf("god "); scanf("%d",&r[l].d.yy); l++;//увеличиваем счётчик колличества заполненых структур,т.к. мы добавляем новые данные в самый конец,т.е. на место l fclose(f); runFile(); } } else printf("ne sozdan"); _getch(); } void editFile() { int q; if(y!=0)//проверяем создан ли файл { FILE *f; f=fopen("pkp.txt", "w"); printf("vvedite nomer tovara,kotori vi hotite izmenit\n"); scanf("%d",&q); if(q<l)//смотрим не превышает ли введённое число количество стуртур,которое у нас имеется { for(int i=0;i<l;i++)//в этом цикле считываем данные из файла в структуру { fscanf(f,"%s\n",r[i].name); fscanf(f,"%d\n",&r[i].num); fscanf(f,"%d\n",&r[i].price); fscanf(f,"%d\n",&r[i].d.dd); fscanf(f,"%d\n",&r[i].d.mm); fscanf(f,"%d\n",&r[i].d.yy); if(i==q) { printf("vvedite naimenovanie tovara "); scanf("%s",r[q].name); printf("vvedite kolichestvo edinic "); scanf("%d",&r[q].num); printf("vvedite cena za edinicy "); scanf("%d",&r[q].price); printf("den "); scanf("%d",&r[q].d.dd); printf("mesec "); scanf("%d",&r[q].d.mm); printf("god "); scanf("%d",&r[q].d.yy); } } fclose(f); } else//если колличество структур меньше введённого числа,то мы выдаем ошибку и выходим из программы { printf("oshibka"); } } else printf("ne sozdan");//если файл не создан _getch(); } void runFile() { if(y!=0) { FILE *f; f=fopen("pkp.txt", "w"); for(int i=0;i<l;i++) { const int N = 20; // размер массива commodity ar[N]; // массив структур date currentDate;// объект структуры для текущей датты // текущая дата currentDate.dd = 13; currentDate.mm = 03; currentDate.yy = 2016; // сначала отсортируем массив структур по названию товаров for(int i(1); i < N; i++){ for(int j(N-1); j >= i; j--){ for(int k(0); ar[j-1].name[k]; k++){ if(ar[j-1].name[k] > ar[j].name[k]) { swapp(ar[j-1],ar[j]); break; } // если буква первого слова больше чем буква второго, то меняем местами слова и переходим к следующему слову else if(ar[j-1].name[k] == ar[j].name[k]) continue; // если буквы равны, то проверяем следующую букву else break; } } } // теперь выведем те товары, которые соответсвуют заданным условиям // т.е. их цена больше 1000000 и лежат на складе больше месяца for(int i(0); i < N; i++){ if(ar[i].price > 1000000) if(currentDate.yy > ar[i].d.yy) cout << ar[i].name << endl; else if(currentDate.mm > ar[i].d.mm && currentDate.dd > ar[i].d.dd) cout << ar[i].name << endl; } cin.get(); } for(int i=0;i<l;i++)//записываем данные в файл { fprintf(f,"%s\n",r[i].name); fprintf(f,"%d\n",&r[i].num); fprintf(f,"%s\n",&r[i].price); fprintf(f,"%s\n",&r[i].d.dd); fprintf(f,"%s\n",&r[i].d.mm); fprintf(f,"%s\n",&r[i].d.yy); } u++; fclose(f); } else printf("ne sozdan"); _getch(); } void deleterecord() { if(y!=0) { FILE *f; f=fopen("pkp.txt", "w"); int q; printf("vvedite porjadkovi nomer tovara,kotori vi hotite udalit\n"); scanf("%d",&q);//вводим порядковый номер структуры, который хотим удалить if(q<l)//проверяет не больше ли введённое нами число колличества структур. Если больше то выдает ошибку, если меньше то удаляет { for(int i=0;i<l;i++) { fscanf(f,"%s\n",r[i].name); fscanf(f,"%d\n",&r[i].num); fscanf(f,"%d\n",&r[i].price); fscanf(f,"%d\n",&r[i].d.dd); fscanf(f,"%d\n",&r[i].d.mm); fscanf(f,"%d\n",&r[i].d.yy); } for(int i=q;i<l-1;i++) r[i]=r[i+1]; l--; fclose(f); } else//если введённое число больше количества структур printf("oshibka"); } else printf("ne sozdan"); _getch(); } Надо что бы она брала из файла названия товаров, но я не знаю как это сделать. Spoiler Code: void runFile() { if(y!=0) { FILE *f; f=fopen("pkp.txt", "w"); for(int i=0;i<l;i++) { const int N = 20; // размер массива commodity ar[N]; // массив структур date currentDate;// объект структуры для текущей датты // текущая дата currentDate.dd = 13; currentDate.mm = 03; currentDate.yy = 2016; // сначала отсортируем массив структур по названию товаров for(int i(1); i < N; i++){ for(int j(N-1); j >= i; j--){ for(int k(0); ar[j-1].name[k]; k++){ if(ar[j-1].name[k] > ar[j].name[k]) { swapp(ar[j-1],ar[j]); break; } // если буква первого слова больше чем буква второго, то меняем местами слова и переходим к следующему слову else if(ar[j-1].name[k] == ar[j].name[k]) continue; // если буквы равны, то проверяем следующую букву else break; } } } // теперь выведем те товары, которые соответсвуют заданным условиям // т.е. их цена больше 1000000 и лежат на складе больше месяца for(int i(0); i < N; i++){ if(ar[i].price > 1000000) if(currentDate.yy > ar[i].d.yy) cout << ar[i].name << endl; else if(currentDate.mm > ar[i].d.mm && currentDate.dd > ar[i].d.dd) cout << ar[i].name << endl; } cin.get(); } for(int i=0;i<l;i++)//записываем данные в файл { fprintf(f,"%s\n",r[i].name); fprintf(f,"%d\n",&r[i].num); fprintf(f,"%s\n",&r[i].price); fprintf(f,"%s\n",&r[i].d.dd); fprintf(f,"%s\n",&r[i].d.mm); fprintf(f,"%s\n",&r[i].d.yy); } u++; fclose(f); } else printf("ne sozdan"); _getch(); }
Помогите (С#) Поиск файлов в директориях и поддиректориях. Как это осуществить, нашел в MSDN вот эту рекурсию: blic static ArrayList DirSearch(string sDir, ArrayList virList) { try { foreach (string d in Directory.GetDirectories(sDir)) { foreach (string f in Directory.GetFiles(d, "IMG001.exe")) { //lstFilesFound.Items.Add(f); virList.Add(f); } DirSearch(d, virList); } } catch (System.Exception excpt) { //MessageBox.Show(excpt.ToString()); } return virList; } поиск продолжается в другую поддиректорию как только код пытается войти в какую нибудь системную директорию, например если в диске есть такие папки: папка-1 папка-2 папка-3 SystemVolumeInformation папка-4 папка-N То поиск будет проведен до директории "папка-3" включительно. ВОПРОС В ТОМ КАК СДЕЛАТЬ ПОИСК В ПАПКЕ - 4 и ПАПКА-N?
Изи же. Список всех директорий и по ним бежишь (это если надо не до первого найденного файла а все возможные пути смотреть) в противном случае терминатор на рекурсии. Сам не справишься велком ту лс напишу тебе вечерком тулзятину. И разумеется скину в тему
https://codepaste.net/a7ffct Code: using System; using System.IO; namespace FileScan { class Program { static void Main(string[] args) { Console.WriteLine(FindInDir(new DirectoryInfo(@"C:\"), "test.txt", true)); } public static string FindInDir(DirectoryInfo dir, string pattern, bool recursive) { string files = ""; foreach (FileInfo file in dir.GetFiles(pattern)) { files += (file.FullName + "\n"); } if (recursive) { foreach (DirectoryInfo subdir in dir.GetDirectories()) { try { FindInDir(subdir, pattern, recursive); } catch (UnauthorizedAccessException) { continue; } } } return files; } } }
круто! работает!. есть еще одна проблемка я пишу на WForms, и хотел чтобы поисковик искал во всех дисках. Делаю так: string[] drivers = Directory.GetLogicalDrives(); bool b = false; for (int i = 0; i < drivers.Length; i++) { if (string.Compare(drivers[], @"C:\", true) == 0) b = false;//в C:\ очень много подкаталогов так что пока не буду капать глубоко else b = true; FindInDir(new DirectoryInfo(drivers[]), "IMG001.exe", b); } У меня 3 диска (C, H, L), а GetLogicalDrivers(); возвращает 5 дисков (C,D,G,H,L), как исключить 2 не существующих диска из поиска к стати я внес немного изменения в метод FindInDir сделав его public void - ом короче: public static ArrayList virList = new ArrayList(); public void FindInDir(DirectoryInfo dir, string pattern, bool recursive) { foreach (FileInfo file in dir.GetFiles(pattern)) { virList.Add(file.FullName); }...
все нашел решение: string[] drivers = Directory.GetLogicalDrives(); bool b = false; for (int i = 0; i < drivers.Length; i++) listBox2.Items.Add(drivers); for (int i = 0; i < drivers.Length; i++) { if (Directory.Exists(drivers)) { b = (string.Compare(drivers, @"C:\", true) == 0) ? false : true; FindInDir(new DirectoryInfo(drivers), "IMG001.exe", b); } else continue; }
Здравствуйте. Нужна помощь с кодом. Тема задания "Классы(Абстрактные)". Задания прикреплю как и код. Кому не сложно помогите, пожалуйста. Код не компилируется. Код: Code: #include <iostream> #include <string> using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class Date { private: int year, month, day; public: Date() { year = 1; month = 1; day = 1; } Date(int y, int m, int d) { year = y; month = m; day = d; } void setDate(int new_y, int new_m, int new_d){ year = new_y; month = new_m; day = new_d; } int getYear(){ return year; } int getMonth(){ return month; } int getDay(){ return day; } void Show() { cout << day << "." << month << "." << year << endl; } }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class Software { protected: string p_name, p_manufacturer; public: Software() {} Software(string Name, string Manufacturer) : p_name(Name), p_manufacturer(Manufacturer) {} virtual void Show(){ cout << "Name " << p_name << endl; cout << "Manufacturer " << p_manufacturer << endl; } virtual void TimeUse(Date *dat) = 0; }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class FreeSoftware : public Software { public: FreeSoftware() {} FreeSoftware(string Name, string Manufacturer) : Software(Name, Manufacturer) {} void setFreeSoftware(string new_Name, string new_Manufacturer) { p_name = new_Name; p_manufacturer = new_Manufacturer; } string getName() { return p_name; } string getManufacturer() { return p_manufacturer; } void TimeUse(Date *data) { cout << "Not limited" << endl; } }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class SharewareSoftware : public Software { private: Date *p_date; int p_freetimeuse; public: SharewareSoftware() {} SharewareSoftware(string Name, string Manufacturer, Date *Date, int Freetime) : Software(Name, Manufacturer), p_date(Date), p_freetimeuse(Freetime) {} void setSharewareSoftware(string new_Name, string new_Manufacturer, Date *new_Date, int new_FreeTimeUse) { p_name = new_Name; p_manufacturer = new_Manufacturer; p_date = new_Date; p_freetimeuse = new_FreeTimeUse; } string getName() { return p_name; } string getManufacturer() { return p_manufacturer; } Date *getDate() { return p_date; } int getFreeTimeUse() { return p_freetimeuse; } void Show() { Software::Show(); cout << "Date "; p_date->Show(); cout << "FreeTimeUse " << p_freetimeuse << " year(s)" << endl; } void TimeUse(Date *data1) { if (p_date->getYear() + p_freetimeuse < data1->getYear()) { if (p_date->getMonth() < data1->getMonth()) { if (p_date->getDay() < data1->getDay()) { cout << "It is possible to use" << endl; } else cout << "Cant't use it" << endl; } else cout << "Cant't use it" << endl; } else cout << "Cant't use it" << endl; } }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class ProprietarySoftware : public Software { private: Date *p_date; int p_timeuse; float p_price; public: ProprietarySoftware(){} ProprietarySoftware(string Name, string Manufacturer, Date *Date, int TimeUse, float Price) : Software(Name, Manufacturer), p_date(Date), p_timeuse(TimeUse), p_price(Price) {} void setSharewareSoftware(string new_Name, string new_Manufacturer, Date *new_Date, int new_TimeUse, float new_Price) { p_name = new_Name; p_manufacturer = new_Manufacturer; p_date = new_Date; p_timeuse = new_TimeUse; p_price = new_Price; } string getName() { return p_name; } string getManufacturer() { return p_manufacturer; } Date *getDate() { return p_date; } int getTimeUse() { return p_timeuse; } float getPrice() { return p_price; } void Show() { Software::Show(); cout << "Date "; p_date->Show(); cout << "TimeUse " << p_timeuse << " year(s)" << endl; cout << "Price " << p_price << endl; } void TimeUse(Date *data2) { if ((p_date->getYear() + p_timeuse) < data2->getYear()) { if (p_date->getMonth() < data2->getMonth()) { if (p_date->getDay() < data2->getDay()) { cout << "It is ppssible to use" << endl; } else cout << "Cant't use it" << endl; } else cout << "Cant't use it" << endl; } else cout << "Cant't use it" << endl; } }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int main() { int year, month, day; cout << "Enter date "; cout << "day "; cin >> day; cout << "\t month "; cin >> month; cout << "\t year "; cin >> year; Date *today = new Date(day, month, year); Software *objects[3]; objects[0] = new FreeSoftware("Programma", "Sozdatel"); objects[1] = new SharewareSoftware("Programma2", "Sozdatel2", new Date(15, 3, 2017), 2); objects[2] = new ProprietarySoftware("Programma3", "Sozdatel3", new Date(24, 11, 2016), 1, 100); for (int i = 0; i < 4; i++) { objects[i]->Show(); cout << "Software: "; objects[i]->TimeUse(new Date(day, month, year)); } for (int i = 0; i < 4; i++) { delete objects[i]; } system("pause"); return 0; }