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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 23:24   #1
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию Двусвязный список. Поиск [C++]

Здравствуйте уважаемые эксперты! Нужно найти однофамильцев в двусвязном списке, вот получившийся код:
Код:
void DoubleList::Search() {
        Student *tmp = First;
        string _Sername;
        _Sername == tmp -> Sername;
        while (tmp != NULL) {
                if (_Sername == tmp -> Next -> Sername) 
                        cout << "\n" << tmp -> Sername << "\t" << tmp -> Name << "\t" << tmp -> Patronymic << "\t" << tmp -> NumberOfGroup;
                tmp = tmp -> Next;
        }
}
И вот так я его вызываю:
Код:
for (int i = 0; i < CountOfStudents; i++)
    Students[i].Search();
Но программа вылетает при поиске.. Подскажите, в чем ошибка, заранее огромное спасибо!
StudeHt вне форума Ответить с цитированием
Старый 05.12.2011, 23:27   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Непонятно что вы этим добиваетесь
Цитата:
_Sername == tmp -> Sername;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 05.12.2011, 23:30   #3
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Цитата:
Непонятно что вы этим добиваетесь
присваиваю переменной _Sername фамилию элмента списка..
Прощу прощения, я опечатался когда копировал.. Там разумеется должно быть одно равно

Последний раз редактировалось StudeHt; 05.12.2011 в 23:36.
StudeHt вне форума Ответить с цитированием
Старый 05.12.2011, 23:34   #4
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Интересный способ присваивания.
А вы делить на 0 умеете? =)

= оператор присваивание.
== оператор сравнение ( возвращает true or false) .
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 05.12.2011, 23:34   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
присваиваю переменной _Sername фамилию элмента списка..
хм.... ну хз
просто я скок программирую у меня оператор присваивания это =, а == это оператор сравнения )))))))
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 05.12.2011, 23:43   #6
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Вместо стеба, могли бы подсказать, что в функции не так..
StudeHt вне форума Ответить с цитированием
Старый 05.12.2011, 23:46   #7
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Код:
_Sername == tmp -> Sername;
заменить на
Код:
_Sername = tmp -> Sername;
А то получается что в _Sername лежит мусор, а значения в списке точно не равны этому мусору, поэтому условие в цикле не выполняется и выходит просто пустой проход по списку.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 05.12.2011, 23:53   #8
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Ezhuk, при поиске однофамильцев, программа вылетает с ошибкой на строчке
Код:
if (_Sername == tmp -> Next -> Sername)
StudeHt вне форума Ответить с цитированием
Старый 05.12.2011, 23:58   #9
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

StudeHt

при поиске однофамильцев, программа вылетает с ошибкой на строчке

кривая работа с указателями.
либо в tmp, либо в next сидит мусор.

программа вылетает при поиске.. Подскажите, в чем ошибка, заранее огромное спасибо!

гоогле "что такое отладчик", потом "как отлаживать программу"
Rififi вне форума Ответить с цитированием
Старый 06.12.2011, 02:58   #10
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Ошибку исправил, но возникла другая проблема.. Поиск происходит только для однофамильцев первого элемента списка, а как сделать так, чтобы при достижении
Код:
tmp -> Next == NULL
в _Sername данные заменялись, на вторую фамилию, птом третью и т.д.?
StudeHt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ двусвязный список world12_tk Помощь студентам 1 15.10.2011 12:36
Двусвязный список(C++) fable0097 Помощь студентам 0 16.05.2011 16:03
Двусвязный список decantnik Паскаль, Turbo Pascal, PascalABC.NET 0 09.05.2011 00:58
двусвязный список Olezhka Помощь студентам 1 23.03.2011 11:00
двусвязный список klykovka Помощь студентам 8 22.05.2010 18:58