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

Поиск данных в файле по ключевому полю - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ одномерный массив http://www.cyberforum.ru/cpp-beginners/thread133806.html
Число элементов массива задаётся пользователем. Элементы могут заполняться как вручную, так и случайным образом. Найти сумму элементов массива, расположенных между элементами с минимальным и максимальным значением ( в сумму включить также оба этих элемента).
C++ Использование правил CLIPS в C++ Хочу использовать базу знаний написанную на языке CLIPS в программе на C++. Скачал нужные заголовочные файлы, подключил в проекте, в главном модуле написал #include "clips.h" Отлично проходит компиляция и билд. Теперь загвоздка. Не могу понять как использовать саму базу знаний из файла *.clp. Допустим есть в базе правило: (defrule MyRule (Myfact1 1) (Myfact2 1) ... http://www.cyberforum.ru/cpp-beginners/thread133798.html
C++ Обязательно ли освобождать память?
Обязательно ли освобождать память, если та область которая выделялась не использовалась в процессе работы программы? Просто, в такой ситуации, оператор delete не особождает, а выдаёт ошибку.
C++ Посчитать столбец ненулевых элементов
Есть разреженная матрица, которая хранится в виде цепочки ненулевых элементов со строчным индексированием. Т.е. read_matrix(){ FILE *p; printf("Input filename:\n"); scanf("%s",data); p=fopen(data,"r+"); for (i=0;i<10;i++) { for(j=0;j<10;j++)
C++ Исправление программного кода http://www.cyberforum.ru/cpp-beginners/thread133785.html
Писал программу на С++, но никак не могу понять как исправить задание: Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе содержат: - номер автобуса;- фамилию и инициалы водителя; - номер маршрута; - признак того, где находится автобус – на маршруте или в парке. Программа должна обеспечивать: начальное формирование...
C++ Определить, образуют ли элементы целочисленного массива A (n) неубывающую последовательность Добрый вечер.очень нужна помощь.... Написать программу, определяющую, образуют ли элементы целочисленного массива A(n) неубывающую последовательность. Значение n следует вводить в диалоговом режиме, память под массив следует распределить динамически. Написать Функции: 1. Заполения массива случайными числами в диапазоне от -50 до +50. 2. Вывода одномерного массива. 3. Определения, образуют... подробнее

Показать сообщение отдельно
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
24.05.2010, 23:36  [ТС]     Поиск данных в файле по ключевому полю
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
105
106
107
108
109
110
111
112
113
114
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
 
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <conio.h>
 
typedef struct  
{
    char name[100];
    char avtor[50];
    char tematika[100];
    int  godvipuska[10];
    char ISBN[100];
    char izdatelstvo[100];
}BOOK, *PBOOK;
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
FILE* fil = fopen("book txt", "r+t");
{
while( !feof(fil));
{
    fread(&book, sizeof(book), 1, fil);
}
 
fclouse(fil);
}
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3], book;
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
                        scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
                        scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
                        scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
                        scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
                        scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
                    scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %i %s %s \n", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %i %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
    
FILE* fil = fopen("book txt", "w+t");
while(!feof(fil)){
 
fread(&book, sizeof(book), 1, fil); //Выводиде 
 
}
 
fclose(fil);
 
    _getch();
      return 0;
}
Всеравно идет ошибка при компиляции
Ошибка 2 error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 37

Добавлено через 4 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Последний пост:
1) К какой функции относятся строки 33-41? Правильно ни к какой, на них компилятор и ругается.
А это как я поняла, выше, это теоретически должен был быть поиск данных в файле по ключевому, полю, но я вроде напутала что то

Добавлено через 6 минут
А вообще так, норм прога вот, но в ней надо поиск сделать, и это не получается и в этом главная пролема
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
105
106
107
108
109
110
111
112
113
114
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
 
struct  BOOK
{
    char *name;
    char *avtor;
    char *tematika;
    int   *godvipuska;
    char *ISBN;
    char *izdatelstvo;
};
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
 
        
 
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3];
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
            k[i].name = new char [Amax];
            scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
            k[i].avtor = new char [Amax];
            scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
            k[i].tematika = new char [Amax];
            scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
            k[i].godvipuska = new int [Amax];
            scanf_s("%d",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
            k[i].ISBN = new char [Amax];
            scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
            k[i].izdatelstvo = new char [Amax];
            scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %d %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %d %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
 
 
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
    _getch();
      return 0;
}
Добавлено через 1 час 58 минут
подскажите как можно сделать поиск в файле по ключевому полю, или для начала, как можно из 1ого файла в другой строки перенести. т е скопировать
 
Текущее время: 12:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru