Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C]Структуры Borland 3.1, нужно добавить поиск и сортировку 
V
    Опции темы
Lenysik89
Дата 12.5.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Здравствуйте товарищи!!!
Опять я..=)))) smile 

Теперь зада4ка на структуру... 
Написать программу с использование структуры, содержащую следующие функции: основная, создания записи (клавиша 1), вывод записей на экран монитора в виде таблицы (клавиша 2), сортировка по заданному полю (клавиша 3), поиск по ключу (клавиша 4) Количество записей – 10. Выход из программы осуществляется нажатием клавиши ESC. 
Поля: номер по списку, название музея, продолжительность экскурсии (в часах), начало экскурсии (в часах), цена билета (в рублях), количество человек в группе.    Сортировка записей по количеству человек в группе (поле - количество человек в группе). Ключ поиска – заданное количество человек в группе.

Поьзуясь у4ебником Подбельского-Фомина написала такую прогу:

Код

#include <stdio.h>
#include <string.h>

struct Excursion
{
char MuseumName[30];
float TimeForExcursion;
float Beginning;
float Price;
char Koli4tstvoLudei[8];
struct Excursion *prior;  //ykazatel na predidywiy element spiska
struct Excursion *next;   //ykazatel na sled. element spiska
} st[10];
const int M=10;
struct control
{
int nb;   //4islo zaniatix elementov
int nf;   //4islo svobiodnix elementov
struct Excursion *bbeg;  //na4alo spiska zaniatix elementov
struct Excursion *bend;  //konec spiska zaniatix
struct Excursion *fbeg;  //na4alo spiska svobodnix elementov
struct Excursion *fend;  //konec spiska svobodnix elementov
} ctrl;
int init(void);
int input(void);
//int poisk(void);
//int sortirovka(void);

int print(void);


void main(void)
{
char numb[10];
while(1)
{

printf("1.Vvod svedeniy o ekskyrsii\n");
printf("2.Vivod soderjimogo\n");
printf("3.sortirovka\n");
printf("4.Poisk\n");
printf("5.Okon4anie raboti\n");
printf("Vvedite nomer pynkta menu\n");
scanf("%s",numb);
switch (numb[0])
{
case '1':
    input();
    break;
case '2':
    print();
    break;
case '3':
    //sortirovka();
    break;
case '4':
    //poisk();
    break;

case '5':
    return;
default: printf("Neverniy pynkt menu\n");
}}}

int init(void)
{
struct Excursion *point=st;
int i;
ctrl.nb=0;
ctrl.nf=0;
ctrl.bbeg=NULL;
ctrl.bend=NULL;
ctrl.fbeg=st;
ctrl.fend=st;
point=st;
printf("\n\nInicializacia massiva.\n");
for (i=0;i<M-1;i++)
{
if (ctrl.nf!=0)
{
point -> prior=point-1;
point -> next =point+1;
}
else
{
point -> prior=NULL;
point -> next=point+1;
}
point++;
ctrl.nf++;
ctrl.fend++;
}
ctrl.nf++;
point -> prior=point-1;
point -> next=NULL;
return 0;
}

int input(void)
{
struct Excursion *ptr;
printf("\n\nFynkcia vstavki elenentov \n");
if (ctrl.nf==0)
{
printf("Svobodnix elementov net\n");
return -1;
}
ptr=fbeg;                                              //Po4emy tyt owibka?????????????????!!!!!!!!!=((((((((
printf("Vvedite Imia Myzeja \n");
scanf("%s",fbeg->MuseumName);
printf("Vvedite vremia ekskyrsii \n");
scanf("%f",&ptr->TimeForExcursion);
printf("Vvedite vremia ekskyrsii \n");
scanf("%f",&ptr->Beginning);
printf("Vvedite ceny \n");
scanf("%f",&ptr->Price);
printf("Vvedite kol-vo lydei \n");
scanf("%s",ptr->Koli4tstvoLudei);
if (ctrl.nf==1)
{
ctrl.fbeg=NULL;
ptr->next=NULL;
ptr->prior=ctrl.bend;
ctrl.bend->next=ptr;
ctrl.bend=ptr;
ctrl.fend=NULL;
}
else
{
if (ctrl.nb==0)
ctrl.bbeg=ptr;
ctrl.fbeg=ptr->next;
ptr->next=NULL;
ptr->prior=ctrl.bend;
ctrl.bend->next=ptr;
ctrl.bend=ptr;
ctrl.fbeg->prior=NULL;
}
ctrl.nb++;
ctrl.nf--;
return 0;
}
int print(void)
{
int i;
struct Excursion *ptr;
ptr=ctrl.bbeg;
printf("Baza\n\n\n");
if (ctrl.nb==0)
{
printf("Baza pysta\n");
return -1;
}
for (i=0;i<ctrl.nb;i++)
{
printf("%d MuseumName:  %s\n",i,ptr->MuseumName);
printf("vremia ekskyrsii: %f\n",ptr->TimeForExcursion);
printf("vremia na4ala:  %f\n",ptr->Beginning);
printf("Cena: %f\n",ptr->Price);
printf("Kol-vo lydei %d\n",ptr->Koli4tstvoLudei);
ptr=ptr->next;
}
printf("\n\n Vsego zapisei=%d\n",i);
return 0;
}
Код




Вот..............тут не хватает функций poisk() и sortirovka(), как их написать- понятия не имею....=((((((((((((((((((((((((((((((((
А еще компилятор (Borland 3.1) выдает непонятную ошибку- я ее выделила=))
И еще, хотелось бы управление переделать, вместо scanf использовать getch....Тока я не знаю как это=((
И как сделать так, 4тобы выходить по ESC..........=((((((((( smile 

Помогите плиз..........................................



PM MAIL   Вверх
Lenysik89
Дата 12.5.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Дело в том, 4то count и все такое мы не проходили=> использовать нельзя.......
и еще кстати, я не блондинка, я-брюнетка=)))))))))

а текст ошибки: undefined symbol fbeg


...............................вот так вот.............
PM MAIL   Вверх
Lenysik89
Дата 12.5.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Я имела ввиду:
"Я бы посоветовала юзать cin и cout, они более красивые и меньше шанса накосячить в синтаксисе"

Как 4ерез getch сделать-то?
Мне одногрупник сказал, 4то так нужно делать..........

Добавлено через 7 минут и 4 секунды
И ту функцию, которую ты написала я ваще не поняла......=(((((((
PM MAIL   Вверх
Lenysik89
Дата 12.5.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Теперь вроде стало яснее.......=))
А вот как же все-таки сделать выход по ESC, да и все кнопо4ки переписать без scanf'ов...???
А одногрупник кстати сам нихренатушки не шарит(((((((
PM MAIL   Вверх
Lenysik89
Дата 13.5.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Аааа, с ESC и getch() теперь все понятно..............
остаются поиск и сортировка..=((((((((((((((((( 
PM MAIL   Вверх
Lenysik89
Дата 13.5.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Вот продолжаю работать над этой структурой=))))
Написала поиск....врое должно быть все нормально......А он в любом слу4ае пишет, 4то ни4его не найдено=((((
Посмотрите, плиз, если кому не в падлу=))))))))
Буду о4ень благодарна=))
(Скоро у меня будет 100 постов.....=)))))))))))))
Пожалуйста.......... smile 

Код

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>

struct Excursion
{
char MuseumName[30];
int TimeForExcursion;
int Beginning;
int Price;
int Koli4tstvoLudei;
struct Excursion *prior;  //ykazatel na predidywiy element spiska
struct Excursion *next;   //ykazatel na sled. element spiska
} st[10];
const int M=10;                
struct control
{
int nb;   //4islo zaniatix elementov
int nf;   //4islo svobiodnix elementov
struct Excursion *bbeg;  //na4alo spiska zaniatix elementov
struct Excursion *bend;  //konec spiska zaniatix
struct Excursion *fbeg;  //na4alo spiska svobodnix elementov
struct Excursion *fend;  //konec spiska svobodnix elementov
} ctrl;
int init(void);
int input(void);
int poisk(void);
//int sortirovka(void);
int print(void);
struct Excursion *find(int PCount);

void main(void)
{
clrscr();

init();
char command;
while(1)
{

printf("1.Vvod svedeniy o ekskyrsii\n");
printf("2.Vivod soderjimogo\n");
printf("3.sortirovka po kol-vy 4elovek v gryppe\n");
printf("4.Poisk po zadannomy 4isly 4elovek v gryppe\n");
printf("\nVvedite nomer pynkta menu\n");
char command;
command=getch();
switch (command)
{
case '1':
    input();
        clrscr();
    break;
case '2':
    print();
    break;
case '3':
    //sortirovka();
    break;
case '4':
    poisk();
    break;

case 27:
    return;
default: printf("\n\nNeverniy pynkt menu\n\n");
}
}
}

int init(void)
{
struct Excursion *point=st;
int i;
ctrl.nb=0;
ctrl.nf=0;
ctrl.bbeg=NULL;
ctrl.bend=NULL;
ctrl.fbeg=st;
ctrl.fend=st;
point=st;
for (i=0;i<M-1;i++)
{
if (ctrl.nf!=0)
{
point -> prior=point-1;
point -> next =point+1;
}
else
{
point -> prior=NULL;
point -> next=point+1;
}
point++;
ctrl.nf++;
ctrl.fend++;
}
ctrl.nf++;
point -> prior=point-1;
point -> next=NULL;
return 0;
}

int input(void)
{
struct Excursion *ptr;
printf("\n\n  \n");
if (ctrl.nf==0)
{
printf("Svobodnix elementov net\n");
return -1;
}
ptr=ctrl.fbeg;
printf("Vvedite Imia Myzeja \n");
scanf("%s",ctrl.fbeg->MuseumName);
printf("Vvedite vremia ekskyrsii \n");
scanf("%d",&ptr->TimeForExcursion);
printf("Vvedite vremia na4ala ekskyrsii \n");
scanf("%d",&ptr->Beginning);
printf("Vvedite ceny v rybliax\n");
scanf("%d",&ptr->Price);
printf("Vvedite kol-vo lydei \n");
scanf("%d",&ptr->Koli4tstvoLudei);
if (ctrl.nf==1)
{
ctrl.fbeg=NULL;
ptr->next=NULL;
ptr->prior=ctrl.bend;
ctrl.bend->next=ptr;
ctrl.bend=ptr;
ctrl.fend=NULL;
}
else
{
if (ctrl.nb==0)
ctrl.bbeg=ptr;
ctrl.fbeg=ptr->next;
ptr->next=NULL;
ptr->prior=ctrl.bend;
ctrl.bend->next=ptr;
ctrl.bend=ptr;
ctrl.fbeg->prior=NULL;
}
ctrl.nb++;
ctrl.nf--;
return 0;
}
int print(void)
{
int i;
struct Excursion *ptr;
ptr=ctrl.bbeg;
printf("Baza:\n\n");
if (ctrl.nb==0)
{
printf("V baze net zapisei\n\n");
return -1;
}
for (i=0;i<ctrl.nb;i++)
{
printf("%d MuseumName:  %s\n",(i+1),ptr->MuseumName);
printf("  vremia ekskyrsii: %d\n",ptr->TimeForExcursion);
printf("  vremia na4ala:  %d\n",ptr->Beginning);
printf("  Cena: %d\n",ptr->Price);
printf("  Kol-vo lydei %d\n",ptr->Koli4tstvoLudei);
ptr=ptr->next;
}
printf("\n\n Vsego zapisei=%d\n\n",i);
return 0;
}

struct Excursion *find(int PCount)
{
 int i;
 struct Excursion *ptf;
 ptf=ctrl.bbeg;
 for (i=0;i<ctrl.nb;i++)  //nb - 4islo zaniatix elementov
 {
  if( PCount==ptf->Koli4tstvoLudei)
  return ptf;
  ptf=ptf->next;
 }
 return NULL;
}


int poisk(void)
{
int PCount;
int i;
struct Excursion *ptr;
if (ctrl.nb==0)
{
printf("\nV baze net zapisei\n\n");
return -1;
}
printf("Vvedite 4islo ludei dlia poiska:    \n");
scanf("%d", PCount);
if ((ptr=find(PCount))==0)
    {
    printf("Ni4ego ne naideno\n");
    return -1;
    }
else {
printf("%d MuseumName:  %s\n",(i+1),ptr->MuseumName);
printf("  vremia ekskyrsii: %d\n",ptr->TimeForExcursion);
printf("  vremia na4ala:  %d\n",ptr->Beginning);
printf("  Cena: %d\n",ptr->Price);
printf("  Kol-vo lydei %d\n",ptr->Koli4tstvoLudei);}}

[code=cppb]



PM MAIL   Вверх
Lenysik89
Дата 13.5.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



ни4его не ясно!=(((((((
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.