Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631

Ошибка в программе - поиск с хеш функцией

18.12.2011, 06:35. Показов 1961. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот сейчас есть рабочая программа которая создает в структуру данные. Но у нее поиск без хеш-функции... а мне по заданию надо чтоб был поиск с хеш функцией, я нашел в нете пару хеш функций, вот такую выбрал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// хеш-функция для символьной строки.
// Возвращает значение в диапазоне от 0 до 100
int HF(char *key)
{
  int len = strlen(key), hashf = 0;
 
  // если длина ключа равна 0 или 1, возвратить key[0].
  // иначе сложить первый и последний символ
  if (len <= 1)
    hashf = key[0];
  else
    hashf = key[0] + key[len-1];
 
  return hashf % 101;
}
но она работает с типом чар...
Я внес ее в событие нажатие первой кнопки где у меня происходит запись введеных людей, внес вызов ее...
но при вызове выдает такие ошибки, как можно исправить их?? строку где ошибка выделана красным цветом в коде
[HIGHLIGHT="cpp"][BCC32 Error] Unit1.cpp(104): E2034 Cannot convert 'UnicodeString' to 'char *'
[BCC32 Error] Unit1.cpp(104): E2342 Type mismatch in parameter 'key' (wanted 'char *', got 'UnicodeString')
Вот код файла заголовка где прототип функции
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
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <FileCtrl.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TGroupBox *GroupBox1;
        TMemo *Spisok;
        TDateTimePicker *DateTimePicker1;
        TLabeledEdit *FIO1;
        TDateTimePicker *DateTimePicker2;
        TButton *Button1;
        TGroupBox *GroupBox2;
        TLabeledEdit *FIO2;
        TButton *Button2;
        TLabel *Label1;
        TLabel *Count;
        TLabel *Label2;
        TLabel *Rec;
        TMemo *db;
        TMemo *Search;
        TMemo *Memo1;
        TMemo *buf;
        TFileListBox *FileListBox1;
        TButton *Button3;
        void __fastcall SaveRec(AnsiString Dname,AnsiString Fname,AnsiString time);
        void __fastcall SearchRec(AnsiString Dname);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall Button3Click(TObject *Sender);
        int __fastcall HF(char *key);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Вот код срр
//---------------------------------------------------------------------------
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <vcl.h>
#pragma hdrstop
#include <io.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
struct man
{
        AnsiString fio;
        AnsiString date;
        AnsiString time;
} m[1000];
 
int C = 0;
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SearchRec(AnsiString Dname) // ищет сколько раз и когда отмечался человек
{
        if (DirectoryExists("List\\" + Dname))   // проверка. если человек есть в базе - то у него должна быть папка в List. если она есть то выполнять следующее
        {
                Button3->Show(); // показать кнопку "подробнее"
                FileListBox1->Mask = "List\\" + Dname + "\\*.*"; // меняем маску  ФайлЛистБокса для того чтобы попасть в каталок человека. Dname - это сокращенно DirName . тоесть каждый новий человек. будет иметь свою папку в List. а в ней будут его данные - в какой день и в какое время был отмечен.
                for (int i=0,k=0; i < FileListBox1->Items->Count; i++) // начало цикла от І=0 до количества файлов в папке Dname
                {
                        Search->Lines->Add("Дата: " + FileListBox1->Items->Strings[i]); // выводим дату
                        buf->Lines->LoadFromFile("List\\" + Dname + "\\" + FileListBox1->Items->Strings[i]); // загружаем в буфер  файл даты
                        Search->Lines->Add("Посещений: " + (AnsiString)buf->Lines->Count); // выводим количество посещений
                        k += buf->Lines->Count;//cчетчик  общего количества посещений
                        Search->Lines->Add(Dname);
                        Search->Lines->Add(buf->Lines->Text);//вывод всего времени в определенный день
                        Search->Lines->Delete(Search->Lines->Count-1); //удаление предпоследней строки
                        Search->Lines->Add("=================================");
                        Count->Caption = k;  //обновляем общий счетчик
                }
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SaveRec(AnsiString Dname,AnsiString Fname,AnsiString time)
{
        CreateDir("List\\" + Dname);
        Fname = "List\\" + Dname + "\\" + Fname;
        buf->Clear();
        if (access(Fname.c_str(),0) == 0)
        {
                buf->Lines->LoadFromFile(Fname);
                buf->Lines->Add(time);
                buf->Lines->SaveToFile(Fname);
        }
        else
        {
                buf->Lines->Add(time);
                buf->Lines->SaveToFile(Fname);
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        MkDir("List");
        if ((access("List\\db.txt",0)) == 0)
        {
                db->Lines->LoadFromFile("List\\db.txt"); // загрузка в мемо строк из файла
                Rec->Caption = db->Lines->Count/3; // отображение в лябель количества строк в меме
                for (int i=0,j=0; j < db->Lines->Count;i++,j+=3)// цикл по строкам мемы
                {
                        m[i].fio = db->Lines->Strings[j];// присвоение элементам структуры
                        m[i].date = db->Lines->Strings[j+1]; // значения строк мемо
                        m[i].time = db->Lines->Strings[j+2];
                        Spisok->Lines->Add("Ф.И.О: " + m[i].fio); // добавление в другое мемо
                        Spisok->Lines->Add("Дата: " + m[i].date);  // элементов структуры
                        Spisok->Lines->Add("Время: " + m[i].time);
                        Spisok->Lines->Add("=================================");
                }
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (FIO1->Text == "") // LabeledEdit если пуст
    ShowMessage("Введите Ф.И.О!"); // показ сообщения
  else // иначе
  {
    m[C].fio = FIO1->Text; // присваиваем элементу структуры текст LabeledEdit
    m[C].date = DateTimePicker1->Date.DateString(); // присваиваем элементу структуры значение
    m[C].time = DateTimePicker2->Time.TimeString(); // присваиваем элементу структуры значение
    Spisok->Lines->Add("Ф.И.О: " + m[C].fio); // добавляем строки в мемо
    Spisok->Lines->Add("Дата: " + m[C].date); // добавляем строки в мемо
    Spisok->Lines->Add("Время: " + m[C].time); // добавляем строки в мемо
    Spisok->Lines->Add("=================================");
    db->Lines->Add(FIO1->Text); // добавляем строки в мемо
    db->Lines->Add(DateTimePicker1->Date.DateString()); // добавляем строки в мемо
    db->Lines->Add(DateTimePicker2->Time.TimeString()); // добавляем строки в мемо
  // добавляем строки в мемо
    db->Lines->SaveToFile("List\\db.txt"); // сохраняем мемо в файл
    SaveRec(m[C].fio,m[C].date,m[C].time); // самописная функция
    [COLOR="Red"]Memo1->Lines=HF(FIO1->Text);[/COLOR] //тут ошибка
    FIO1->Clear(); // очищаем мему
  }
}
//---------------------------------------------------------------------------
int __fastcall TForm1::HF(char *key)
{
  int len = strlen(key), hashf = 0;
 
  // если длина ключа равна 0 или 1, возвратить key[0].
  // иначе сложить первый и последний символ
  if (len <= 1)
    hashf = key[0];
  else
    hashf = key[0] + key[len-1];
 
  return hashf % 101;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Button3->Hide(); // прячем кнопку
  Count->Caption = 0; // сбрасываем значение в метке в 0
  Search->Clear(); // очищаем еще одно мемо
  if (FIO2->Text == "") // если LabeledEdit пустой
    ShowMessage("Введите Ф.И.О!"); // показываем сообщение
  else // иначе
    SearchRec(FIO2->Text); // самописная функция
}
//-----------[HIGHLIGHT="SQL"]----------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  if (Button3->Caption == "Подробно=>") // если заголовок третьей кнопки
  {
    Form1->ClientWidth = 730; // ширина клентской части формы
    Search->Show(); // показать мему
    Button3->Caption = "<=Скрыть"; // надпись на третьей кнопке
  }
  else // иначе
  {
    Form1->ClientWidth = 500; // ширина клентской части формы
    Search->Hide(); // спрятать мему
    Button[/HIGHLIGHT]3->Caption = "Подробно=>"; // надпись на третьей кнопке
  }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2011, 06:35
Ответы с готовыми решениями:

ошибка программе с функцией
program six; uses crt; var n,a,p,s:integer; function pro (n:longint):integer; begin p:=1; while n&gt;0 do begin a:=n mod 10; ...

Ошибка в программе с графиком и функцией
Вот собственно сама программа, пишет что неизвестное имя setcolor =( Program grafik; uses crt,graphabc; var...

Хеш таблица с функцией (метод цепочек)
1) Не смотрите на хеш функцию, она наитупейшая, я еще над ней не работал. 2)Метод цепочек заключается в том, если в ячейке массива есть...

8
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.12.2011, 07:25
C++
1
2
3
4
5
6
7
8
// если у вас юникодный билдер, судя по всему
  char *ch = AnsiString(FIO1->Text).c_str();
  [COLOR="Red"]Memo1->Lines->Add(HF(ch);[/COLOR] //тут ошибка
  FIO1->Clear(); // очищаем мему
// и для начала в коде своем разберитесь,
// потому что TLabeledEdit *FIO1;
// т.е., FIO1 - это у вас TLabeledEdit
// а не какое-то там муму ... : FIO1->Clear(); // очищаем мему
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
18.12.2011, 08:08  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
// и для начала в коде своем разберитесь,
// потому что TLabeledEdit *FIO1;
// т.е., FIO1 - это у вас TLabeledEdit
// а не какое-то там муму ... : FIO1->Clear(); // очищаем мему
разберитесь в том смысле что комментарий на строку FIO1->Clear(); написан очищаем мему а не LabeledEdit?

Добавлено через 37 минут
C++
1
    Memo1->Lines=HF(exp);
функция HF возвращает целое число типа int, а в Lines хранятся типа TString? я так думаю, потому что у меня подчеркивает эту строку и выдает такую ошибку
[BCC32 Error] Unit1.cpp(106): E2034 Cannot convert 'int' to 'TStrings *'
можно как то int перевести в стринг???
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.12.2011, 14:25
1. Я не знаю, что вы желали очистить - если LabeledEdit - то все правильно, и комментарий здесь ни при чем.
2. Если функция возвражает int, то перевести ее в строку можно, используя StrToInt или itoa, в зависимости, какая строка нужна.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
18.12.2011, 15:14  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Если функция возвражает int, то перевести ее в строку можно, используя StrToInt или itoa, в зависимости, какая строка нужна.
а разве StrToInt? это ведь вроде строку в инт, а мне надо int в строку IntToStr
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.12.2011, 15:21
- все правильно. А Вы приписку к сообщению прочли (насчёт "последствий")?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.12.2011, 15:29
конечно, IntToStr - еще не проснулся , коль знаете - зачем спрашивать
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
18.12.2011, 15:30  [ТС]
да я узнал позже))) и там спрашиваю и сам в интеренете рыскаю))) по крупицам собираю)
0
18.12.2011, 15:35

Не по теме:

чувствуется- дармовый у Вас интернет. А то б уже хэлп себе прикрутили...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2011, 15:35
Помогаю со студенческими работами здесь

Ошибка в программе (поиск в строке)
Есть функция: public bool IsUserInLocalGroup() { string userName = textBox1.Text; string groupName...

Ошибка в программе (поиск и вывод символов)
Есть следующий код программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; int main() { std::ifstream...

Ошибка в в программе. Поиск минимальной и максимальной цифры.
Вот задача: Дано натуральное число в котором все цифры различны. Определить какая цифра расположенна в нем левее: Максимальная или...

Авл-деревья, Хеш поиск
1. Задача о плотном расписании 2. Поиск на АВЛ-деревьях 3. ХЭШ-поиск нужна помощь в реализации

Поиск совпадающих полей в двух хеш-массивах
Захотел реализовать следующую задачку. Создать 2 хеш-массива с именами полей val1, val2, val3. Заполнить случайными значения от 0 до 10 по...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru