|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.11.2017, 14:51 | #1 |
Пользователь
Регистрация: 24.11.2017
Сообщений: 11
|
Помогите найти баг в коде (язык С, шифр Цезаря)
Добрый день!
Получила задание написать программу для шифровки текста (шифр Цезаря). С этим вроде бы проблем не возникло, но при запуске программы к буквам нижнего регистра почему-то добавляется еще какой-то символ. Код Код:
~/workspace/pset2/ $ ./caesar 0 ABC abc ABC aGbHcI Откуда взялись дополнительные символы??? Где я ошиблась? П.С. Не по теме: что значит сообщение Ошибка в программном коде: 'ascii' codec can't encode characters in position 109-116: ordinal not in range(128) |
24.11.2017, 18:26 | #2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Одни if и ни одного else. Для маленьких букв выполняются оба куска - и для больших, и для маленьких
|
24.11.2017, 20:34 | #3 |
Пользователь
Регистрация: 24.11.2017
Сообщений: 11
|
Спасибо за ответ!
else нет, т.к. если условие не выполняется, то цикл завершается и программа переходит к следующему (во всяком случае, так объясняют на лекции) Разделила проверку условия: if (isalpha (s[i]) ) и потом внутри две проверки отдельно if (islower (s[i])) и if (isupper(s[i])) ООО чудо! Заработало! Но теперь при проверке выдает сообщение (проверяется не человеком, а автоматически компом): Результат теста - неверно. Ошибки: encrypts "a" as "b" using 1 as key expected prompt for input, found none encrypts "barfoo" as "yxocll" using 23 as key expected prompt for input, found none encrypts "BARFOO" as "EDUIRR" using 3 as key expected prompt for input, found none encrypts "BaRFoo" as "FeVJss" using 4 as key expected prompt for input, found none encrypts "barfoo" as "onesbb" using 65 as key expected prompt for input, found none Что значит "ожидаемое приглашение для ввода, не найдено ни одного"? Я в отчаянии... |
24.11.2017, 20:47 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Только то, что написано. Очевидно тестирующая система ждет какой-то строки - приглашения для ввода, типа >. Но не находит и тст проваливается.
Кстати, кто вам сказал, что у мейна в параметрах стринг? |
24.11.2017, 21:04 | #5 |
Пользователь
Регистрация: 24.11.2017
Сообщений: 11
|
Может я неправильно поняла задание?
Цитата: "ваша цель состоит в том, чтобы написать в caesar.c программу, которая шифрует сообщение с помощью шифра Цезаря. Программа должна принимать один аргумент командной строки: неотрицательное целое число. Если вашу программу запускают без каких-либо данных командной строки, или более чем одним аргументом, должно появляться сообщение об ошибке и возвращаться значение 1 (что в данном случае означает ошибку) как указано ниже: return 1; В противном случае, программа должна перейти к запросу текста, который нужно зашифровать; символы, которые не являются буквами алфавита, будут выведены без изменений. После вывода зашифрованного текста программа должна завершиться, main должен вернуть 0 следующим образом: return 0. " Так как мы автоматизируем для вас некоторые тесты, программа должна вести себя как показано ниже. Считаем, что подчеркнутый текст это то, что набрал пользователь. ~/Dropbox/pset2: ./caesar 13 Be sure to drink your Ovaltine! Or fher gb qevax lbhe Binygvar! у меня все именно так и выводится. По поводу стринг - так задано изначально ("так как эта программа должна стартовать с того, что в командной строке она должна принять значение k, в main надо прописать: int main (int argc, string argv [])") |
24.11.2017, 21:41 | #6 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Действительно, непонятно, какой промпт ожидается.
Судя по примеру, может быть, перевод строки? |
24.11.2017, 22:14 | #7 |
Пользователь
Регистрация: 24.11.2017
Сообщений: 11
|
Что значит "перевод строки"? это \n ? так вроде бы ж есть... или еще где-то нужно?
Извините за такие вопросы, просто тяжело быть "чайником" , а хочется понять в чем ошибка И, если не сложно, объясните что может значить сообщение (не из этого задания): "Ошибка в программном коде: 'ascii' codec can't encode characters in position 109-116: ordinal not in range(128)" |
25.11.2017, 00:23 | #8 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Что именно не так с Вашим заданием - непонятно. Если не у кого проконсультироваться, можно толко попытаться подобрать. Попробуйте таки вывести хоть какой-то текст перед вводом строки. Возможны варианты: просто перевод строки, какой-то текст с переводом строки (например, как предлагали, ">"), текст без перевода строки.
Эта ошибка означает, что где-то в позициях 109-116 ожидаются символы чисто ascii, а на самом деле стоят символы с кодом больше 127, скорее всего, русские буквы |
25.11.2017, 17:52 | #9 |
Пользователь
Регистрация: 24.11.2017
Сообщений: 11
|
Я его победила! Спасибо Вам за помощь.
Подбирала пол дня. В итоге тест прошел, когда я вывела текст перед вводом пользователя и вывела текст перед ответом! Вот так получилось: ~/workspace/pset2/ $ ./caesar 0 plaintext: abc ABC! ciphertext: abc ABC! ~/workspace/pset2/ $ ./caesar 13 plaintext: abc ABC! ciphertext: nop NOP! П.С. по поводу ascii: это мне нужно создать новую тему , чтоб выяснить ошибку ? (суть задачи из этой же темы: запросить ФИО пользователя и вывести инициалы большими буквами) |
26.11.2017, 01:38 | #10 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Не знаю..
Напишите подробнее, где именно ошибка. Может, комментарии русскими буквами? Иногда и на это бывает ошибка |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шифр Цезаря | Ти6ка | C# (си шарп) | 7 | 21.02.2017 22:19 |
[C++]: шифр Гронсфельда. Помогите найти ошибку в коде | krasy | Помощь студентам | 1 | 02.10.2016 00:37 |
Шифр цезаря | noutiluss | C# (си шарп) | 0 | 17.03.2016 17:35 |
Шифр Цезаря.(Зашиф-ка,расшиф-ка,взлом...Вообщем полный набор.Пожалуйста помогите) | Александр96 | Помощь студентам | 0 | 03.12.2013 18:36 |
Шифр Цезаря | Goracio | Помощь студентам | 1 | 19.04.2010 14:53 |