Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание простенькой игры http://www.cyberforum.ru/cpp-beginners/thread16332.html
Кто нибудь раньше читал книги-игры? Ну там: если вы поварачиваете направо, то 326 параграф; если налево то 23. никто не подскажет на каком уровне можно написать такую программу что бы она сама переносила на нужные ссылки, записывала имеющиеся предметы, проигрывала сражения и т.д.
C++ Впадаю в страшную рекурсию... еще вопрос по указателям Почему в рекурсию? Начинаю разбирать код на С. и понимаю что я чего то не знаю. - начинаю разбираться как с этим работать, как понимаю что мне еще что то надо знать - вот так ухожу вдаль от изначальной проблемы :) Вопрос не нашел на просторах инета, нашел только что написал изначально не правильно, хотя работало ( хоть не так как надо ), а потом написал правильно, но тоже работало (хотя тоже... http://www.cyberforum.ru/cpp-beginners/thread16160.html
Работа с указателями в объектах и без них, помогите разобраться C++
Значит так! Есть 4 указателя - 2 из них описанны в классе, 2 глобально. В классе есть конструктор, который выделяет место под переменную первого указателя. и присваивает адрес, на который ссылается первый указатель второму. Такая же действие производится с глобальными указателями в программе. При выводе областей памяти, на которые ссылаются указатели - у тех указателей которые прописывались...
C++ Составить программу для произвольного рисования на экране
Составить программу для произвольного рисования на экране. Рисунок - это след курсора, перемещаемого с помощью клавишь управления курсором. Должна обеспечиваться возможность изменения цвета линий в процессе рисования.
C++ Определить произведение отрицательных элементов матрицы и их количество http://www.cyberforum.ru/cpp-beginners/thread16031.html
Заданы две матрицы А={aij} размерности n*n и B={bij} размерности n*g. Для каждой из них определить произведение отрицательных элементов и их количество. Упорядочить элементы строк в матрице А и столбцов матрицы В в порядке роста, линейной быстрой сортировкой. вот кое -что написала, а как дальше незнаю:sorry: #include <iostream.h> #include <math.h> #include <conio.h> #define n 5...
C++ Как научиться программировать на языке С++; Аллен Р., Глассборо Ф. У кого нибудь есть "Как научиться программировать на языке С++; Аллен Р., Глассборо Ф." в электронном формате? подробнее

Показать сообщение отдельно
kapriz0n
20 / 20 / 2
Регистрация: 26.10.2008
Сообщений: 77

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

20.11.2008, 15:44. Просмотров 1411. Ответов 1
Метки (Все метки)

Есть задачка звучит так:
Вы являетесь владельцем склада металлических изделий и нуждаетесь в инвентаризации, которая сказала бы вам, сколько всего различных изделий вы имеете, какое количество каждого Жиз них у вас на руках и стоимость каждого из них. Напишите программу, которая бы создавала файл произвольного доступа «hardware.dat» на сотню пустых записей, позволяла бы вводить данные по каждому изделию, давала бы вам возможность получать список всех изделий, удалять записи по изделиям, которых у вас уже нет, и позволяла бы обновлять любую информацию в файле.
Задача не сложная,я не могу реализовать удаление, может кто подскажет алгоритм хоть буду очень признателен Задача написана, но само удаление нет(там наработка выделена красным, она не доделана просто мысли были) написание программы следующее:
Код
#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 секунд
У администрации прошу прощение # нажимал в редакторе но чтото не зароботало.. И вообще можно ведь было зделать и подсказки на кнопочках в редакторе...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru