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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ManGysITI
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 60
#1

Работа с файлом - C++

07.12.2009, 03:48. Просмотров 577. Ответов 7
Метки нет (Все метки)

Помогите доделать программу.
Необходимо создать файл структуры: фамилия абонентов, год установки телефона, номер телефона.

Программу написал, все нормально записывается и считывается, но не знаю как сделать условия:
- по вводимой с клавиатуры фамилии абонента вывести номер телефона;
- определить количество установленных телефонов с ХХХХ года (год вводится с клавиатуры).
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
//---------------------------------------------------------------------------
#pragma hdrstop
#include <tchar.h>
#pragma argsused
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define bool int
#define true 1
#define false 0
 
struct ATS
{
   char fio[30];
   char phone[20];
   char date[11];
};
 
void Add();
void wr();
void poisk();
void tel();
 
int main()
{
   clrscr();
   while (true)
   {
      char c;
      cout << "Viberite operaciu: \n";
      cout << "\t-> 1. Dobavit v bazu \n";
      cout << "\t-> 2. Prosmotr bazu\n";
      cout << "\t-> 3. Vihod \n";
      cout << "\t-> 4. poisk abonenta \n";
      cout << "\t-> 5. ystanovlena telefonov \n";
      cout << "Operaciya: "; cin >> c;
      cin.ignore();
      cin.clear();
 
   switch(c)
      {
      case '1': Add();   break;
      case '2': wr();    break;
      case '3': exit(0); break;
      case '4': poisk(); break;
      case '5': tel(); break;
      }
   }
}
 
void Add()
{
   FILE* F = fopen("Ats.txt", "rt+"); // open ats
   bool f  = false; // true - new file
 
   if (!F)
   {
      F = fopen("Ats.txt", "wt+");
      f = true;
   }
 
fseek(F, 0, SEEK_END);
ATS ats;
cout << "Vvedite FIO:   ";
cin.getline(ats.fio, sizeof(ats.fio));
 
cout << "Vvedite nomer: ";
cin.getline(ats.phone, sizeof(ats.phone));
 
cout << "Vvedite god:  ";
cin.getline(ats.date, sizeof(ats.date));
 
   // zapolnenie fila
   if (!f) fputc('\n', F);
   fputs(ats.fio, F);        fputc('\n', F); //zapis stroki v file
   fputs(ats.phone, F);  fputc('\n', F);
   fputs(ats.date,F);      fputc('\n', F);
 
   fclose(F); // vihod iz file
}
 
void wr()
{
     char read_str[50], *result;
     FILE* f = fopen("Ats.txt", "r");
 
     while (!feof(f))
     {
          result=fgets(read_str,20, f);
          cout << read_str;
     }
}
void poisk()
{
}
void tel()
{
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 03:48     Работа с файлом
Посмотрите здесь:

работа с файлом) C++
Работа с файлом C++
Работа с файлом C++
C++ c++ работа с файлом
Работа с файлом C++
C++ C++. Работа с файлом
Работа с файлом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.12.2009, 04:04     Работа с файлом #2
Цитата Сообщение от ManGysITI Посмотреть сообщение
- по вводимой с клавиатуры фамилии абонента вывести номер телефона;
Вводишь фамилию абонента, жмешь ентер, в цикле сравниваешь введенную фамилию с каждым полем fio структуры ATS


Цитата Сообщение от ManGysITI Посмотреть сообщение
- определить количество установленных телефонов с ХХХХ года (год вводится с клавиатуры).
В структуру ATS, добавь поле year. В цикле проверяешь условие (введенная_дата < массив_структур[индекс].year) если истино - инкриментируешь счетчик.
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.12.2009, 04:05     Работа с файлом #3
Цитата Сообщение от ManGysITI Посмотреть сообщение
#define bool int
#define true 1
#define false 0
какой смысл этих строк? В С/С++ по умолчанию 0 - false, все остальное - true

Обычный поиск
C++
1
2
if(!strcmp(ats[i].fio, input_fio))
    std::cout<<ats[i].number;
vikaplys
0 / 0 / 1
Регистрация: 19.11.2009
Сообщений: 29
09.12.2009, 10:57     Работа с файлом #4
а разве структура при чтении из файла сохраняется?
Он же произвел запись в файл, а там надо к примеру искать совпадение фамилии и выводить следующую строку с номером или я не права.
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
09.12.2009, 19:54     Работа с файлом #5
vikaplys, не сохраняется. Я с расчетом на то, что раз у ManGysITI есть какой-то код, то он додумается самостоятельно сделать массив структур
ManGysITI
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 60
10.12.2009, 17:14  [ТС]     Работа с файлом #6
Что-то я совсем запутался, все же как организовать поиск и вывод нужной мне информации?
ManGysITI
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 60
11.12.2009, 02:54  [ТС]     Работа с файлом #7
мне надо считать из файла в массив структур или как ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2009, 08:09     Работа с файлом
Еще ссылки по теме:

C++ Работа с файлом в С++
Работа с файлом C++
C++ Работа с файлом
C++ Работа с файлом
C++ работа с файлом

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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
11.12.2009, 08:09     Работа с файлом #8
ManGysITI, да
Yandex
Объявления
11.12.2009, 08:09     Работа с файлом
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru