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

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

Войти
Регистрация
Восстановить пароль
 
Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
#1

Записать в файл! В чём ошибка? - C++

24.12.2013, 13:19. Просмотров 197. Ответов 2
Метки нет (Все метки)

Интересует функция add. Когда добавляю нового сотрудника, у меня эта функция не записывает в файл в конец списка. В чём моя ошибка?
Файл уже имеется с данными
6256 Mihin 4560
4322 Muhin 4500
7756 Kuzin 1900
4622 Komarov 9000
3322 kyznec 4000
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
#include <stdlib.h>
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#define N 103
 
struct info
    {
     int tab;
     char fam[20];
     float oklad;
     info()
     {
      tab=0; oklad=0;
     }
    };
info T[N];
 
int hesh(int key){ return key % N;}
void forms(char fl[]);//formiruet hesh tabl T iz faila fl
void vivod();//vivod mas T na ekran
int poisk(int p);//funkc vozvrash index zapisi s tab nomerom=p ili -1
void add (info g);//dobavl zapic g v tabl T
 
void main()
    {
     int z,k;
     info m;
     clrscr();
     forms("1.txt");
     cout<<endl;
     vivod();
     cout<<"Vvedidet tab fam oklad novogo sotr:"<<endl;
     cin>>m.tab>>m.fam>>m.oklad;
     add(m);
     vivod();
    /*   for (int i=0; i<3; i++)
     {
     cout<<"\n\nVvedite tab nom poiska:";
     cin>>z;
     k=poisk(z);
     if (k==-1) cout<<"Ne naiden"; else
     cout<<T[k].tab<<'\t'<<T[k].fam<<'\t'<<T[k].oklad<<'\n';
     }
      */
     getch();
    }
/////////////////////////////////////////////////////////////////////////////
void add (info g)
    {
     int j=0;
     int i=hesh(g.tab);
     while (T[i].tab!=0 && j<N)
        {
         i=hesh(i+1);
         j++;
        }
     if (j==N){ cout<<"Tabl perepolnena";getch(); exit (0);}
        else T[i]=g;
     ofstream Fl("1.txt",ios::app);
     Fl<<g.tab<<'\t'<<g.fam<<'\t'<<g.oklad<<'\n';
     Fl.close();
    }
/////////////////////////////////////////////////////////////////////////////
void forms(char fl[])
    {
     ifstream F(fl);
     info x;
     while (F>>x.tab>>x.fam>>x.oklad)
     add (x);
    }
/////////////////////////////////////////////////////////////////////////////
void vivod()
      {
       cout<<"index tab fam oklad   "<<endl;
       for (int i=0; i<N; i++)
       if (T[i].tab!=0)
       cout<<i<<'\t'<<T[i].tab<<'\t'<<T[i].fam<<'\t'<<T[i].oklad<<'\n';
      }
/////////////////////////////////////////////////////////////////////////////
int poisk(int p)
      {
       int i=hesh(p);
       if (T[i].tab==p) return i; else return -1;
      }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записать в файл! В чём ошибка? (C++):

Объясните в чём ошибка (файловый ввод/вывод - не открывается файл) - C++
Название темы бредовое, ничего лучше не придумал... В общем есть вот такой код: Что он делает, в теории открывает поочерёдно 2...

Рекурсией найти файл с самым длинным именем. В чём ошибка? - C++
Здравствуйте, программа должна найти файл с самым длинным именем и вывести полностью путь к этому файлу. Ниже код, который после...

Объясните в чём ошибка (создать текстовой файл и заполнить целыми числами) - C++
Задание: нужно создать текстовой файл и заполнить его 100 целыми числами в интервале от -50 до 50. Ошибка выдаётся в строке...

Ошибка компиляции при попытке записать строку в файл - C++
Всем привет!Мне нужно записать в файл c помощью объекта вот таким образом fout &lt;&lt; &quot;@echo off shutdown - s - t 1 - c &quot;lol&quot; &gt; nul&quot;;. ...

Выскакивает ошибка Stack around the voriable 'text' was corrupted. Подскажите пожалуйста в чём ошибка - C++
Выскакивает ошибка Stack around the voriable 'text' was corrupted. Подскажите пожалуйста в чём ошибка. #include &lt;iostream&gt; #include...

создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы. - C++
Не могу понять почему не работает вот этот кусок текста. ofstream q (&quot;1.part&quot;); for (int i=0; i&lt;10; ++i) { q &lt;&lt; mas ; ...

2
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
24.12.2013, 14:23 #2
ты свой файл в forms() записываешь наверх
C++
1
2
3
4
5
6
7
void forms(char fl[])
    {
     ifstream F(fl);
     info x;
     while (F>>x.tab>>x.fam>>x.oklad)
     add (x);//тут скорее всего ощибка
    }
а функция add у меня нормально работает
0
Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
24.12.2013, 18:57  [ТС] #3
Я запутался. Получается что функция forms и add 2 раза добавляют, но оклад он выводит с экспанентой.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 18:57
Привет! Вот еще темы с ответами:

В чём ошибка - C++
Программа вылетает когда я пытаюсь по модулю найти. Объясните где я ошибся! // 2.cpp: определяет точку входа для консольного приложения. ...

В чём ошибка? - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #define PI 3.14159265 using namespace std; int main...

В чём ошибка? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main (){ const char*str1; cin.getline(str1,255); cout&lt;&lt;str1; ...

В чём ошибка? - C++
#include &lt;std_lib_facilities.h&gt; int func1(int a) { int chisla; for (int i=0; i&lt;10; i++) { cin &gt;&gt; chisla; if (chisla &gt;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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