0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
||||||
1 | ||||||
Необходимо исправить ошибки12.05.2010, 22:12. Показов 2162. Ответов 24
Метки нет (Все метки)
Задание следующее:
Необходимо написать программу идентификации кода, состоящего из трех букв латинского алфавита и двух цифр. Ограничения: буквы должны быть в алфавитном порядке. А также все сделать в графической иллюстрации. Вот такое задание. Я программирую в borland c++ v3.01 и только в нем. Помогите пожалуйста исправить ошибки, я уже замучался и не знаю как это сделать. Программа выглядит так:
0
|
12.05.2010, 22:12 | |
Ответы с готовыми решениями:
24
Необходимо исправить ошибки, связанные с неверным использованием прописных и строчных букв Найти ошибки в коде и исправить эти ошибки (Наследование) Найти ошибки в коде и исправить эти ошибки - C++ Найти ошибки в коде и исправить эти ошибки |
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
12.05.2010, 22:13 | 2 |
Используйте теги кода. Сделайте правку.
0
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
12.05.2010, 22:34 [ТС] | 3 |
что это значит?
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
13.05.2010, 15:00 | 4 |
SanekSV, чтобы сделать форматирование кода, надо выделить весь текст кода и кликнуть на нужный язык в верхней части окна сообщения
1
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
13.05.2010, 23:30 [ТС] | 5 |
И все же. Есть программа, но с ошибками, есть те, кто сможет в ней разобраться?
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
14.05.2010, 04:48 | 6 | ||||||||||
в каждом таком массиве на самом краю будет записан нуль-символ, за этим символом потом следят все функции - printf(), strcat() и тд, определяя по нему, где строка заканчивается то есть нуль-символ за край массива писать нельзя (а у тебя там такое происходит в цикле со strncpy() ) ещё strncpy() возвращает char * - то есть адрес, а ты его записываешь в b[i] - в символ ты адрес записываешь в символ
0
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
14.05.2010, 10:17 [ТС] | 7 |
Мммм, мне уже рще. Но возникают сразу несколько воросов. Как выглядит этот массив с нуль-символом? И как в моем случае нужно перепраить strncpy()?
Добавлено через 39 секунд проще*
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
15.05.2010, 06:16 | 8 | |||||
вот у тебя там string[i] = '\0', а i может быть равно 5, то есть получится string[5] = '\0' - это запись за край
в объявлении string char string[5]; а нужно, чтобы записи за край не было, char string[6];
Добавлено через 3 минуты а, не, i у тебя не может быть равно 5, так что с границей в цикле всё нормально но знай, что char string[5] расчитана на четыре символа, плюс нуль-символ (в неё можно и пять символов загнать, но тогда нельзя будет применять функции типа printf(), strcpy() и тд)
1
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
15.05.2010, 15:54 [ТС] | 9 |
можно тогда сросить на сколько равильны слудущие вещи?
мне интересно на сколько необходмо и правильно это: и еще эти вещи: и так далее особое внимание уделяю именно на равильность или неправильность этого - &i Добавлено через 25 минут а, и еще, как настроить указатели и переменные, чтобы strncpy() корректно работало?
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
16.05.2010, 12:56 | 10 | |||||
нужно адрес передавать, как для b[i] "0,1,2.." запятые обычно не используются для таких задач "012" &i - это побитовая бинарная операция, то есть не взятие адреса но надо помнить, что выполняется она после бинарных операций + и - 140+67&i сначала выполнится 67 & i, а потом 140 + что_получилось правильно или нет - сразу не скажешь неясна задача, вроде в задаче про распознавание, а что-то рисуется по strncpy() - тоже (а нужна ли она там вообще) Добавлено через 1 минуту вот про strncmp() в курсе, что то, что там написано, можно записать в виде if (b[i] == alf[count2])
1
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
16.05.2010, 14:01 [ТС] | 11 |
а если стоит вопрос о том, нужно ли употреблять strncpy() или нет? как на него ответить? у меня в программе употреблена эта функция дя выделения символов кодав массив, чтобы в дальнейшем уже работать с массивом. Может есть аналог по проще?
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
17.05.2010, 05:51 | 12 |
Сообщение от SanekSV
2. Передать его в функцию проверки валидности. 3. Вывести сообщение о валидности. Функция проверки валидности 1. Проверить, что в коде сначала идут буквы, а потом цифры. 2. Проверить, что букв три, а цифр две. 3. Проверить что соседние буквы расположены в возрастающем порядке. значит для этого требуется isalnum(), isalpha(), isdigit() и strncmp() fgets() для ввода кода, printf() для вывода сообщений когда первая задача будет готова, можно будет подключать графику (причём не смешивать их)
0
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
17.05.2010, 08:24 [ТС] | 13 |
блин конечно все здорово, но мне наверно тяжеловато сделать это(((((
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
17.05.2010, 10:40 | 14 | |||||
проверяет валидность кода
Добавлено через 2 минуты понял да, что там две функции: одна проверяет правильность ввода, а другая - валидность кода хоть они и похожи, их нельзя смешивать
1
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
17.05.2010, 18:49 [ТС] | 15 |
спасибо большое, это очень реальная помощь, графику я думаю сам подключу, она проблему думаю не составит. Могу ли я как-нибудь отблагодарить за такую помощь? Мне просто очень важна эта программа, поэтому так говорю)). Я бы и дальше хотел бы не терять общение с вами, просто настроен на изучении с++. Да и так, если какие вопросы будут появлятся.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
18.05.2010, 05:07 | 16 |
там знаешь, вот это всё типа "Enter code" и тд, пока он не введён, всё надо вынести в функцию ввода, а потом, когда он введён, нужно поднять его в main() и передать функции проверки валидности, главное, что хочется сделать одну функцию и для проверки ввода, и для проверки валидности
на самом деле, стоит чему-нибудь измениться, и всё это поплывёт для разных задач - разные функции да ты уже отблагодарил, ничего не надо
0
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
18.05.2010, 08:53 [ТС] | 17 |
а сейчас это работает не корректно что ли?
0
|
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 31
|
|
18.05.2010, 16:05 [ТС] | 19 |
то есть другими простыми словами разбить этот программный код на подпрограммы?
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
19.05.2010, 04:31 | 20 |
вынести фрагмент ввода кода в отдельную функцию
main() должна выглядеть main { Read() CheckValid() PrintMessage() } ну, естественно, всё передаётся там в Read() подаётся массив, созданный в main(), после Read() он заполнен и подаётся в CheckValid(), а CheckValid() возвращает результат валидно/не валидно и этот результат подаётся в PrintMessage() а там сейчас содержимое Read() находится прямо в main() и содержимое PrintMessage() тоже а эти функции могут оказаться полезными, когда будешь графику приделывать кстати, CheckInput() должна вызываться из Read(), поэтому, если бы Read() была сделана, CheckInput() не было бы видно в main(), то есть она бы не мешалась там
1
|
19.05.2010, 04:31 | |
19.05.2010, 04:31 | |
Помогаю со студенческими работами здесь
20
Необходимо исправить ошибки Необходимо исправить ошибки Необходимо исправить ошибки в коде Необходимо исправить ошибки в массиве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |