![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Rocket |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Объявил структуру Student, которая содержит четыре поля(фамилию, имя и отчество студента и год рождения), при этом строковые значения храню в виде массивов,а не указателей. Описал и инициализировал переменную st типа Student фамилией, именем и отчеством, не задавая год его рождения.
Проблемы возникли с написанием функции Student& trunc(Student& X), которая сокращает в структуре имя и отчество до инициалов (с точкой) и возвращает структуру X. Помогите пожалуйста с реализацией этой функции! Проверка работы функции нужно осуществить, передав ей переменную st, и воспользоваться возвращаемым значением функции для задания года рождения. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Проблема у тебя начинается с того, что ты пытаешься одному символу присвоить значение строки (и Surname, и Name, и Patronymic - это char-ы, а не строки)...
Кстати, компилятор тебя предупреждал об этом, почему это было проигнорировано? Ну, и свою попытку - в студию... Сообщение отредактировано: volvo - 16.03.2008 14:54 |
Rocket |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Проблема у тебя начинается с того, что ты пытаешься одному символу присвоить значение строки (и Surname, и Name, и Patronymic - это char-ы, а не строки)... Кстати, компилятор тебя предупреждал об этом, почему это было проигнорировано? Ну, и свою попытку - в студию...
А саму структуру задать так задавть:
? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата char s1,s2; Кстати, тебе обязательно извращаться с возвратом ссылки? Не проще вернуть новый объект из функции: struct Student { ? Сообщение отредактировано: volvo - 16.03.2008 15:31 |
Rocket |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
struct Student { Так нужно всё-таки реализовать финкцию "Student& trunc(Student& X)", и чтобы возращалась структура Х, при этом можно было задать год, воспользовавшись возвращаемым значением функции. И ещё два вопроса: 1. Возможно реализовать без использования конструктора? 2. Как работает "sprintf"? |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Возможно реализовать без использования конструктора? "Возможно ездить на автомобиле задним ходом?" Возможно, но не все же время! Далеко не уедешь. Вот так же и здесь: если ты используешь С++ - так используй, его. А нужен непонятно как урезанный функционал - так пиши на чистых Сях, без конструкторов, ссылок и многих других вещей...Цитата Как работает "sprintf"? Точно так же, как и printf, только печатает в строку, заданную первым параметром. В MSDN написано...Цитата Так нужно всё-таки реализовать финкцию "Student& trunc(Student& X)", и чтобы возращалась структура Х Чтоб возвращалась "структура X" надо делать так, как я написал выше. А то, что хочешь ты - это сделать, чтобы возвращалась "ссылка на структуру X", пойми это наконец! Отсюда до ошибки - одно движение. Ну, извращайся, дело твое:Student& trunc(Student& X) Сообщение отредактировано: volvo - 16.03.2008 16:55 |
Rocket |
![]()
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Отсюда до ошибки - одно движение. Ну, извращайся, дело твое: Да так в задание написано. Тут ещё нужно проверить работу функции, если: i) структура передается и возвращается по ссылке ii) структура передается в функцию по ссылке, а возвращается по значению iii) структура передается по значению, а возвращается по ссылке iv) и передача, и возврат из функции производятся по значению
Это, надо понимать, первый пункт. Проблема в том, что не сокращается имя и отчество... |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата Проблема в том, что не сокращается имя и отчество... Ты мою подпись читал внимательно? Перечитай еще раз, особенно то, что выделено красным...Смотри сюда: Эскизы прикрепленных изображений ![]() |
Rocket |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
ii) структура передается в функцию по ссылке, а возвращается по значению Это тоже уже было - см. четвертый пост. iii) структура передается по значению, а возвращается по ссылке Вот тут будет засада:Student& trunc3(Student X) // передаем по значению, возвращаем ссылку, потому как будет создаваться временный объект, и здесь-то точно не будет сокращаться имя и отчество. Для того, чтобы поймать создание временного объекта - опиши еще один конструктор: struct Student {, и запусти программу с trunc3... Да так в задание написано. Тут ещё нужно проверить работу функции, если:iv) и передача, и возврат из функции производятся по значению Я не понял, тебе что, нужны 4 разные функции, которые работали бы для 4-х пунктов задания? Или прото написать одну и проверить на ней остальные варианты? |
Rocket |
![]()
Сообщение
#11
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Я не понял, тебе что, нужны 4 разные функции, которые работали бы для 4-х пунктов задания? Или прото написать одну и проверить на ней остальные варианты? Да это нужно на одной все варианты проверить, когда будут изменятся поля, когда нет. В общем разобрался я. Ещё раз спасибо за помощь! ![]() |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 14:19 |