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

Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Начинающий фараон хочет показать пирамиду http://www.cyberforum.ru/cpp-beginners/thread1733724.html
Добрый день, уважаемые форумчане. Я написал программу, которая строит пирамиду с числом ярусов, которое указывает пользователь. Не мог ли я где-то сократить себе дорогу? Может ли данная задача решаться одной или двумя переменными вместо трёх, как у меня? (Работал в CB 16.01) #include <iostream> using namespace std;
C++ В заданной матрице определить количество строк , не содержащих ни одного нулевого элемента Данная целочисленная прямоугольная матрица . Определить количество строк , не содержащих ни одного нулевого элемента. http://www.cyberforum.ru/cpp-beginners/thread1733698.html
C++ Ввод - Вывод объекта в файл
Программа вылетает при запуске, не буду скидывать весь код, он достаточно большой, функция save сохраняет объект в файл, после ее добавления все работало, но когда добавил функцию get_base (), которая должна считывать объект с файла, все крашнулось. Person prs(0) - конструктор обнуляющий обьект, persons - вектор состоящий из обьектов Persons. persons.push_back(prs); - добавления обьекта в вектор....
Работа с функцией C++
C++ Определить является ли список симметричным http://www.cyberforum.ru/cpp-beginners/thread1733666.html
Дан список из n целых чисел {a}_{1},{a}_{2},...,{a}_{n}.Определить является ли он симметричным.
C++ Работа с использованием рекурсивной функции Перепечатывайте задание на форум. подробнее

Показать сообщение отдельно
ConWor
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 6
13.05.2016, 14:09     Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры)
Задача:
Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, выполнить задание по своему варианту. Структура имеет вид: название издания, газеты или журнала, стоимость одного экземпляра, количество экземпляров в год. Вывести на печать информацию о самом дешевом издании.

Код:
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
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
#include <string.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
struct paper                //Объявление структуы
{
    string name;
    int cost; 
    int number; 
}; 
 
struct paper p; 
void input();
void print();
void add();
 
main()
{
char c;
while (true)                                    // Меню
{
    puts("1. New");
    puts("2. Print");
    puts("3. Add");
    puts("0. Exit");
    c = getch();
    switch(c)
    {
        case '1': input();break;
        case '2': print();break;
        case '3': add();break;
        case '0': return 0;
        default: puts("wrong key");
    }
}
return 0;
}
 
void input()
{
    char ch;
    do
    {
        cout << "Vvedite nazvanie"; cin >> p.name;
        cout << "Vvedite cenu"; cin >> p.cost;
        cout << "Vvedite tiraj"; cin >> p.number;
        ofstream out("1.txt",ios::binary|ios::out);
        out.write((char*)&p,sizeof p); //Записали всю структуру целиком
        out.close();
        cout << "Vse? y/n";
        cin >> ch;
    }
    while (ch != 'y');
}
 
void print ()
{
    ifstream in("1.txt",ios::binary|ios::in);
    in.read((char*)&p,sizeof p); //Читаем структуру целиком сразу
    in.close();
    cout << p.name << p.cost << p.number;
    getch();
}
 
void add()
{   
    char ch;
    ofstream add("1.txt",ios::binary|ios::out|ios::app);
    do
    {
        cout << "\n tovar";
        cin >> p.name;
        cout << "\n cena";
        cin >> p.cost;
        cout << "\n kolichestvo";
        cin >> p.number;
        add.write((char*)&p,sizeof p); //Записали всю структуру целиком
        cout << "\n Exit y/n?";
        ch = getch();
    }
    while(ch != 'y');
    add.close();
}
 
[B]Проблема:[/B]
Функция add полностью перезаписывает файл, а не добавляет в него новые данные. Вот пример функции, приведенный в лекциях:
 
void app(FILE *tf)
{char ch;
 tf=fopen("file1.dat","ab"); // открытие бинарного файла для добавления
 clrscr();
 printf("\n Ввод товаров \n");
 do
 { printf("\n название: "); scanf("%s", t1.name);
  printf(" цена: "); scanf("%f",&t1.c);
  printf(" количество: "); scanf("%d",&t1.kol);
  fwrite(&t1,sizeof(t1),1,tf);
  printf(" Закончить? y/n ");
  ch=getch();
 }
Пример на С, я пытаюсь его переписать на С++. Помогите решить пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru