|
|
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
Есть задачка на перестановку строк в матрице 2Х2. Задачка решена в самом простом варианте и в варианте с использованием класса. Теперь ее же нужно решить еще с использованием потомка класса. Не знаю как сделать помогите. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. Теперь нужно заполнение массива перенести в класс, а перестановку в наследуемый класс. Помогите плизззз!!! Время поджимает, а я еще не разобралась с этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 06:52 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
Ну неужели никто не поможет? Срочно надо. хотя бы структурно подскажите как переделать. Да в начале я ошиблась матрица не 2Х2, а 5Х5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 08:24 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
Собрался было написать, но призадумался.... Это вообще работает? Нафиг нужен MASS dim;? и что за странная void print_out (int b, int w)? Такое чувство, что это не перестановка, а перемещение со сдвигом... И не совсем ясно, куда тут и зачем впихнуть наследуемый класс? Чё он должен наследовать, если у MASS ничё нету кроме одного метода. И что он должен иметь своё, чего нет у родителя? Я так думал, матрица должна быть внутри класса, а не снаружи(ибо нафиг тогда класс тут вообще?) Функцию заполнения матри случайными числами - туда же в класс. dim.print_out(BB,WW); - это вообще радостная строчка. Заведение экземпляра класса для прогона строк глобально описанной матрицы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 10:11 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
И с индексами у вас большие проблемы... вещи типа int ii=1; ii<=5; ii++ работать не будут. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. можно ещё лучше сделать... Так при чём тут наследуемый класс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 10:25 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
Это все просто задачка для сдачи зачета. Вначале ориентировалось все просто на класс. Дали задание (причем без объяснений что есть что) написать перестановку строк в матрице со сдвигом использую классы. Вот и вся формулировка. Без класса я задачу написала быстро. Потом для простоты, в класс сунула одну единственную функцию, которая заменяет элементы сдвигаемой строки. И все. Это все работает, проверенно. Писалось все по книжке двадцатилетней давности, так как разбираться глубоко было некогда. А затем препод задачку усложнил, сказал еще наследование применить. А вот с этим я подзависла. Наверное действительно матрицу лучше сунуть внутрь класса. (Хотя лучше или хуже, я в этом мало смыслю :-) эх надо начинать разбираться с классами, да все времени нет). Поэтому и прошу помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 10:29 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
авторЭто все работает, проверенно. Не работает. То, что оно не падает и компилируется - ещё ничё не значит. Попробуйте подставить в матрицу реальные значения - перестанет работать: Индексы в сях идут с нуля (даже анекдот такой есть). Поэтому for (int i=1; i<=5; i++) Мало того что не зацепит первый элемент массива, так и ещё с индексом 5 покоцает кусок памяти, выделенный под другое. Ладно фигня, если тока для зачёта, то фиг с ним, а если дальше работать, то жизь научит этому 100% :) авторНаверное действительно матрицу лучше сунуть внутрь класса. (Хотя лучше или хуже, я в этом мало смыслю :-) Классы для того и придуманы, чтобы собрать данные и действия над ними в одном месте. Пример: Надо почистить 10 картошек. Без классов: как у вас Картошка[10] для i=1; i<=10; i++ Взять(картошка ) Помыть(картошка) Срезать_шкуру(картошка) Вырезать_глазки(картошка) Помыть(картошка) Причём первая останется не мытая, а вместо неё будет помыть и почищен предмет, который попадётся под руку вместо 11-й картошки. А если учесть, что глазки и шкура - это отдельные элементы, которые тоже надо как-то обработать(выкинуть в мусорку) то вообще вешалка... С классами: Пишем класс CКартошка { Картошка К; Чистить(); { К это Картошка? Если нет - уходим. Взять(К) Помыть(К) Срезать_шкуру(К) Вырезать_глазки(К) Помыть(К) } } CКартошка картопка[10] для i=0; i<10; i++ картопка.чистить() причём, если изменится способ чистки картошки, мне не надо будет лазить по коду и исправлять все чистки, достаточно просто поменять код в одном месте. К тому же я ещё добавил проверку на картошечность, которая на коде программы никак не видна, но спасает от ошибки. А если ещё добавит сюда класс Туфля и ему метод "чистить" (помыть, намазать кремом, натереть тряпкой) То в коде не надо греть голову на тему "как" картошка.чистить() ботинок.чистить() и всё выполнится правильно, как написано у каждого в классе. авторА затем препод задачку усложнил, сказал еще наследование применить. Вот пусть он скажет, что он имел ввиду. Потому что наследование это такая штука когда класс в наследство получает все(почти) данные и все(почти) методы родительского и добавляет к ним что-то своё. В данном случае, есть матрица с методами, которые решают задачу. Вопрос(преподу): что должно добавиться в дочернем классе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 12:38 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за наглядное и доступное описание класса. Все стало более ли менее понятно, а преподу обязательно задам вопрос. (надеюсь что зачет все таки получу :-) ). А вот насчет индексов... Может вы и правы, но в данном случае работает это точно так как я не только компилировала , но и запускала на выполнение. Все работает. Но учту на будущее, что индексы надо начинать с нуля. Большое спасибо. Почитаю книжку просто про наследование, если препод докопается, чтобы хоть что-то сказать. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2004, 13:26 |
|
||
|
Помогите с классом и наследование!
|
|||
|---|---|---|---|
|
#18+
2 CEMb авторВот пусть он скажет, что он имел ввиду. Потому что наследование это такая штука когда класс в наследство получает все(почти) данные и все(почти) методы родительского и добавляет к ним что-то своё. В данном случае, есть матрица с методами, которые решают задачу. Вопрос(преподу): что должно добавиться в дочернем классе? Скорее всего препод добивался от студента объявления метода занимающегося перестановкой виртуальным и замещения его в наследнике. Хотя и ежу понятно, что по хорошему эта задача решается не наследованием, а применением паттерна стратегия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 16:42 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=441&tid=2034757]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 400ms |

| 0 / 0 |
