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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 02:07   #1
Alena_897
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 32
По умолчанию динамический список

это задание, так понимаю, можно сделать с помощью динамического списка.

1. Создание новой базы данных.
2. Сохранение базы данных в файле.
3. Загрузка базы данных из файла.
4. Проверка целостности файла базы данных.
5. Введение, изменение и удаление записей.
6. Просмотр базы данных.
7. Поиск записей в том числе с использованием логических связок «и, или, не» и
чувствительный, не чувствительный к регистру поиск.
8. Сортировка в поиске по различным аспектам (алфавит, релевантность,
определенное поле записи и т.п.).
9. Сохранение результатов поиска в файле.
10. Отображение системной информации (количество записей в базе, объем данных
и т.п.)


имеется такой код:

Код:
#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

//структура, описывающая компонент списка
struct comp{
	char name[20];
	char value[10];
	comp* next;
};


struct dyn_list{
	comp* head;
	comp* tail;
};

void constr_list(dyn_list&I)
{
	I.head=NULL;
}

bool chk_empty(dyn_list I)
{
	return (I.head==NULL);
}



void comp_in(dyn_list &I,char* n,char* v)
{
	comp* c=new comp();
	strcpy_s(c->name,20,n);
	strcpy_s(c->value,10,v);
	c->next=NULL;
	if (chk_empty(I))
		I.head=c;
	else
		I.tail->next=c;
	I.tail=c;
}

comp* search(dyn_list I,char *n)
{
	while(I.head!=NULL)
	{
		if (!strcmp(I.head->name,n))
			return I.head;
		I.head=I.head->next;
	}
	return I.head;
}

void comp_del(dyn_list&I,comp* c)
{
	if (c==I.head)
	{
		I.head=c->next;
		return;
	}
	comp* r=new comp();
	r=I.head;
	while (r->next!=c)
		r=r->next;
	r->next=c->next;
	delete c;
}

void comp_edit(comp &c,char* v)
{
	strcpy_s(c.value,10,v);
}

int main ()
{
	
	//описание списка
	char* fname=new char[50];
	char* buf_name=new char[20];
	char* buf_value=new char[10];

	dyn_list vars; //динамический список

	cout<<"введите имя файла:   ";   //
	cin>>fname;

	ifstream* inp=new ifstream(fname);
	if (!inp->good())
	{cout<<"ошибка открытия файла!\n";
	system("PAUSE");
	return 0;
	}

	constr_list(vars);
	while(!inp->eof())
	{
		inp->getline(buf_name,20,' ');
		inp->getline(buf_value,10,' ');
		comp_in(vars,buf_name,buf_value);
	}
	inp->close();
	comp* p=new comp();
	p=search(vars,"z");
	if (p)
		comp_del(vars,p);
	p=search(vars,"abc");
	if (p)
		comp_edit(*p,"2");
	ofstream* out=new ofstream(fname);
	while (vars.head!=NULL)
	{
		out->write(vars.head->name,strlen(vars.head->name));
		out->write("",1);
		out->write(vars.head->value,strlen(vars.head->value));
		out->write("",1);
		vars.head=vars.head->next;
	}
	out->close();
	system("PAUSE");
	return 0;}
но вот только ошибку выдает "error C2065: 'strcpy_s' : undeclared identifier". в чем ее суть - понимаю. помогите исправить.
а также помогите добавить в код недостающие пункты задания.
Alena_897 вне форума Ответить с цитированием
Старый 29.12.2011, 19:42   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

У себя запустил. Всё откомпилировалось в Visual 2008 (Dev C++ ругается), правда в код не вникал. Замечания:
1) удивило, что strcpy и strlen работают без string.h в Visual'e 2008
2) в Dev C++ обнаружилось, что вы функцию strcpy с тремя параметрами вызываете.
3) удивило, что Dev C++ не ругался на отсутствие string.h
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический список music66 Помощь студентам 1 28.04.2011 17:14
Динамический список Sergey240892 Помощь студентам 7 18.04.2011 20:34
Динамический список на Си Slame Помощь студентам 1 10.04.2011 17:39
Динамический список в С серг Общие вопросы C/C++ 0 04.03.2010 19:54
Динамический список Ker_33rus Общие вопросы C/C++ 3 04.03.2010 09:32