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

Работа с двоичными файлами, организация ввода-вывода структурированной информации/ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать конструктор http://www.cyberforum.ru/cpp-beginners/thread1092770.html
#include <stdio.h> #include <conio.h> #include <windows.h> #include "Collection.h" void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251);
C++ написать программу для вычисления значений функции F(x) для х, изменяющегося в интервале от A до B с шагом DEL. С использованием оператора цикла с предусловием написать программу для вычисления значений функции F(x) для х, изменяющегося в интервале от A до B с шагом DEL. F=a*x*x+b/c при x>1 и с!=0... http://www.cyberforum.ru/cpp-beginners/thread1092766.html
Требуется найти наибольший общий делитель двух чисел Фибоначчи. C++
ЗАДАЧА №384 Числа Фибоначчи - 3 (Время: 1 сек. Память: 16 Мб Сложность: 52%) Последовательностью Фибоначчи называется последовательность чисел F0 = 0, F1 = 1, … , Fk = Fk-1 + Fk-2 (k > 1)....
Собственные манипуляторы C++
Не компиллируется программа в DevC++. Написать программу с двумя своими манипуляторами. Один выводит сообщение, другой устанавливает шестнадцатеричный вывод и ширину поля 10. Программа выглядит вот...
C++ В массиве, все элементы которого различны, найти и удалить n наименьших элементов, «поджимая» массив к началу и сохраняя порядок следования C/C++ http://www.cyberforum.ru/cpp-beginners/thread1092758.html
В массиве А(l), все элементы которого различны, найти и удалить n наименьших элементов, «поджимая» массив к началу и сохраняя порядок следования остальных элементов.
C++ Транспозиция двумерного массива Мне надо поменять местами строку с столбцом,транспозиция!Помогите! подробнее

Показать сообщение отдельно
funduk17
40 / 3 / 0
Регистрация: 20.05.2013
Сообщений: 67

Работа с двоичными файлами, организация ввода-вывода структурированной информации/ - C++

09.02.2014, 20:38. Просмотров 461. Ответов 4
Метки (Все метки)

Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление элементов в соответствии со своим вариантом, используя для поиска удаляе-мых или добавляемых элементов функцию. Формирование, печать, добавление и удаление элементов оформить в виде функций. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций вво-да/вывода.
12. Структура "Музыкальный диск":
- название;
- автор;
- продолжительность;
- цена.
Удалить первый элемент с заданной продолжительностью, добавить 2 эле-мента после элемента с заданным номером.
Никогда прежде не работал с файлами в СИ, голова кипит, а просто искать информацию по теме и пытаться её понять так сразу не выходит. Прошу помочь, желательно с объяснениями.
Попытка моей работы:
ЗЫ: функция buildingFile не моя, нашёл в подобной работе, но полностью в ней разобраться не смог, по этому обращаюсь к вам.
C++
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
#include <iostream>
#include <stdio.h>
using namespace std;
 
struct music
{
 char name[30];
 char avtor[30];
 double time;
 double price;
};
 
void GetData();
void ShowData();
 
FILE *fp;
char *filename={"ms.txt"};
int arrSize=0;
music ms;
double iTime;
 
void buildingFile() 
{
    if ((fp = fopen( filename, "wb")) == NULL ) 
    {
      cout << "Error writing in file";
        exit (1);
    }
   clrscr();
   char choice;
   do {
      GetData();
      arrSize++;
    cout << "Enter the next one more record? (y/n)";
      cin >> choice;
   } while (choice == 'y');
 
    fclose(fp);
}
 
void GetData(music *M,int n) //ввод
{
 if ((fp = fopen(filename, "ab")) == NULL ) 
 {
 cout << "Error adding file";
 exit (1);
 }
 for(int i=0;i<n;i++)
 {
 cout<<"Name: "; cin>>M[i].name;
 cout<<"Avtor: "; cin>>M[i].avtor;
 cout<<"Time: "; cin>>M[i].time;
 cout<<"Price: "; cin>>M[i].price;
 cout<<endl;
 }     
}
 
void ShowData(music *M,int n) //Вывод
{
 for(int i=0;i<n;i++)
 {
 cout<<M[i].name<<endl;
 cout<<M[i].avtor<<endl;
 cout<<M[i].time<<endl;
 cout<<M[i].price<<endl;
 cout<<endl;
 }     
}
 
int main() //Главная функция
{
 int n; cout<<"Vvedite N: "; cin>>n;
 music *M=new music[n];
 GetData(M,n);
 ShowData(M,n);
 delete [] M;
 system("PAUSE");
 return 0;    
}
Добавлено через 2 часа 11 минут
Тема актуальна!
Смог кое что наработать, подскажите как сделать добавление 2 элемента после элемента с заданным номером? И желательно в структуре использовать не string, а char, что-бы можно было прописывать несколько слов, но тогда возникают сложности!
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct music
{
   string name;
   string autor;
   int time;
   int price;
};
void ShowData(music *M, int N)
{
   for (int i = 0; i < N; i++)
    {
     cout << M[i].name << endl;
     cout << M[i].autor << endl;
     cout << M[i].time << endl;
     cout << M[i].price << endl;
     cout << endl;
    }}
void GetData(music *M,int N)
{for (int i=0; i < N; i++)
    {cout << "NAZVANIE: "; cin >> M[i].name;
        cout << "AUTOR: "; cin >> M[i].autor;
       cout << "TIME: "; cin >> M[i].time;
        cout << "PRICE: "; cin >> M[i].price;
        cout << endl;
    }}
void DeleteElem(int itime,music *M, int &N)
{
   for (int i = 0; i < N; i++)
    {if(M[i].time==itime)
         {for (int k = i; k < N-1; k++)//ñäâèã ГўГ±ГҐГµ ýëåìåГ*òîâ Г*Г* îäèГ*
             {M[k].name=M[k+1].name;
                M[k].autor=M[k+1].autor;
                M[k].time=M[k+1].time;
                M[k].price=M[k+1].price; }
             N--; // êîëè÷åñòâî ýëåìåГ*òîâ óìåГ*üøèëîñü
             i--; // Г*Г*äî Г±Г*îâГ* ïðîâåðèòü, Г·ГІГ® òåïåðü Г*Г* i-îì ìåñòå.
         }}}
void StoreData(ofstream &out,music *M, int N)
{for (int i = 0; i < N; i++)
   {out << M[i].name << endl;
     out << M[i].autor << endl;
     out << M[i].time << endl;
     out << M[i].price << endl;
     out << endl;} }
int main()
{int N; cout << "Vvedite  Kollichestvo zapisey: "; cin >> N;
    music *M = new music[N];
    GetData(M, N);
    ofstream out("file.txt");
    StoreData(out,M, N);
    out.close();
    int time=60;
    DeleteElem(time,M,N);
    ShowData(M, N); 
    delete [] M;
    system("PAUSE");
    return 0; 
}
Добавлено через 43 минуты
Неужели никто не может помочь с функцией добавления?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru