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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 14:54   #1
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
Лампочка Линейные связные списки и файловый ввод-вывод

ОБРАБОТКА ЛИНЕЙНОГО СВЯЗНОГО СПИСКА СТРУКТУР С
ПРИМЕНЕНИЕМ СТАНДАРТНЫХ СРЕДСТВ КОНСОЛЬНОГО ВВОДА-ВЫВОДА

Разработать программу, выполняющую создание в памяти связного списка структур, вывод созданного списка на экран, обработку списка согласно индивидуальному заданию и уничтожение его из памяти перед завершением программы. При этом следует использовать указатели и динамическое распределение памяти. Исходные данные о структуре залов списка приведены ниже, в вариантах задания.
Во время своей работы программа должна выполнять над связным списком следующие операции:
ввод списка с клавиатуры;
вывод списка на экран;
добавление новых узлов в начало списка, в его конец или в заданную позицию списка;
удаление из списка узла по его номеру;
сохранение в файле и чтение из файла всего списка;
определение длины списка;
обработку списка согласно индивидуальному заданию.

Программа должна быть составлена таким образом, чтобы все операции над связным списком могли выбираться пользователем в произвольном порядке по номеру операции, вводимому им с клавиатуры. Каждая операция должна быть реализована в программе в виде отдельной функции. Операции файлового ввода-вывода должны выполняться только при выборе пользователем соответствующих действий («Загрузить из файла», «Сохранить в файл»).
Само индивидуальноезадание.
О каждой книге имеются следующие сведения: фамилия и инициалы автора, название, год издания и количество запросов за последние три года.
Вывести фамилии авторов и названия книг, изданных до 1980 года, по которым нет запросов.

прогу пишу по кускам.сдавать нужно в среду...надеюсь на вашу помощь.

вот всё что я пока написал:
написал только начало и конец))

Код:
#include "conio.h"
#include "windows.h"
#include "ConvOem.h"
#include <iostream>
#include <iomanip>
using namespace std;
typedef TNode *TPNode;
CConvOem szBuff(100);
Код:
struct trec
{
	char name[20];
	char family[20];
	int year;		
	int call;
};
Код:
struct TNode
{
	trec value;
	TNode *next;
};

Код:
bool check(char *a, char *b)
{
  int i,len;
  len = strlen(a);
  for (i=0; i<len; i++) if (a[i]!=b[i]) return 0;
  return 1;
}
Код:
void ShowMenu()
{
	cout << szBuff.toOemA("1. Загрузить из файла\n");
	cout << szBuff.toOemA("2. Сохранить в файл\n");
	cout << szBuff.toOemA("3. Удалить запись в списке\n");
	cout << szBuff.toOemA("4. Удалить весь список\n");
	cout << szBuff.toOemA("5. Добавить запись в список\n");
	cout << szBuff.toOemA("6. Создать новый список\n");
	cout << szBuff.toOemA("7. Фильтр по списку\n");
	cout << szBuff.toOemA("8. Показать весь список\n");
	cout << szBuff.toOemA("9. Длина списка\n");
	cout << szBuff.toOemA("0. Выход\n");
	exit;
}
Код:
TPNode LoadFromFile()
{
	TPNode temper(0),fir;
	char fn[20];
	trec ins[20];
	int k(0),i,j;
	cout << szBuff.toOemA("Введите имя файла: ");
	cin >> fn;
	FILE *pFile=fopen(fn,"rb");
	if (!pFile)
	{
		cout << szBuff.toOemA("Ошибка открытия файла!\n");
		cout << szBuff.toOemA("Нажмите клавишу для выхода в меню...");
		getch();
		return NULL;
	}
	else cout << szBuff.toOemA("Файл успешно открыт.\n");
	fir=NULL;
	while (!feof(pFile))
	{
		fread(&ins[k],sizeof(trec),1,pFile);
		k++;
	}
	fclose(pFile);
	for (j=0; j<k-1; j++)
	{
		if (temper==NULL)
		{
			fir=temper=new TNode;
			temper->value.year=ins[j].year;
			// ... - тут сейчас пишу
	cout << szBuff.toOemA("Нажмите любую клавишу для выхода в меню...\n");
	getch();
	return fir;
}
Код:
int main()
{
	char c,ch;
	TPNode list=0;   //указатель на первый узел списка
	bool bt=true;
	while (bt) 
	{
		ShowMenu();
		c=getch();
		switch (c)
		{
		case '1': 
			{
				if (list != NULL) list=DeleteList(list);
				list=LoadFromFile();
			}
			break;
		case '2': SaveList(list);
			break;
		case '3': list=DeleteRec(list);
			break;
		case '4': list=DeleteList(list);
			break;
		case '5': list=InsertRecord(list);
			break;
		case '6': 
			{				
				if (list) list=DeleteList(list);				
				list=NewList(list);
			}
			break;
		case '7': FilterList(list);
			break;
		case '8': ShowList(list);
			break;
		case '9': ListLength(list);
			break;
		case '0': bt=false;
			break;
		default:
			{
				cout << szBuff.toOemA("Ошибка! Введен неверный номер операции.\n");
				cout << szBuff.toOemA("Нажмите любую клавишу для выхода в меню... \n");
				getch();
			} 
			break;
		}
	}	
	return 0;
}
coll3ctor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловый Ввод-вывод и строки coll3ctor Общие вопросы C/C++ 17 02.05.2010 11:02
линейные программы консольный ввод и вывод DjDeniels-61 Помощь студентам 1 20.11.2009 09:23
Файловый ввод/вывод -=$V=- Общие вопросы C/C++ 8 13.12.2008 21:11
файловый ввод/вывод kot111 Общие вопросы C/C++ 1 04.02.2008 17:45