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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.02.2009, 17:26   #1
azat20
Новичок
Джуниор
 
Регистрация: 21.02.2009
Сообщений: 2
По умолчанию Уменьшение счетчика в записи

Добрый день! Прошу совета! Задание было, написать БД по билетам вокзала. Не работает процедура покупки билета. Т.е. необходимо чтобы значение Freeplace в записи уменьшилось на 1. А потом посмотреть это, через вызов процедуры Output(cfPtr). Посмотрите пожалуйста, код. Сейчас ничего не отображается после покупки билета, такое чувство, что срабатывает if(Train.Nomer==0) break;
Всем заранее спасибо за ответы!

Код:
struct Ticket{  
   int Nomer;  
   char Nameoftrain[10];  
   char Endstation[10];  
   int Freeplace;  
   float Price;  
   char Servicetype[10];  
   float Starttime;  
   float Goingtime;  
   };  
  
 int Output(FILE*fPtr)  
  { struct Ticket Train={0,"","",0,0.0,"",0.0,0.0};  
     int i=0;  
     printf("%-6s%-13s%-13s%-10s%-6s%-13s%-10s%-5s\n",  
            "Nomer","Nameoftrain","Endstation","Freeplace","Pr  ice","Servicetype","Starttime","Goingtime");  
     while(Train.Nomer!=-1) {  
         fseek(fPtr,(i++)*sizeof(struct Ticket),SEEK_SET);  
         fread(&Train,sizeof(struct Ticket),1,fPtr);  
         if(Train.Nomer==0) break;  
         if(Train.Nomer!=-1)  
         printf("%-6d%-13s%-13s%-10d%-6.1f%-13s%-10.2f%-5.2f\n", Train.Nomer,  
            Train.Nameoftrain,Train.Endstation,Train.Freeplace  ,Train.Price,  
             Train.Servicetype,Train.Starttime,Train.Goingtime)  ;  
    }  
    return i;  
  }  
void Buying(FILE*fPtr)  
{  
 int i=0;  
int j=-1;  
 char Nameoftrain[10];  
 struct Ticket Train={0,"","",0,0.0,"",0.0,0.0};  
 printf("Input Trains Name:");  
 scanf("%s",Nameoftrain);  
 while(Train.Nomer!=-1) {  
     fseek(fPtr,(i)*sizeof(struct Ticket),SEEK_SET);  
      fread(&Train,sizeof(struct Ticket),1,fPtr);  
       if(Train.Nomer!=-1)  
      if(strcmp(Train.Nameoftrain,Nameoftrain)==0)  
      j=i;  
         i++;  
 }  
 if(j!=-1)  
 fseek(fPtr,(j)*sizeof(struct Ticket),SEEK_SET);  
 Train.Freeplace=Train.Freeplace-1;  
 fwrite(&Train,(j)*sizeof(struct Ticket),1,fPtr);  
 }
azat20 вне форума
Старый 22.02.2009, 22:03   #2
azat20
Новичок
Джуниор
 
Регистрация: 21.02.2009
Сообщений: 2
По умолчанию

Вопрос закрыт! Надо было добавить еще fseek(fPtr,(j)*sizeof(struct Ticket),SEEK_SET); перед fwrite(&Train,(j)*sizeof(struct Ticket),1,fPtr);
azat20 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
уменьшение ширины таблицы Viteef HTML и CSS 5 18.02.2009 23:59
Сброс счетчика vldand Microsoft Office Access 1 20.10.2008 18:40
Увеличение и уменьшение картинок zzzzz Мультимедиа в Delphi 2 30.08.2008 20:53
Уменьшение размера ехе файлов Terran Общие вопросы Delphi 20 23.01.2008 23:03