829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
||||||
1 | ||||||
Структура.Найтиде ошибку19.04.2009, 22:37. Показов 2032. Ответов 21
Метки нет (Все метки)
Вот код. Он компилируется, работает, но с странностями.
0
|
19.04.2009, 22:37 | |
Ответы с готовыми решениями:
21
исправить ошибку в коде с++(структура данных) Структура (найти ошибку в этом коде) Найти и исправить ошибку в программе (структура Student) Структура Octal. Выдает ошибку E2040 Declaration terminated incorrectly. Не пойму в чем проблема? |
67 / 67 / 24
Регистрация: 21.11.2008
Сообщений: 226
|
|
19.04.2009, 22:39 | 2 |
и в чем проявляются странности?
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
19.04.2009, 23:13 [ТС] | 3 |
Вот условие задачи:
(Автоматизированная информационная система на жд вокзале содержит инфо о отправлении поездов. Для каждого поезда указывается: · номер поезда; · станция назначения; · время отправления. Данные в информационной системе организованы в виде линейного списка.!!!!! Составить программу, которая: · обеспечивает первоначальный ввод данных в информационную систему и формирование линейного списка; · производит вывод всего списка; · вводит номер поезда и выводит все данные об этом поезде; · вводит название станции назначения и выводит данные обо всех поездах, следующих до этой станции. Походу сам код неправильно написан. На рис. там видно, что неправильно ищет номер и станцию.
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
||||||
19.04.2009, 23:24 | 4 | |||||
Код
int pro1(int n,train *p,int num1){ int i; for(i = 0; i < n;i++){ if (num1 == p->num) return(0); else return(1); p++; }
1
|
19.04.2009, 23:33 | 5 |
См. строки 72-74. На первой же итерации цикла у тебя будет выход из процедуры. Ветку else надо удалить, а Return 1 влепить в конец процедуры. Аналогично строки 80-82
Добавлено через 33 секунды Упс... опередели
1
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
20.04.2009, 01:53 [ТС] | 6 |
Ещё вопрос, а можно как-то вернутся к моменту задания первого вопроса в коде(строка 53) без использования цикла, ну не совсем без цикла,чтобы цикл только спрашивал и переправлял на 53 строчку?
0
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
|
20.04.2009, 02:20 | 7 |
Обычно кусок кода, который нужно повторять обрамляется в while(1) { ... } и если пользователь вводит спец. команду, например "exit", то делается break;
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
20.04.2009, 02:30 [ТС] | 8 |
0
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
|
20.04.2009, 02:42 | 9 |
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
20.04.2009, 11:04 [ТС] | 11 |
Ой, не цикл,а условие( типо "Хочете повторить поиск поезда?), если да - то назад к 53-й строчки, а если нет - exit(1).
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
20.04.2009, 13:38 | 12 |
Лучше сделать свитч с кейсами: 1 - поиск номера, 2 - поиск станции, и зациклить его, пока не нажмем, скажем, 0.
0
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
|
20.04.2009, 17:17 | 13 |
Конечно не надо! goto нужно использовать только в крайних случаях, а здесь без него спокойно можно обойтись.
А есть ещё варианты, как организовать переход к определенному месту кода НЕ используя цикла? Это я уже писал, на это получил ответ: Мы ведь не ищем лёгких путей insolent, goto - это плохой стиль программирования, ведущий к образованию сложночитаемого и малопонятного спагетти-кода. В таких случаях принято пользоваться связкой while (1) { Проверка ввода пользователя + действия }.
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
20.04.2009, 17:31 [ТС] | 14 |
Понятно. Значит только через цикл.
0
|
20.04.2009, 20:35 | 15 |
Это большой вопрос. Слишком частое использование goto конечно превращает программу в бесконечную плохо понимаемую кишку, но вот конкретно в данном случая я бы порекомендовал человеку использовать goto. Просто по причине того, что у него (как видно из программы) ещё небольшой опыт в программировании и попытка сделать через цикл лишь приведёт к тому, что он ещё больше запутается в собственной программе. А использование goto в данном случае не повлечёт за собой никаких сложных дополнительных конструкций и с точки зрения понимания будет проще, чем использование цикла и ещё каких-либо семиэтажных наворотов. При условии, что это будет единственный goto в программе. Если их станет 2-3 и более, то программа почти наверняка станет плохопонимаемой
1
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
|
20.04.2009, 20:58 | 16 |
Я в программе вижу наличие не одного и не двух циклов. Причем как for, так и while. Поэтому не вижу у человека проблем с циклами (если код писал он).
Использование while(true) {} увеличит длину кода на 2 строчки (из-за скобок) и добавит 1 отступ к коду. Все условия можно оставить теми же, просто вместо if ("Yes") goto label53string; будет if ("No") break; Поэтому не вижу ничего "семиэтажного" в циклах. Я думаю, что insolent сам определится с тем, что ему использовать. Не по теме: Evg, использование goto - тема широкая и почти холиварная, я прекрасно представляю себе несколько use cases, где goto - это правильно. Предлагаю не оффтопить в этом треде.
1
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
20.04.2009, 21:26 [ТС] | 17 |
Спасибо за советы.
Код я сам писал, хоть и опыта маловато(только классы штурмую), нужно же все на практике закреплять. Я знал, что goto нежелательно использовать, но нужно со всем ознакомится. Я попробую и цикл, и goto, а в дальнейшем буду избегать использовать goto.
0
|
20.04.2009, 21:36 | 18 |
Это ты смотришь с позиции "профессионала" (скажем так). С позиции новичка это всё не так просто понять.
Добавлено через 5 минут 10 секунд Это правильная позиция. Надо попробовать все способы на практике и выбрать то, что на твой взгляд более приемлимо в данной ситуации Надо его избегать там, где от него можно избавиться простым и понятным сособом. Когда ради того, чтобы избежать goto начинается уродование программной логики (типо перестановки ветвей if'а, замудрённые условия выхода из многократно вложенных циклов, разбавленные несколькими break'ами) - это неправильный подход. Если человек утверждает, что "структурное программирование" и "программирование без goto" - это одно и тоже, то на мой взгляд этот человек не программист, а, извиняюсь за выражение, теоретик. Однако я никому своё мнение не навязываю.
0
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
|
20.04.2009, 21:52 | 19 |
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
20.04.2009, 22:55 [ТС] | 20 |
А чем ещё можно заменит goto в С++, кроме циклов?
0
|
20.04.2009, 22:55 | |
20.04.2009, 22:55 | |
Помогаю со студенческими работами здесь
20
Почему реализованная структура при использовании выдает ошибку? В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость. Структура «База», сущности «Универсам» и «Продукты», структура «Товар» структура array предназначена для хранения строки типа char. Структура имеет функцию, которая позволяет изменить символ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |