6 / 5 / 2
Регистрация: 05.10.2021
Сообщений: 357
|
||||||
1 | ||||||
Почему функция возвращает лишние символы?06.05.2022, 19:27. Показов 619. Ответов 2
Задание по теме перегрузка функций. Нужно было перегрузить функцию Sum так, чтобы она возвращала либо сумму элементов двумерного целочисленного массива (mas), либо принимала двумерный массив символов (mas2) и возвращала предложение (строку) символов с дополнением - после каждого символа, на котором заканчивалась строка в двумерном массиве (mas2), в новой строке должен стоять пробел, а в конце точка. В моем коде перегруженная функция char* Sum возвращает строку с 2 лишними символами. Получается: $~?МО їЦe? >+#~ї+ BMЎ??З.ЭЭ
Т.е. "ЭЭ" на конце - лишние, после точки ничего не должно быть. Если задаю размерность динамического массива str [n*m-2], из которого получается нужная строка символов, то возвращается правильное значение. Не понимаю, как это объяснить на защите лабораторной. Получается, что в динамический массив str записывается двумерный массив размерностью n*m + в динамический массив идут три пробела и точка, т.е. всего должно быть n*m+4. При этом размерность динамического массива, в котором больше символов, чем в двумерном [n*m], нужно указать n*m-2 вместо n*m+4, чтобы возвращалось правильное значение из функции. ?...
0
|
06.05.2022, 19:27 | |
Ответы с готовыми решениями:
2
Почему выводит лишние символы? Почему функция не возвращает значение? Почему функция всегда возвращает 0? Почему функция возвращает отрицательное число? Почему функция возвращает неправильное значение |
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
|
|
06.05.2022, 19:47 | 2 |
Функция
char* Sum у вас возвращает НЕ строку, а указатель на некий массив символов. С-строкой называется последовательность символов, завершающаяся символом '\0' .Распространенные ошибки Нет, это ничего не меняет кроме случайных совпадений. Никакого "правильного значения" не возвращается. Доступ к двумерному массиву как к одномерному - неопределенное поведение. Что это за загадочное назначение значений элементам типа char ? Почему % 1000 ? Что за "символы" при этом должны получиться?
1
|
6 / 5 / 2
Регистрация: 05.10.2021
Сообщений: 357
|
||||||
06.05.2022, 22:13 [ТС] | 3 | |||||
[QUOTE]
А если так сделать? Нужно ли где-то писать delete [] str в связи с тем, что создавался массив в динамической памяти?
0
|
06.05.2022, 22:13 | |
06.05.2022, 22:13 | |
Помогаю со студенческими работами здесь
3
Почему функция atan возвращает значения фрагментарно Почему функция atoi возвращает неожиданный результат? Класс Массив: почему функция возвращает адрес элемента, а не его значение? Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? Функция получения значения хэш-объекта возвращает непонятные символы Почему в строке появляются лишние символы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |