Структуры С++

Тема в разделе "C/C++/C#", создана пользователем TSoprano, 7 дек 2014.

  1. TSoprano

    TSoprano New Member

    Регистрация:
    7 дек 2014
    Сообщения:
    1
    Симпатии:
    0
    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <fstream>
    #include <ctime>
    #include <cstring>
    #include <cmath>
    #include <stdlib.h>
    using namespace std;
    const int n = 3000;

    struct hashdata //структура для описания ячейки хэш-таблицы
    {
    int collisions;
    char key[7];
    bool empty; //пуста ли ячейка в таблице
    };

    int hash_s(char key[])
    {
    int address = 0;
    for (int i = 0; i<6; i++)
    {
    int code = int(key);
    address += code*code*code;
    }
    address %= 10000;
    address %= n;
    return address;
    }

    void hashrecord(char word[], char emphcell[], hashdata htable[], int index)
    {
    double h = 2, p = 1; //h - число, прибавляемое к индексу, p - степень h;
    if (htable[index].empty)
    {
    for (int i = 0; i<6; i++)
    htable[index].key = word;
    }
    else{
    for (int i = index; i<n; i += pow(h, p))
    {
    p++;
    if (strcmp(htable.key, word) == 0)
    break;
    if (htable.empty)
    {
    for (int j = 0; j<6; i++)
    htable.key[j] = word[j];
    break;
    }
    }
    }
    }

    int hashsearch(hashdata htable[], char word[])
    {
    double h = 2, p = 1; //h - число, прибавляемое к индексу, p - степень h
    int index;
    index = hash_s(word);
    bool find = false;
    for (int i = index; i<n; i += pow(h, p))
    {
    if (strcmp(htable.key, word) == 0)
    {
    cout << "Данный элемент найден." << endl;
    cout << "Столбец:" << i << " Ключ:" << htable.key << endl;
    find = true;
    return i;
    }
    }
    if (!find)
    cout << "Элемент не найден" << endl;
    return 3000;
    }

    int main()
    {
    setlocale(LC_ALL, "rus");
    hashdata htable[n];
    char key[7], emphcell[7] = " ";
    int index, a = 4;
    ofstream colout("Text.txt");
    ofstream hashout("Text1.txt");
    for (int i = 0; i<n; i++)
    htable.collisions = 0;
    for (int i = 0; i<n; i++)
    {
    htable.empty = true;
    strcpy(htable.key, " ");
    }

    srand(time(NULL)); //генерация 8000 ключей генератором случайных чисел

    for (int j = 0; j<3; j++)
    key[j] = 48 + rand() % 10;
    key[3] = 65 + rand() % 26;
    for (int j = 4; j<6; j++)
    key[j] = 48 + rand() % 10;
    index = hash_s(key);
    htable[index].collisions++;
    hashrecord(key, emphcell, htable, index);

    while (a != 0)
    {

    cout << "Какие дополнительные действия произвести?" << endl;
    cout << "1-добавить элемент; 2-удалить элемент; 3-поиск и вывод на экран; 0-выход" << endl;
    cin >> a;

    switch (a)
    {
    case 1:
    cout << "Введите ключ формата цццАцц(А - буква, ц - число):";
    cin >> key;
    index = hash_s(key);
    htable[index].collisions++;
    hashrecord(key, emphcell, htable, index);
    break;
    case 2:
    cout << "Введите ключ формата цццАцц(А - буква, ц - число):";
    cin >> key;
    index = hashsearch(htable, key);
    if (index != 3000)
    strcpy(htable[index].key, " ");
    break;
    case 3:
    cout << "Введите ключ формата цццАцц(А - буква, ц - число):";
    cin >> key;
    hashsearch(htable, key);
    break;
    case 0:
    break;
    }
    cout << endl;
    }

    for (int i = 0; i<n; i++)
    {
    colout << htable.collisions << endl;
    hashout << i << ' ' << htable.key << endl;
    }
    colout.close();
    hashout.close();

    cout << "Программа выполнена успешно." << endl;
    cout << "Результаты работы программы записаны в файлы collisions.txt и hash.txt." << endl;

    system("pause");
    return 0;
    }


    выводит в файл с хеш таблицей пустую нумерацию,а в файл коллизиями нулевые значение, в чем ошибка?
     

    Вложения:

    • SaoD3.cpp
      Размер файла:
      3,3 КБ
      Просмотров:
      1
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Дебаггером воспользуйтесь,очень помогает.
     
Загрузка...
Похожие Темы - Структуры С++
  1. ricco
    Ответов:
    3
    Просмотров:
    3.162
  2. jula939393
    Ответов:
    1
    Просмотров:
    1.353
  3. vlada
    Ответов:
    6
    Просмотров:
    1.457
  4. Anastasia18
    Ответов:
    1
    Просмотров:
    1.203
  5. b0006
    Ответов:
    0
    Просмотров:
    1.173

Поделиться этой страницей