Поменять местами первый и последний положительный элементы(указатели) - C (СИ)
Формулировка задачи:
Си. Задание заключается в том, чтобы максимально много использовать в коде указатели. (без malloc() free() и тп) Мой код неверен (привел в виде примера), кучу глупостей вижу, но уже больше не могу
Насколько я понимаю в верном решении еще и переменные perv и posl должны быть указателями?
#include <stdio.h> /*В заданном одномерном массиве целого типа поменять местами следующие 2 элемента: первый и последний положительные.*/ void main() { int a[3]; int *i, *j, perv, posl, temp; for (i=a; i<a+3; i++) { scanf("%d", i); if (*i>0) posl = *i; //находим последний положительный элемент массива } for (j=a; j<a+3; j++) { if (*j>0) { perv = *j; //находим первый положительный элемент массива break; } } printf("\n"); temp = *i; *i = *j; *j = temp; printf("%d\n", *(a+0)); printf("%d\n", *(a+1)); printf("%d\n", *(a+2)); }
Решение задачи: «Поменять местами первый и последний положительный элементы(указатели)»
textual
Листинг программы
while (*(++first) <= 0);
Объяснение кода листинга программы
first
- указатель на первый элемент в массиве*
- оператор разыменования указателя(++first)
- выражение, увеличивающее значение указателя на единицу (указатель на следующий элемент)<= 0
- условие, проверка, что значение элемента меньше или равно нулюwhile
- цикл, выполняющийся до тех пор, пока условие верно В данном коде, переменнаяfirst
указывает на первый элемент в массиве. Циклwhile
будет выполняться до тех пор, пока значение элемента, на который указываетfirst
, меньше или равно нулю. Поскольку в начале циклаfirst
увеличивается на единицу, то в итоге цикл будет выполняться до тех пор, пока не будет найден положительный элемент (или, если массив пустой, до тех пор, пока не будет достигнут конец массива). Однако, в данном коде не выполняется обмен первого и последнего положительного элемента. Это потому, что в условии цикла нет оператора обмена. Если бы был добавлен оператор обмена, код мог бы работать корректно. Но без этого, код просто ищет первый положительный элемент и затем выходит из цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д