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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2012, 23:25   #1
vo0vka
 
Регистрация: 01.12.2012
Сообщений: 4
По умолчанию Последовательный поиск в односвязном списке

Помогие написать блок для последовательного поиска по отсортированному списку

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <conio.h>
 #include <stdlib.h>
#include <fstream.h>
#include <iostream>
#pragma hdrstop
 typedef struct
 {
 char fam[15];
 char name[15];
 int god;
 int ser;
 int nom;
 float money;
 } Tkadr;
 typedef Tkadr TMaskadr[50];

 typedef struct TListkadrTag
 {
 TListkadrTag *next;
 char fam[15];
 char name[15];
 int god;
 int ser;
 int nom;
 float money;
 } TListkadr;

//---------------------------------------------------------------------------

#pragma argsused
TMaskadr MAS;
//TListkadr *PListkadr;
TListkadr *PList;
TListkadrTag *p;

void qsort1(TMaskadr &item, int left,int right)
 {
   int i,j,k;
   int comp;
   Tkadr buf;
   i=left; j=right;
   k= (left+right)/2;
   comp=item[k].ser;    // Компаранд
   do {
	 while(item[i].ser<comp && i<right)
	   i++;
	 while(comp<item[j].ser && j>left)
	   j--;
	 if(i<=j) {
	   buf=item[i];  // Обмен
	   item[i]=item[j];
	   item[j]=buf;
	   i++; j--;
	 }
   } while(i<=j);
   if(left<j)
	 qsort1(item,left,j);  // Рекурсивный вызов
   if(i<right)
	 qsort1(item,i,right);
 }
//---------------------------------------------------------------------------
TListkadr* AddItemToEnd(TListkadr* PList, Tkadr MAS_i){
  TListkadr *PNewItem, *Next;
  Next = PList;
 if (Next) {
   while(Next->next)
	 Next=Next->next;
  PNewItem = new TListkadr;
  Next->next= PNewItem;

  StrCopy(PNewItem->fam, MAS_i.fam);
  StrCopy(PNewItem->name, MAS_i.name);
  PNewItem->god=MAS_i.god;
  PNewItem->ser=MAS_i.ser;
  PNewItem->nom=MAS_i.nom;
  PNewItem->money=MAS_i.money;
  PNewItem->next=NULL;
  return PList;
 }
 else {
  PNewItem = new TListkadr;
  StrCopy(PNewItem->fam, MAS_i.fam);
  StrCopy(PNewItem->name, MAS_i.name);
  PNewItem->god=MAS_i.god;
  PNewItem->ser=MAS_i.ser;
  PNewItem->nom=MAS_i.nom;
  PNewItem->money=MAS_i.money;
  PNewItem->next=NULL;
  return PNewItem;
 }

delete PNewItem;
delete Next;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
char imya;
ifstream file("kadr.txt", ios_base::in); // открыли файл для чтения
int i=0;
  while(!file.eof()){
   file >> MAS[i].fam >> MAS[i].name >> MAS[i].god >> MAS[i].ser>>
		MAS[i].nom>>MAS[i].money;
   ++i;
   }

  for (i = 0; i<= 4; i++){
	printf("fam=%s name=%s god=%d ser=%d nom=%d money=%.2f\n",
	MAS[i].fam, MAS[i].name, MAS[i].god, MAS[i].ser, MAS[i].nom, MAS[i].money);
		 }
qsort1(MAS, 0, 4);

printf("\nSorirovka po serii pasporta:\n");
ofstream book_file("Qsort.txt");

for (i = 0; i <= 4; i++)
	{printf("fam=%s name=%s god=%d ser=%d nom=%d money=%.2f\n",
		   MAS[i].fam, MAS[i].name, MAS[i].god, MAS[i].ser, MAS[i].nom, MAS[i].money);

   //Сохранение полученных данных в созданный файл
   book_file << "Фамилия "<<MAS[i].fam<<" Имя "<<MAS[i].name<<" Год "
		   <<MAS[i].god<< " Серия "<<MAS[i].ser
		   << " Номер "<<MAS[i].nom<<" Зарплата "<<MAS[i].money<<endl;
	}


for (i = 0; i <= 4; i++)
PList = AddItemToEnd(PList, MAS[i]);

 }
getche();
return 0;
}
//---------------------------------------------------------------------------
файл с данными для считывания kadr.txt
vo0vka вне форума Ответить с цитированием
Старый 01.12.2012, 23:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
для последовательного поиска
Поиска чего?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2012, 23:49   #3
vo0vka
 
Регистрация: 01.12.2012
Сообщений: 4
По умолчанию

поиск данных о человеке, например, по имени
vo0vka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка памяти в односвязном списке Sigwey Помощь студентам 0 28.12.2010 17:02
Поиск в односвязном списке DOJ Общие вопросы C/C++ 6 04.10.2009 13:34
последовательный поиск по базе bosston БД в Delphi 21 26.06.2009 14:43
Обмен местами 2х элементов в односвязном списке. amdbodia Общие вопросы C/C++ 4 31.05.2009 23:26
Последовательный поиск в БД Nowichok БД в Delphi 7 10.02.2007 21:55