Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 16:30   #1
Arantir#
Пользователь
 
Регистрация: 24.08.2012
Сообщений: 28
Радость Удаление и добавление звена в линейном списке

Здравствуйте тётеньки и дяденьки!!!...Помогите мне дописать код...
Задача:
Картотека в бюро обмена квартир организована в виде линейного списка. Сведения о каждой квартире включают:
-количество комнат;
-этаж;
-площадь;
-адрес.
Написать программу, которая обеспечивает:
-начальное формирование картотеки;
-ввод заявки на обмен;
-поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 10% соответствующая картотека выводится и удаляется из списка, в противном случае поступившая заявка включается в список;
вывод всего списка.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
Код:

#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string>

using namespace std;

struct file
{
	file *prev;
	file *next;
	short int room;
	short int level;
	short int area;
	string adress;
};

void add(file **temp, file **last);
void search(file **temp, file **head, file **last);
void out(file **temp, file **head, file **last);

void add(file **temp, file **last)
{
	cout << "--------------\n";
	cout << "Rooms:";
	cin >> (*temp)->room;
	cout << "Levels:";
	cin >> (*temp)->level;
	cout << "Area:";
	cin >> (*temp)->area;
	cout << "Adress:";
	cin >> (*temp)->adress;
	cout << "--------------\n";
	(*temp)->next=new(file);
	(*temp)->next->prev=(*temp);
	(*temp)=(*temp)->next;
	(*last)=(*temp);
}


void search(file **temp, file **head, file **last)
{
	(*temp)=(*head);
	short int n_room, n_level, n_area;
	double an;
	string s_adress;
	cout << "**************\n";
	cout << "Rooms:";
	cin >> n_room;
	cout << "Levels:";
	cin >> n_level;
	cout << "Area:";
	cin >> n_area;
	cout << "Adress:";
	cin >> s_adress;
	cout << "**************\n";
	while((*temp)!=(*last))
	{
		an=1;
		if(n_room==(*temp)->room && n_level==(*temp)->level)
		{
			if(n_area>(*temp)->area)
			{
				an=(1-(double)(*temp)->area/n_area)*100;
			}
			else
			{
				an=(1-(double)n_area/(*temp)->area)*100;
			}
			if(an<=10)
			{
				//удалить текущее звено
			}
			else
			{
				//создать звено с данными из n_room, n_level, n_areaб s_adress
			}
		}
		else
		{
			//создать звено с данными из n_room, n_level, n_areaб s_adress
		}
		(*temp)=(*temp)->next;
	}
}


void out(file **temp, file **head, file **last)
{
	(*temp)=(*head);
	while((*temp)!=(*last))
	{
		cout << "##############\n";
		cout << "Rooms:";
		cout << (*temp)->room << endl;
		cout << "Levels:";
		cout << (*temp)->level << endl;
		cout << "Area:";
		cout << (*temp)->area << endl;
		cout << "Adress:";
		cout << (*temp)->adress << endl;
		cout << "##############\n";
		(*temp)=(*temp)->next;
	}
}

void main()
{
	file *head, *temp, *last;
	head=new(file);
	temp=head;
	temp->prev=NULL;
	short int n;
	do
	{
		cout << "______________\n";
		cout << "Menu:\n";
		cout << "1-Input\n2-Search\n3-Output\n4-Exit\n";
		cout << "______________\n";
		n=_getch();
		switch(n) 
		{
			case '1': add(&temp, &last); break;
			case '2': search(&temp, &head, &last); break;
			case '3': out(&temp, &head, &last); break;
			case '4': break;
			default: cout << "Retype!\n"; break;
		}
	}
	while(n!='4');
}
Собственно осталось реализовать 2 задачи удаление и добавление звена в зависимости от условия. Можете дать рабочую реализацию или кратко объяснить или ссылки дать, но только не молчите...)) Всё остальное работает...Спасибо...

Последний раз редактировалось Arantir#; 29.11.2012 в 16:40.
Arantir# вне форума Ответить с цитированием
Старый 30.11.2012, 07:40   #2
Arantir#
Пользователь
 
Регистрация: 24.08.2012
Сообщений: 28
По умолчанию

Для вас это слишком сложно?
Arantir# вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление звена списка (динам. структ) RaTeN Общие вопросы C/C++ 3 01.10.2011 15:53
нужно визуальными средствами делфи сделать заполнение списка, добавление и удаление звена ksenechka5 Помощь студентам 0 04.01.2011 19:01
удаление в списке zhenya.ya Помощь студентам 0 07.06.2010 21:08
поиск в линейном списке Yura_n Общие вопросы C/C++ 9 23.07.2009 01:42