Аватар для kapriz0n
20 / 20 / 0
Регистрация: 26.10.2008
Сообщений: 77

Помогите с бинарным файлом

20.11.2008, 15:44. Показов 2127. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задачка звучит так:
Вы являетесь владельцем склада металлических изделий и нуждаетесь в инвентаризации, которая сказала бы вам, сколько всего различных изделий вы имеете, какое количество каждого Жиз них у вас на руках и стоимость каждого из них. Напишите программу, которая бы создавала файл произвольного доступа «hardware.dat» на сотню пустых записей, позволяла бы вводить данные по каждому изделию, давала бы вам возможность получать список всех изделий, удалять записи по изделиям, которых у вас уже нет, и позволяла бы обновлять любую информацию в файле.
Задача не сложная,я не могу реализовать удаление, может кто подскажет алгоритм хоть буду очень признателен Задача написана, но само удаление нет(там наработка выделена красным, она не доделана просто мысли были) написание программы следующее:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <iomanip>
using namespace std;
 
const int l_name=15;
//const int r=100;
struct magazin{
    int    nom;
    char   name[l_name+1];
    int    kol;
    double cena;
};
 
void main()
{
    setlocale (LC_CTYPE,"rus"); // подключение русского языка
    magazin inst;
 
    FILE* fo;
    int g;
 
    if((fo=fopen("nyny.bat","r+b"))==NULL)
    {
        cout<<"Создан файл для записи данных"<<endl;
         if((fo=fopen("nyny.bat","w+b"))==NULL) cout<<"ERROR!!!!!!!!!!!!!!"<<endl;
         getch();system("cls");
    }
    
 
do
{
    cout<<"       МЕНЮ нажмите:\n";
    cout<<"1 - Добавить к перечню"<<endl;
    cout<<"2 - Удалить из перечня"<<endl;
    cout<<"3 - Просмотр перечня"<<endl;
    cout<<"4 - Для выхода"<<endl;
 
g=getch();
 
 if(g=='1')
{
    system("cls");
  fseek(fo,0,SEEK_END);
 //int size=ftell(fo);
 while(1)
 {
     if(ftell(fo)/sizeof(inst)>5) { cout<<"Лимит деталей"<<endl; getch(); break;}
 
     cout<<"Введите номер инструмента"<<endl;
     cin>>inst.nom;
     cout<<"Введите название инструмента"<<endl;
     cin>>inst.name;
     cout<<"Введите количество инструмента"<<endl;
     cin>>inst.kol;
     cout<<"Введите цену инструмента"<<endl;
     cin>>inst.cena;
     fwrite(&inst,sizeof(inst),1,fo);
     cout<<"Для продолжения ввода (y)"<<endl;
     g=getch();
     if(g!='y')
     {
         system("cls");
         break;         
     }
     system("cls");
 }
}
 
 
 [COLOR=Red]else if(g=='2')
{
    esystem("cls");
    int kod;
    int n,i=0;
    bool f=false;
 do
 {
     cout<<"Введите код инструмента ";
        cin>>kod;
    fseek(fo,0,SEEK_END);
    n=ftell(fo)/sizeof(inst);
    if(n==0)
    {
        cout<<"У вас нет ни одной записи"<<endl;
        break;
    }
    fseek(fo,0,SEEK_SET);
 
   while((++i)<=n)
    {
 
        fread(&inst,sizeof(inst),1,fo);
        if(inst.nom==kod) 
        {   
            //fread(&inst,sizeof(inst),1,fo);
            fseek(fo, (i)*sizeof(inst),SEEK_SET);
             
 
            fwrite(&inst,sizeof(inst),1,fo);
            f=true;
            cout<<"Инструмент из базы удален"<<endl<<endl;
            break;
        }
        
    }
   if(f==false)cout<<"Инструмента с таким кодом нет"<<endl<<endl;
      cout<<"Для повтора нажмите (y)"<<endl;
   g=getch();
   system("cls");
 }while(g=='y');
 }[/COLOR]
 
 
    
 
 
 else if(g=='3')
{ 
    system("cls");
    int i=0;
    fseek(fo,0,SEEK_END);
    int n=ftell(fo)/sizeof(inst);
    
    
    fseek(fo,0,SEEK_SET);
    
    cout<<"Просмотр перечня"<<endl<<endl;
    cout<<"Номер"<<setw(10)<<"Название"<<setw(12)<<"Количество"<<setw(8)<<"Цена"<<endl;
    while((n--)!=0)
    {   
        
        fread(&inst,sizeof(inst),1,fo);
        
        cout<<inst.nom<<setw(10)<<inst.name<<setw(10)<<inst.kol<<setw(10)<<inst.cena<<endl;
    }
    
    getch();
    system("cls");
}
 
 
system("cls");
}while(g!='4');
fclose(fo);
 
}
Добавлено через 2 минуты 26 секунд
У администрации прошу прощение # нажимал в редакторе но чтото не зароботало.. И вообще можно ведь было зделать и подсказки на кнопочках в редакторе...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2008, 15:44
Ответы с готовыми решениями:

Проблемы с бинарным файлом
Приветствую. Проблема заключается в следующем: не хочет открываться бинарный файл. #include &lt;stdio.h&gt; #include...

Работа с бинарным файлом
Доброго времени суток всем. Помогите пожалуйста доделать задачу: Создать класс для работы с бинарным файлом. В файл записать...

задача с бинарным файлом
Помогите, пожалуйста, написать на C++. Нужно создать бинарный файл f и записать в него целые числа. Организовать просмотр бинарного файла...

1
 Аватар для kapriz0n
20 / 20 / 0
Регистрация: 26.10.2008
Сообщений: 77
24.11.2008, 00:22  [ТС]
Мда сложно видимо окозалось но я доделал... утром осенило вдруг кому поможет вот кусочек:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 else if(g=='2')
{
    system("cls");
    int kod;
    int n,i=0;
    bool f=false;
    int del=0;
 do
 {  
    fseek(fo,0,SEEK_END);
    n=ftell(fo)/sizeof(inst);
    if(n==0)
    {
        cout<<"У вас нет ни одной записи"<<endl;getch();
        break;
    }
    cout<<"Введите код инструмента ";
        cin>>kod;
    fseek(fo,0,SEEK_SET);
 
//cout<<"n="<<n<<endl;
 
   for(i=0;i<n;i++)
    {   
        //cout<<"i="<<i<<endl;
        fread(&Del_inst[i],sizeof(inst),1,fo);
        //cout<<"Del_inst[i-1].nom="<<Del_inst[i-1].nom<<endl;
        //cout<<"Del_inst[i-1].name="<<Del_inst[i-1].name<<endl;
        //cout<<"Del_inst[i-1].kol="<<Del_inst[i-1].kol<<endl;
        //cout<<"Del_inst[i-1].cena="<<Del_inst[i-1].cena<<endl;
        //getch();
        if(Del_inst[i].nom==kod)  
        {
            ++del;
            
            f=true;
            cout<<"Инструмент удален\n";
            if(n==1)break;
            if(i+1==n)break;
            i--;
        }
    }
   if(f==false)cout<<"Инструмента с таким кодом нет"<<endl<<endl;
   
    fclose(fo);
      fo=fopen("nyny.bat","w+b");
      //cout<<"n="<<n<<endl;
      //cout<<"i="<<i<<endl;
      //cout<<"del="<<del<<endl;
   for(int j=0;j<n-del; j++) 
   {
     fwrite(&Del_inst[j],sizeof(inst),1,fo);
    
   }
   
   
   del=0;
   f=false;
      cout<<"Для повтора нажмите (y)"<<endl;
   g=getch();
   system("cls");
 }while(g=='y');
 }
Вместо крассного...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2008, 00:22
Помогаю со студенческими работами здесь

Работа с бинарным файлом
Можно ли из бинарного файла выписывать строки?

Работа с бинарным файлом
Всем привет! есть тестовый пример в котором я пытаюсь записать в бинарный файл три переменных, а затем их считать. Все работает нормально...

Работа с бинарным файлом
почему программа не выводит 16-ричный дамп бинарного файла? int main () { streamoff lSize; char *buffer; ifstream...

Работа со структурой и бинарным файлом
Что может быть за ошибка в case 2? struct sport_complex{//Структура struct trainers{ char t_name; char t_surname; char...

Работа с бинарным файлом и массив структур
Задание следующее: В компании одному номеру соответствует одно помещение, в помещении до 5 человек, нужно сначала внести данные в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru