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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2014, 19:56   #1
manichka2009
 
Регистрация: 29.12.2013
Сообщений: 4
По умолчанию Удалить из файла сведения о багаже

Используя функции и режим меню, создать двоичный файл из 10 записей, просмотреть файл, добавить в файл новую информацию и применить режим прямого доступа.
Запись имеет вид: фамилия, количество вещей, общий вес. Удалите из файла сведения о багаже, общий вес вещей в котором меньше, чем 10 кг.
Основные данные ввел, а как удалить сведения о багаже?

Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
struct tov {char name[10]; float c; int kol;} t1;
void input(FILE *); // создание нового файла
void print(FILE *); // просмотр файла
void app(FILE *); // добавление в файл
void find(FILE *); // поиск и изменение
 
main()
{ char c;
  FILE *tf;
  while (1)
  {
    puts("  1 – Novii fail");
    puts("  2 – prosmotr faila");
    puts("  3 – dobavlenie v fail");
    puts("  4 – poisk i izmenenie");
    puts("  0 - vihod");
    c=getch();
 
    switch(c)
 
    { case '1':input(tf);break;
      case '2':print(tf);break;
      case '3':app(tf);break;
      case '4':find(tf);break;
      case '0':return 0;
      default : puts(" неверный режим");
}
  }
}
 
void input(FILE *tf)
 
{
    char ch;
  tf=fopen("file1.dat","wb"); // открытие бинарного файла для записи
  printf("\n Vvod sportsmena\n");
 
  do
 
  { printf("\n Familiya: "); scanf("%s",t1.name);
    printf(" Kolichestvo vechei: "); scanf("%f",&t1.c);
    printf(" Obchi ves: "); scanf("%d",&t1.kol);
    fwrite(&t1,sizeof(t1),1,tf); // запись в файл одной структуры t1
    printf("\n zakonchit?  y/n  ");
    ch=getch();
 
  }
 
  while (ch != 'y');
 
  fclose(tf);
}
void print(FILE *tf)
{ int i;
  tf=fopen("file1.dat","rb"); // открытие бинарного файла для чтения
  i=1;
  fread(&t1,sizeof(t1),1,tf); // чтение из файла одной структуры t1
  while (!feof(tf))
 
  { printf("\n  %3d familiya %10s nomer %6.2f ochki %4d",i,t1.name,t1.c,t1.kol);
    fread(&t1,sizeof(t1),1,tf);
    i++;
  }
  getch();
}
void app(FILE *tf)
{ char ch;
 
  tf=fopen("file1.dat","ab"); // открытие бинарного файла для добавления
  printf("\n  Vvod sportsmena \n");
  do
  {  printf("\n familiya: "); scanf("%s",t1.name);
    printf(" Kolichestvo vechei: "); scanf("%f",&t1.c);
    printf(" Obchi ves: "); scanf("%d",&t1.kol);
    fwrite(&t1,sizeof(t1),1,tf);
    printf(" zakonchit?  y/n ");
    ch=getch();
  }
  while (ch != 'y');
  fclose(tf);
}
void find(FILE *tf)
{ char c,tov[10];
  long int i;
  tf=fopen("file1.dat","rb+"); // открытие бинарного файла для чтения и записи
  puts(" familiya: ");
  gets(tov);
  fread(&t1,sizeof(t1),1,tf);
 
while (!feof(tf))
  {  if (strcmp(t1.name,tov)==0)
     {   printf(" familiya %10s Kolichestvo vechei %6.2f Obchi ves %d",t1.name,t1.c,t1.kol);
         printf("\n izmenit? y/n ");
         c=getch();
         if (c=='y')
         {  printf("\n Kolichestvo vechei: ");scanf("%d",&t1.kol);
            printf("\n Obchi ves: ");scanf("%f",&t1.c);
            i=sizeof(t1);
            fseek(tf,-i,1); // возврат на sizeof(t1) байт назад
            fwrite(&t1,sizeof(t1),1,tf); // запись изменённой структуры на прежнее место
         }
      }
      fseek(tf,0,1);
 
     fread(&t1,sizeof(t1),1,tf);
  }
  fclose(tf);
}
manichka2009 вне форума Ответить с цитированием
Старый 10.05.2014, 20:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
как удалить сведения о багаже?
Считать в некий список из файла данные, а потом перезаписать в файл без данных, которые нужно удалить.
Создать массив типа tov и считать в него данные файла сможешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалите из файла сведения о багаже, общий вес вещей в котором меньше, чем 10 кг. manichka2009 Общие вопросы C/C++ 0 27.04.2014 17:48
Составить программу создания файла на языке pascal , содержащего сведения для объектов. программа должна обеспечить ввод исходных марфаз Помощь студентам 74 27.12.2013 14:47
Паскаль.... задача про багаж.. дан файл багаж, содержащий сведения о багаже нескольких пассажиров. Сашунечка Паскаль, Turbo Pascal, PascalABC.NET 1 17.06.2012 05:25
Обработка файла на Турбо Паскаль - Удалить из файла файл вещественных чисел максимальную компоненту chudo*** Паскаль, Turbo Pascal, PascalABC.NET 1 24.12.2011 22:51
Необходимо создать файл, содержащий информацию о багаже пасажиров Андрю)(@ Паскаль, Turbo Pascal, PascalABC.NET 3 26.11.2008 23:58