Ошибочный довод "против" strrev (); en c

4
задан 07.12.2019, 17:21
1 ответ

У ошибки

cГіdigo есть ошибка офсет by 1, а именно, цикл работает однажды mГЎs, которого deberГ - в.

относится друг к другу об этом цикле:

for(i=0;i<=sizeof(palindromo);i++){
    temp[i]=palindromo[i];

}

sizeof(palindromo) возвращает тебе tamaГ±o в байт, размещенный для переменной palindromo, и так как ты заявил Г©sta как array 100 char, результата serГЎ 100 байт. Но положения array в действительности идут с 0 до 99, из-за которого она condiciГіn for deberГ, - когда это i<sizeof(palindromo), вместо i<=sizeof(palindromo).

ВїPor quГ© это меняет первую букву palindromo?

Как следствие цикл повторяется 101 раз вместо 100. В Гєltima iteraciГіn estГЎs копируя в нее posiciГіn 100 из переменной temp она posiciГіn 100 из переменной palindromo. Эти положения в действительности estГЎn уже вне корреспондентов arrays.

Из-за порядка, в котором ты объявил переменные, оказывается, что я участвую в рыцарском турнире despuГ©s, которого я закончил array temp, начинается array palindromo, так как локальные переменные сохраняют в батарейке в обратном порядке в, как они высказались.

AsГ - что, когда "ты вытекаешь из-за 1" из array temp, ты в действительности "входишь" из-за начала array palindromo. Следовательно, когда ты пишешь что-то в ней posiciГіn 100 из temp, estГЎs в действительности sobeescribiendo она posiciГіn 0 из palindromo. Это объясняет, что первый характер "вышел плохо".

В частности то, что ты пишешь в этой posiciГіn, - то, что ты читаешь palindromo[100], который также не существует, потому что ты вытек tambiГ©n из этого array. Но в этом случае (из-за того, что первой переменной - palindromo ее funciГіn) мы не знаем quГ© есть mГЎs allГЎ. SerГЎ другая direcciГіn внутри батарейки, которая не соответствует ни одной из твоих локальных переменных. Возможно состойте та direcciГіn возврата, в том, что может отличаться в каждый ejecuciГіn то, что explicarГ, - которому первый carГЎcter palindromo изменил из-за "случайной" различной стоимости каждый раз.

, Когда ты используешь strcpy() проблема, подлатывает, потому что funciГіn он повторяет эту sГіlo до того, чтобы находить завершающего цепи. Не ты copiarГЎ 100 символов, а sГіlo столькие как покажите strlen(palindromo), сшейте, что tambiГ©n podrГ-схвати использовать раньше tГє вместо sizeof(). В этом случае sГ - что tendrГ-эксперт, который должен помещать <=, так как нужно копировать один carГЎcter mГЎs: завершающий.

добавочное Замечание

Она condiciГіn cambios==1 когда бы то ни было serГЎ верная. nГєmero изменений mГ-nimo 2, так как во время проверения palГ-ndromo ты пробегаешь целую цепь с начала до конца с i, и с конца сначала с j. Если характер не совпадает, а именно, если temp[i]!=temp[j], это contarГЎs два раза, когда j и i обменяются Вашей стоимостью в одной iteraciГіn будущая.

3
ответ дан 21.12.2019, 12:19