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

Хеш функция - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Транслитерировать! код есть, нужно найти ошибку http://www.cyberforum.ru/cpp-beginners/thread1053166.html
Транслитерировать текстовый файл в латиницу. Помогите найти ошибку, программа не все буквы транслитерирует. #include <iostream> #include <math.h> #include <locale.h> #include <string.h> using namespace std; int main() {
C++ Работа с файлами Записать в файл N действительных чисел. Найти разность первой и последней компонент файла. http://www.cyberforum.ru/cpp-beginners/thread1053160.html
Разбиение проекта на файлы C++
Нужно разбить проект на файлы main.cpp, struct.cpp(здесь функции), struct.h(библиотеки, структура, прототипы функций). Сам пробовал - постоянно проблемы с линкером. Самостоятельно решения не смог найти. Прошу помочь. Сам проект (работает корректно): #include "stdafx.h" #include <windows.h> #include <string> #include <iostream> #include <fstream>
скажите как записать C++
if ((a=b) and (b<>c)) or ((b=c) and (c<>a)) or ((a=c) and (c<>b)) then writeln('Данный треугольник равнобедренный') else writeln('Данный треугольник не равнобедренный'); readln;
C++ Описать структуру с именем STUDENT http://www.cyberforum.ru/cpp-beginners/thread1053138.html
1. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (массив из пяти элементов). 2. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту; вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя...
C++ Вычислить значение функции заданной рядом Задачи. 1. Вычислить значение функции заданной рядом задания перепечатывайте на форум одна тема - одна задача читайте правила форума подробнее

Показать сообщение отдельно
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
24.12.2013, 07:45     Хеш функция
Проблема в записи в файл в функции add. Эта функция записывает с копированием пред информации, но добавленную строчку добавляет в конец. Мб это файл уже открыт и ещё раз открывается? В общем мне нужно чтобы введённые данные нового сотрудника записывались в конец файла. Объясните ошибку.
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
#include <stdlib.h>
#include <fstream.h>
#include <conio.h>
#define N 106
 
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");
    // Fl<<T[i].tab<<'\t'<<T[i].fam<<'\t'<<T[i].oklad<<'\n';
    }
/////////////////////////////////////////////////////////////////////////////
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;
      }
Добавлено через 2 часа 18 минут
Up...

Добавлено через 7 часов 31 минуту
Up...

Добавлено через 9 часов 27 минут
Up...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru