|
Программирование >> Аргументация конструирования
Рис. U.S. Даже после инициализации переменных результат соединения строк оказывается неверным Дописывание символов после символа окончания строки (нулевого символа) или отсутствие символа окончания строки - две самгх распространенных ошибки при работе со строками. Теперь, когда известно, где находятся обе ошибки, б1ло бы неплохо исправить их в исходной программе (пока мы не забьши, где они находятся). Вызовите команду Program Reset и исправьте функцию concarStringraK, как показано в следующем листинге: voi har szTarget [], char szSource []) { Int nTargetlndex = 0; Int nSourcelndex = 0; дем конец первой строки while (szTarget[+-nTargetIndex] ) присоединяем вторую строку к концу первой while (szSource[nSourcelndex]) I szTargetfnTargetIndex( = szSource [nSourcelnd.exi ; nTargetIndex++; nSourcelnde++; завершаем конечную строку szTarget[nTargetlndex] = \0; To, что б1ло найдено несколько ошибок, еше не значит, что в программе нет других жучков . Необходимо довести процесс отладки до конца. Установите просмотр переменных nTargetlndex и nSourcelndex и самостоятельно проверьте их содержимое во время выполнения следующего цикла. Вам действительно необходимо сделать это самостоятельно. Только тогда вы поймете, какое эстетическое удовольствие можно получить, глядя на то, как от цикла к циклу одна строка растет, а другая одновременно уменьшается. Чтобы убедиться, что все работает правильно, удалите все точки останова и запустите программу с помощью команды Go. Приведенный ниже вывод программы выглядит правильно. Эта программа соединяет две строки (Эта программа не содержит ошибок.) Введите строку #1:эта строка Введите строку #2:ЭТА СТРОКА эта строка - ЭТА СТРОКА Мои поздравления новоиспеченным экспертам по отладке программ! Лфвая nfwtfuutuui eU2)QBT Главы, составляющие первые две части книги, позволяют вам писать собственные (уже нетривиальные) программы. Именно такова приведенная ниже программа BUDGET. Эта программа будет представлена в книге еще не раз. И в каждой версии будут использованы новые возможности, изученные в предыдущих главах. Таким образом, вы увидите, как применить возможности языка, описанные ранее. Текущий вариант программы использует функциональные возможности (т.е. возможности функций) языка C-I-+. Программа BUDGET моделирует простейший банковский счет (в очень упрощен ном виде). Эта программа будет выполнять такие действия: \ создавать один или несколько банковских счетов; 1 присваивать уникальный номер каждому счету; работать со счетом - создание депозита и снятие денег; I -У выводить окончательный баланс всех счетов, после того как пользователь решит выйти из программы. Эта версия программы будет следить за тем, чтобы баланс не был меньше нуля (банк может быть дружественным по отношению к вам, но не до такой же степени!). Набор правил будет разрастаться с развитием программы в следующих частях книги. Программа BUDGET приведена ниже. BUDGET1.CPP- Функционалвная программа бюджета #include <io3tream.h> Iinciude <stdio.h> количество счетов const int maxAccounts = 10; информация о счете unsigned accountNumJoer [maxAccounts] ; double balance [maxAccount-S ] ; Прототипы функций void process (unsigned accountNurnber, doubles balance) ; void init(unsigned accountNumber, doubles balance); main - собирает начальные входные данные шсдит конечные суммы int main(int nArg, char* pszArgs[]) ввод in MOUnts 0; ества создаваемых счетов не создаем счетов больше максимального количества while (noAccounts < maxAccounts) char transactionType; CDur << Нажмите С для продолжения, X для выхода; ,- осп transactionType; выйти, есл ватель ввел X it (transactionType == х transactionType == X) break; / если пользователь ввел С... if (transactionType == с transactionType == С) начать создание нового счета.. . init(accountNumber[noAccounts], balance[noAccounts]); . . .и ввести информацию о проводке process(accountNumber[noAccounts), balance [noAccounts]); подсчитать счетов noAccounts+t; показать сумму для каждого счета в double total = 0; cout Информация о счетах:\n ; for (int 1 = 0; 1 < noAccounts; 1++) ccut Баланс счета << = << << \n ; подсчитать сумму по Есем счетам total += balance[i] ; вывести сумму всем счетам
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |