Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2014, 02:14   #1
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию Хэш таблица

Всем привет.
Гляньте, плиз, код. Что-то он вылетает при добавлении value в хэш таблицу.
Хэш функция - суммирование аски кодов всех символов стринга и деление на 7. Получается 7 кеев - 0,1,2,3,4,5,6.
Не знаю, из-за чего именно вылетает. Написаны 2 фу-и - добавление и вывод на экран. При использовании фу-и добавление, прога вылетает. Пишет, что добавление успешно завершено и тухнет.
Помогите, пожалуйста.
Спасибо.
ЗЫ. Дебагером пользоваться не умею, но вот что-то там прочёл при нахождение ошибки.
1 - program received signal sigtrap trace/breakpoint trap
2 - ntdll!RtlUnhandledExceptionFilter()
Не знаю, это важное что-то или просто хлам.

Код:
int f_add(const char str[100])
{
	int lngth;
	list *tmp;
	system("cls");
	fflush(stdin);
	fflush(stdout);
	lngth=0;
	for (int j=0;j<strlen(str);j++) lngth+=str[j];
	lngth=lngth%7;
	strcpy(tmp->data,str);
	tmp->next=NULL;
	if (heads[lngth]==NULL) heads[lngth]=tmp;
	else
	{
		while (heads[lngth]->next!=NULL) heads[lngth]=heads[lngth]->next;
		heads[lngth]->next=tmp;
	}
	printf(" The adding is successfully completed.\n");	
	return 0;
}
Код:
case '2':
							{
								num++;
								system("cls");
								do
								{
									fflush(stdin);
									system("cls");
									if (i!=0) printf(" Error.\n");
									printf(" Please, enter the string\n >>");
									gets(str);
									i++;
									
								}while ((strlen(str)<1) || (str[0]==' '));
								system("cls");	
								f_add(str);
								system("pause");
								break;

Последний раз редактировалось guroDragon; 21.05.2014 в 02:21.
guroDragon вне форума Ответить с цитированием
Старый 21.05.2014, 02:24   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
list *k = calloc(1, sizeof(list));
...
if (!heads[lngth])
    heads[lngth] = k;
else {
    list *tmp = heads[lngth];
    while (tmp->next)
        tmp = tmp->next;
    tmp->next = k;
}
Не нужно кросспостить (По сути обсуждаются некие нюансы одной задачи, что, по моему мнению, должно быть рассмотрено в 1 теме).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 21.05.2014 в 02:26.
BDA вне форума Ответить с цитированием
Старый 21.05.2014, 14:41   #3
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Не нужно кросспостить (По сути обсуждаются некие нюансы одной задачи, что, по моему мнению, должно быть рассмотрено в 1 теме).
Окей, извините.
guroDragon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хэш таблица guroDragon Общие вопросы C/C++ 12 21.05.2014 21:10
Хэш таблица guroDragon Помощь студентам 2 19.05.2014 21:28
хэш таблица R0807D06 Общие вопросы C/C++ 1 13.08.2013 15:51
Хэш-таблица. Метод цепочек. C++ Playa-RC Помощь студентам 0 10.03.2012 15:07