0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 8
|
||||||
1 | ||||||
Задание с использованием Объединения26.11.2012, 23:20. Показов 1448. Ответов 4
Метки нет (Все метки)
Собственно, типичная курсовая по С++, 2-й курс, задание изложу ниже. Есть несколько вопросов к людям с соображалкой и знанием С++.
Написать программу, в которой объединение используется для хранения информации об одной из геометрических фигур: трапеции или треугольнике. Программа вычисляет площадь данных фигур и выводит результат. Предусмотреть меню. Результаты работы программы записать в файл. Итак. Вопрос. Насчет кода в общем-то проблем думаю у меня не возникнет. Вопрос только в использовании объединения. Конечно если бы писать все это через структуру, то и особых знаний не нужно было бы. А так, скажите пожалуйста, лучше всего использовать вот такой способ реализации как приведу ниже?
0
|
26.11.2012, 23:20 | |
Ответы с готовыми решениями:
4
Задание с использованием конструкторов и деструкторов Задание... о золотой горе с использованием рекурсии Задание с матрицами и использованием генератора случайных чисел Выполнить задание с использованием функций и текстовых файлов |
56 / 50 / 11
Регистрация: 10.11.2010
Сообщений: 132
|
|||||||||||
26.11.2012, 23:47 | 2 | ||||||||||
вместо этого:
к примеру sizeof(treugolnik)=32byte, а sizeof(trapecia)=64byte, то при вашем описании union - sizeof(square)=64byte; а в моем случае, в union square будет просто храниться указатель, который указывает на необходимую структуру, в этом случае sizeof(square)=sizeof(указателя)
1
|
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 8
|
||||||
27.11.2012, 12:10 [ТС] | 3 | |||||
Спасибо, главное структура программы в моей головушке образовалась. А с указателями и их использованием разберусь
Добавлено через 12 часов 18 минут Приведу кусок кода. Что-то сделал не так с объединением или структурами? И главный вопрос... В конце идет вычисление площади. Если брать типы для переменных скажем Int, а для площади Float, то считает неверно... Если все Float, то вообще билиберда. ХЕЛП!)
0
|
56 / 50 / 11
Регистрация: 10.11.2010
Сообщений: 132
|
|||||||||||
27.11.2012, 16:07 | 4 | ||||||||||
т.к. ваши данные и для трапеции и для треугольника имеют одинаковый размер, то можно избежать указателей:
можно уменьшить до 12 байт - (на 32битной арх.) для этого необходимо немного изменить саму структуру:
union использует память под хранение одного поля - в вашем случае память выделится под самую большую переменную - структуру TRIANGLE или TRAPEZIUM - разницы нет. А потом когда, вы посчитаете площадь, в выделенную память будет занесено значение fSquare (4байта), а остальные 8 байт будут содержать остатки от данных структуры (значения 2х последних полей структуры TRIANGLE или TRAPEZIUM).
1
|
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 8
|
||||||
28.11.2012, 17:41 [ТС] | 5 | |||||
Ну огромнейшее спасибо за помощь Уж очень упростили задачу. Возьмусь за ошибки ввода и сохранение в файл
Добавлено через 19 часов 9 минут Ну собственно окончательный вариант моего курсача таков. Если, конечно, без "проверки на дурака" примут. Теперь вот мучаюсь с блок-схемами через Edraw Max. Запись в делал в единичный файл, с последующей перезаписью поверх, имхо поленился, в спецификации не указано большего.
0
|
28.11.2012, 17:41 | |
28.11.2012, 17:41 | |
Помогаю со студенческими работами здесь
5
Дан массив целых чисел. Сделать задание с использованием пользовательских функций Реализовать задание с использованием функций (ввод матрицы, вывод матрицы, вычисление суммы) Задание по Mathcad с использованием while Задание с использованием рекурсии Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |