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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2013, 21:02   #1
Mycroft
 
Регистрация: 19.03.2013
Сообщений: 4
Сообщение Проверка поля структуры на уникальность

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

Код:
void AddElement(Element *Current)   
{

	Element *New;
	system("CLS");
	if(Current==NULL) EnterList();
	else {
		while(Current->NEXT!=NULL) Current=Current->NEXT; 

		Element *New=new Element;

		printf("№ аудитории "); 
		scanf("%d",&New->inf.nomer);
		
		while(New->inf.nomer<0 || New->inf.nomer==0) {
			printf("Неверный ввод, повторите: ");
			scanf("%d",&New->inf.nomer);
		}
		/*while (Current)
		{ if(New->inf.nomer==Current->inf.nomer)
		{
			printf("Неверный ввод, повторите: ");
			scanf("%d",&New->inf.nomer);
		}
		else {Current=Current->NEXT;}
		}*/
		
		printf("Фамилия Преподавателя:	"); 
		scanf("%s",New->inf.IS_sur);
		printf("Имя Преподавателя: "); 
		scanf("%s",New->inf.IS_nam);
		printf("Отчество Преподавателя: "); 
		scanf("%s",New->inf.IS_ot4);
		printf("№ группы: ");		
		scanf("%s",New->inf.OT_sur);		
		printf("Дата занятия (например: 12/12/12): ");
		scanf("%s",New->inf.data);
		printf("Результат: ");		
		scanf("%s",New->inf.rezult);
		
		printf("Новый элемент добавлен!\n");
		New->NEXT=NULL; 
		
		Current->NEXT=New; 
		New->PREV=Current; 
		Current=New; 
	}
	_getch();
}

Последний раз редактировалось Mycroft; 19.03.2013 в 22:19.
Mycroft вне форума Ответить с цитированием
Старый 19.03.2013, 21:08   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Просьба поместите код в теги, воспользуйтесь решеткой на панели инструментов.
Отладчиком проверяли код???
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 19.03.2013, 22:27   #3
Mycroft
 
Регистрация: 19.03.2013
Сообщений: 4
По умолчанию

Без того что закомментировано, код работает нормально. А цикл проверки на уникальность - нет.
Mycroft вне форума Ответить с цитированием
Старый 19.03.2013, 22:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выдает ошибку при сохранении
Какую ошибку?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2013, 00:42   #5
Mycroft
 
Регистрация: 19.03.2013
Сообщений: 4
По умолчанию

Необработанное исключение по адресу 0x00AE2C5E в Kyrsa4.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x0000006C.

на строке
Код:
Current->NEXT=New;
Mycroft вне форума Ответить с цитированием
Старый 20.03.2013, 09:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ИМХО лучше так:
Код:
 bool ok=false;
		while (!ok){ 
Element *i; ok=true;
		for(i=Current;i;i=i->NEXT){ 
                   if(New->inf.nomer==i->inf.nomer){
			printf("Неверный ввод, повторите: ");
			scanf("%d",&New->inf.nomer);
                        ok=false; break;
		   }
		}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2013, 17:39   #7
Mycroft
 
Регистрация: 19.03.2013
Сообщений: 4
По умолчанию

Да, теперь работает корректно. Просто не мог правильно реализовать. Спасибо!
Mycroft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление(добавление) поля из(в) структуры kilgoreq Помощь студентам 0 22.02.2011 00:59
Уникальность поля в DBGrid jekahm БД в Delphi 4 20.11.2010 01:59
Проверка на уникальность трёх полей AnTe SQL, базы данных 4 06.09.2010 11:04
Access + ADO, проверка ключа на уникальность KiLLiR БД в Delphi 2 23.02.2009 10:36
Уникальность значения поля maks233 Microsoft Office Access 1 13.01.2009 14:14