Speller CS50 как проверить работает ли он - PullRequest
0 голосов
/ 17 мая 2019

Я думаю, что этот код загружает словарь, но как мне проверить, работает ли он?

''» #включают # Включают

#include "dictionary.h"


//number of linked lists in hashtable
#define HASH_SIZE 5000

# определить ДЛИНА 45

char word;

//create node
typedef struct node
{
    char word [LENGTH +1];
    struct node *next;
}
node;

//create hashtable as an array of linked lists
node *hashtable[HASH_SIZE];

bool load(const char *dictionary)
{
    while (fscanf(file, "%s", word) != EOF)
    {
         // malloc a node* for each new word
        node *new_node = malloc(sizeof(node));
        if(new_node == NULL)
        {
            unload();
            return false;
        }
        // else if not pointing to NULL, copy word into node
        else
        {
            strcpy(new_node)→ word, word);
            new_node→next = head;
            head = new_node;
        }
    }
    return false;

int hash_function(const char*word)
{
    int sum=0;
    int word_length = strlen(word);

    for(int i=0; i<word-length; i++)
    {
        sum+ = word[i];
    }
    int bucket = sum % HASH_SIZE;
    return bucket;
}

'' '

Я думаю, этот код загружает словарь, но как мне проверить, работает ли он? вы можете помочь? Пожалуйста, помогите мне проверить этот код

1 Ответ

0 голосов
/ 17 мая 2019

Обычная мудрость CS50 говорит, что окончательный тест для load - check!Некоторые указатели:

  • Рассмотрите возможность подписки на собственный форум по стеку CS50 .Там вы найдете осведомленное сообщество обо всех вещах CS50.
  • Даже если эта функция загружает словарь, speller будет жаловаться «Не удалось загрузить словарь», потому что он всегда возвращает false.Возможно, еще раз пересмотрите speller.c, как рекомендовано в спецификации .
  • Маловероятно, что эта функция "работает".hashtable объявлен и никогда не используется.hash функция определена и никогда не используется.

Первая мера успеха load заключается в том, что он не падает.Второй после size завершен, и результат показывает правильный «СЛОВА В СЛОВАРЬ».Следующая мера check дает правильные результаты (по сравнению, скажем, файлы в keys).

Вы, вероятно, обнаружите, что debug50 - ваш лучший друг для прохождения этого набора.Несколько заключительных слов мудрости (также из спецификации):

Во время разработки может оказаться полезным предоставить спеллеру собственный словарь, который содержит гораздо меньше слов, чтобы вы не боролись за отладку.иначе огромная структура в памяти.В словарях / small есть один такой словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...