Пользователь помещает неизвестное количество целых чисел в массив (динамический). Программа должна выводить эти числа в обратном порядке, например: Целые числа в обратном порядке. Exmp. 324,12,5987 → 423, 21, 7895 Exmp. 123, 100 → 321, 1 (два 0 удаляются)
Я не уверен, что я на правильном пути, но я искренне надеюсь, что кто-то может предложить мне решение. Прямо сейчас, я получаю ошибку "Ошибка сегментации" – может ли это быть связано с пространством массива?
Вот мой код на данный момент:
c++ arrays reverse
2 ответа
Здесь возникает segmentation fault поскольку count не инициализируется. Я нашел много ошибок в вашей программе, например:
Лучше вы можете использовать функцию для отмены каждого числа a[i] .
И вы можете сделать так:
Или вы можете просто сделать это, как показано ниже:
Другой способ сделать это, сначала сделать каждое число int to string первым, а затем reverse его.
Как правило: попробуйте сделать свой код более модульным. Я ожидал бы найти функцию, которая вычисляет обратную величину для одного числа. Это проще для записи и гораздо проще отлаживать, поскольку вы разделяете две задачи: собираете данные, отменяете целое число.
Во всяком случае, глядя глубже в вашем коде: кажется, что после того, как вы вычислили count , содержание переменной a[i] был разрушен. ( a[i]==0 , чтобы выйти из в while петля).
Простой способ обратного преобразования десятичного числа:
Данная статья написана командой Vertex Academy. Это одна из статей из нашего "Самоучителя по Java."
Напишите программу, которая меняет местами элементы одномерного массива из String в обратном порядке. Не используйте дополнительный массив для хранения результатов.
Решение:
Комментарии к задаче:
В результате выполнения этого кода получим перевернутый массив: вместо "Каждый охотник желает знать где сидит фазан" – "фазан сидит где знать желает охотник Каждый "
Как была решена задача? Основная ее часть – это фрагмент:
Он по очереди меняет местами противоположные элементы массива, используя как посредника дополнительную переменную String temp (temp – от temporary, "временный"). Можно было бы обойтись и без нее, если бы массив хранил переменные числового типа.
Тут есть a[i] и малопонятное a[n-i-1]. Но на самом деле n-i-1 это просто формула для определения "противоположного" элемента массива:
Если бы мы имели массив, который бы состоял из элементов a, b, c, d, e и f, то есть массив из 6 элементов (n=6), "противоположным" (то есть элементом a[n-i-1]) для каждого из них были бы f для a, e для b и d для c. Цикл из фрагмента кода выполнялся бы три раза, до элемента d (i=0, 1, 2). Граница выполнения массива показана оранжевой линией на рисунке.
Так, обратите внимание, что мы не должны проходить циклом весь массив, чтобы поменять его элементы местами.
Надеемся – наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.
Ответ
var a:array [1..n] of integer;
for i:= 1 to n do
writeln(‘Элементы массива в обратном порядке: ‘);
for i:= n downto 1 do write (a[i],’ ‘);
writeln(‘Поменять местами первый и последний элементы: ‘);
for i:= 1 to n do write (a[i],’ ‘);
writeln(‘Среднее арифметическое всех элементов массива равно ‘,s/n:0:3)