Написать программу учета заявок на обмен квартир и поиска вариантов обмена. Каждая заявка содержит сведения о двух квартирах: требуемой (искомой) и имеющейся. Сведения о каждой квартире содержат: количество комнат, площадь, этаж, район. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
• ввод заявки на обмен;
• поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «пло-щадь» в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в картотеку;
• вывод всей картотеки.
Для хранения данных картотеки реализовать и использовать контейнерный класс list.
СРАВНЕНИЕ ДАННЫХ ОБ ИМЕЮЩЕЙСЯ КВАРТИРЕ С ДАННЫМИ ОБ ИСКОМОЙ КВАРТИРЕ РАБОТАЕТ НЕ ПРАВИЛЬНО, НЕ ЗНАЮ КАК ИСПРАВИТЬ
for(ConstIterKvartiraList iKvartira = List.begin();iKvartira != List.end();++iKvartira)
{
for(ConstIterKvartiraListI iKvartira=ListI.begin();iKvartira!=ListI.end();++iKvartira)
{
if(kvartira.raion==kvartiraI.raion2 && kvartira.itash== kvartiraI.itash2 && kvartira.kolvokom==kvartiraI.kolvokom2 && kvartira.plosh>(kvartiraI.plosh2)*1.1||kvartira.plosh<(kvartiraI.plosh2)*1.1||kvartira.plosh==kvartiraI.plosh2)
{
cout<<"вариант найден";
}
}
}
на этом участке я пытаюсь сравнить данные из листа с имеющимися квартирами с искомыми, сейчас программа, работает, записывает, выводит информацию, но сравнение не работает, даже если искомая квартира по всем данным похожа на имеющуюся:::::::::::
вроде более менее разобрался с циклом,но все элементы, которые я сравниваю пустые.
for(ConstIterKvartiraList iKvartira = kvartiraList.begin(); iKvartira != kvartiraList.end();++iKvartira){
for(ConstIterKvartiraListI
iKvartiraI=kvartiraListI.begin();iKvartiraI!=kvartiraListI.end();++iKvartiraI){if(kvartira.raion==kvartiraI.raion2 && kvartira.itash==kvartiraI.itash2 && kvartira.kolvokom==kvartiraI.kolvokom2 &&
kvartira.plosh>(kvartiraI.plosh2)*1.1||kvartira.plosh<(kvartiraI.plosh2)*1.1||kvartira.plosh==kvartiraI.plosh2){
cout<<"322";
}}}
#include <iostream>
#include <string>
#include <list>
#include <fstream>
#include<clocale>
#include<iterator>
#include <algorithm>
using namespace std;
struct Kvartira
{
string raion;
int kolvokom;
int plosh;
int itash;
};
struct KvartiraI
{
string raion2;
int kolvokom2;
int plosh2;
int itash2;
};
template<class T> bool operator==( list<Kvartira>& List, list<KvartiraI>&
ListI ); template<class T> bool operator!=( list<Kvartira>& List,
list<KvartiraI>& ListI );
typedef list<Kvartira> KvartiraList;
typedef list<KvartiraI> KvartiraListI;
typedef list<Kvartira>::const_iterator ConstIterKvartiraList;
typedef list<KvartiraI>::const_iterator ConstIterKvartiraListI;
void Print(const KvartiraList& List)
{
ifstream file("isk.txt");
cout<<file.rdbuf();
cout<<endl;
}
char MainMenu()
{
system("cls");
cout << "меню:" <<endl;
cout << "\t 1. добавить заявку" << endl;
cout << "\t 2. напечатать весь list" << endl;
char item = 0;
cin >> item;
return item;
}
KvartiraI DataInputI(const KvartiraListI& ListI)
{
std::ofstream
fout("isk.txt",std::ios::app);
KvartiraI kvartiraI;
getline(std::cin, kvartiraI.raion2);
cout << "этаж : ";
cin >> kvartiraI.itash2;
cout << "площадь: ";
cin >> kvartiraI.plosh2;
cout << "кол-во комнат: ";
cin >> kvartiraI.kolvokom2;
fout<<"район ";
fout<<kvartiraI.raion2;
fout<<" этаж ";
fout<<kvartiraI.itash2;
fout<<" площадь ";
fout<<kvartiraI.plosh2;
fout<<" количество комнат ";
fout<<kvartiraI.kolvokom2;
fout<<std::endl;
fout.close();
return kvartiraI;
}
Kvartira DataInput(const KvartiraList& List)// Ввод данных
{
std::ofstream
fout("isk.txt",std::ios::app);
Kvartira kvartira;
cout << "район: ";
cin.ignore();
getline(std::cin, kvartira.raion);
cout << "этаж : ";
cin >> kvartira.itash;
cout << "площадь: ";
cin >> kvartira.plosh;
cout << "кол-во комнат: ";
cin >> kvartira.kolvokom;
cout << "район: ";
cin.ignore();
fout<<"район ";
fout<<kvartira.raion;
fout<<" этаж ";
fout<<kvartira.itash;
fout<<" площадь ";
fout<<kvartira.plosh;
fout<<" количество комнат ";
fout<<kvartira.kolvokom<< '\n';
fout<<std::endl;
fout.close();
return kvartira;
}
void poisk(KvartiraList& List,KvartiraListI&
ListI,KvartiraList&
kvartiraList,KvartiraListI& kvartiraListI,Kvartira&
kvartira,KvartiraI
kvartiraI){
for(ConstIterKvartiraList iKvartira = List.begin();
iKvartira !=
List.end();++iKvartira){
for(ConstIterKvartiraListI
iKvartira=ListI.begin();iKvartira!=ListI.end();++iKvartira){
if(kvartira.raion==kvartiraI.raion2 && kvartira.itash==
kvartiraI.itash2 && kvartira.kolvokom==kvartiraI.kolvokom2 &&
kvartira.plosh>(kvartiraI.plosh2)*1.1||kvartira.plosh<
(kvartiraI.plosh2)*1.1||kvartira.plosh==kvartiraI.plosh2){
cout<<"вариант найден";
}
}}
fout<<std::endl;
fout.close();
};
int main()
{
KvartiraList List;
KvartiraListI ListI;
KvartiraList kvartiraList;
KvartiraListI kvartiraListI;
Kvartira kvartira;
KvartiraI kvartiraI;
setlocale(LC_ALL, "Russian");
size_t n = 0;
char answer = 'y';
while (answer == 'y')
{
switch (MainMenu())
{
case '1':
kvartiraList.push_front(DataInput(kvartiraList));
kvartiraListI.push_front(DataInputI(kvartiraListI));
break;
case '2':
poisk(List,ListI,kvartiraList,kvartiraListI,kvartira,kvartiraI);
break;
case '3':
Print(kvartiraList);
default:
cout << "такого пункта не существует." << endl;
break;
}
cout << "нажмите'y'для возврата в меню\nнажмите другую клавишу,чтобы выйти ";
cin >> answer;
}
return 0;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости