Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C]Структуры Borland 3.1


Автор: Lenysik89 12.5.2007, 18:37
Здравствуйте товарищи!!!
Опять я..=)))) 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 

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



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

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


...............................вот так вот.............

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

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

Добавлено через 7 минут и 4 секунды
И ту функцию, которую ты написала я ваще не поняла......=(((((((

Автор: Lenysik89 12.5.2007, 23:50
Теперь вроде стало яснее.......=))
А вот как же все-таки сделать выход по ESC, да и все кнопо4ки переписать без scanf'ов...???
А одногрупник кстати сам нихренатушки не шарит(((((((

Автор: Lenysik89 13.5.2007, 12:09
Аааа, с ESC и getch() теперь все понятно..............
остаются поиск и сортировка..=((((((((((((((((( 

Автор: Lenysik89 13.5.2007, 16:24
Вот продолжаю работать над этой структурой=))))
Написала поиск....врое должно быть все нормально......А он в любом слу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]



Автор: Lenysik89 13.5.2007, 19:22
ни4его не ясно!=(((((((

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)