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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2012, 06:43   #1
cyberaxe77
 
Регистрация: 08.02.2012
Сообщений: 3
По умолчанию Линейный список. (Builder C++ 6)

Собственно задание:
Код:
10. Картотека в бюро обмена квартир организована в виде линейного списка. Сведения о каждой квартире включают:
количество комнат;
этаж;
площадь;
адрес.
   Написать программу, которая обеспечивает:
начальное формирование картотеки;
ввод заявки на обмен;
поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 10% соответствующая картотека выводится и удаляется из списка, в противном случае поступившая заявка включается в список;
вывод всего списка.
   Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
Я накидал консольное приложение (компилится в Борланде С++ 6 и вроде даже работает). Но к нему нужен GUI (форма из Борланда). Как прикрутить GUI ума не приложу, т.к. никогда раньше ничего не писал с графикой. Прошу помощи, желательно с подробными пояснениями, т.к. хочу научится-разобраться. Ниже привожу свой код консольного приложения.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <vcl.h>

struct base_condominium {
	//Область данных
	int n_room;
	int floor;
	int area;
	char address[40];
//ссылка на следующий элемент
	base_condominium *next;
};

typedef base_condominium *p_node;

// создаем новый элемент списка
p_node create_node(){

	p_node new_node = (p_node) malloc(sizeof(base_condominium)); //указатель на новый узел
	printf("\nWrite address: ");
	scanf("%s", &new_node->address);
	printf("\nWrite area: ");
	scanf("%d", &new_node->area);
	printf("\nWrite floor: ");
	scanf("%d", &new_node->floor);
	printf("\nWrite number room: ");
	scanf("%d", &new_node->n_room);
	new_node->next = NULL; // следующего узла нет
	return (new_node);
}

//добавление узла в начало списка
void add_first(p_node &head, p_node new_node){
	new_node->next = head;
	head = new_node;
}


// Добавление узла после заданного
void add_after (p_node p, p_node new_node){
	new_node->next = p->next;
	p->next = new_node;
}

//добавление узла в конец списка 
void add_last(p_node &head, p_node new_node){
	p_node q=head;
	if (head == NULL) { //если список пуст
		add_first(head, new_node);
		return;
	}
	while (q->next) q=q->next; //ищем последний элемент
	add_after(q,new_node);
}


//поиск узла по параметрам
p_node find (p_node head, int ar,int fl,int n){
	p_node q = head;
	while (q) {
		if ((q->floor==fl) && ( q->n_room==n) && (q->area-ar <=10))
			return q;
		q=q->next;
	}
		return q;
}

//удаление узла из списка
void delete_node( p_node &head, p_node old_node){
	p_node q = head;
	//отдельно обрабатываем если это начало списка
	if (head == old_node)
		head = old_node->next;
	else {
		while (q && q->next != old_node) //ищем элемент
			q = q->next;
		q->next = old_node->next; //меняем адреса
	}
	free(old_node); //освобождаем память
}

//добавление элемента в базу
void add_base(p_node &head){
	p_node p = create_node();
	add_last(head, p);
}

//просмотр всей базы
void view_node(p_node &head){
	p_node p=head;

	while (p) {
		printf ("%s %d %d %d\n", p->address, p->area, p->floor, p->n_room);
		p=p->next;
	}
}
//заявка на поиск
void new_q(p_node &head){
	int fl=0, ar=0, n=0;
	p_node p;
	printf("Write area, floor and n_room");
	scanf("%d %d %d", &ar, &fl, &n); 
	
	p=find(head,ar,fl,n);
	if (p) {
		printf ("Result:\n%s %d %d %d\n", p->address, p->area, p->floor, p->n_room);
		delete_node(head,p);
	}
	else 
		add_base(head);
}
/* ОСНОВНАЯ ПРОГРАММА */

int main(){

	p_node head = NULL; //в head хранится указатель на начало списка.
						// пока в списке нет элементов head=NULL;
	char c;
	do {
	printf("vvedite indifikator deistviya\n");
	printf("e-exit\n z-new zayavka\n v-view list\n a-add zayavka\n");
	c = getch();

	switch (c) {
		case 'e':
		case 'E':								break;
		case 'a':
		case 'A':	add_base(head);				break;
		case 'v':
		case 'V':	view_node(head);			break;
		case 'z':
		case 'Z':	new_q(head);				break;	
		default :	printf("nevernii vvod\n");	break;
	}
	}
	while (( c!='e')&&(c!='E'));
	return(0);
}
Заранее спасибо за помощь.
cyberaxe77 вне форума Ответить с цитированием
Старый 08.02.2012, 10:16   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А почему нельзя сразу написать в визуал С++ ??
По моему будет проще.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 08.02.2012, 12:12   #3
cyberaxe77
 
Регистрация: 08.02.2012
Сообщений: 3
По умолчанию

Преподователь требует на Быдлере 6.
А можно Ваш вариант на Visual C++ озвучить?
cyberaxe77 вне форума Ответить с цитированием
Старый 08.02.2012, 13:29   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Да будет абсолютно тоже самое, просто будет дополнительно визуальная форма. GUI так сказать который вам вроде как и нужен.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.02.2012, 11:28   #5
cyberaxe77
 
Регистрация: 08.02.2012
Сообщений: 3
По умолчанию

В том то и дело, что с GUI никогда не сталкивался, только консоль в linux, а вот теперь петух клюнул в ж.... гм... в одно место. Если возможно, помогите прибить гвоздями ГУЙ к данной консольной программе. Хоть в Быдлере, хоть в Вижуал С++.
Спасибо.
cyberaxe77 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линейный список. GripEnemy Visual C++ 0 05.12.2011 22:35
линейный список Nelson1992 Помощь студентам 1 26.11.2011 01:40
C++,линейный список katerunechka Помощь студентам 0 08.10.2011 11:38
Линейный список doter Общие вопросы C/C++ 1 20.02.2011 21:36
Линейный список Black_Ak24 Паскаль, Turbo Pascal, PascalABC.NET 2 04.01.2008 15:00