Поменять местами первый и последний положительный элементы(указатели) - 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увеличивается на единицу, то в итоге цикл будет выполняться до тех пор, пока не будет найден положительный элемент (или, если массив пустой, до тех пор, пока не будет достигнут конец массива). Однако, в данном коде не выполняется обмен первого и последнего положительного элемента. Это потому, что в условии цикла нет оператора обмена. Если бы был добавлен оператор обмена, код мог бы работать корректно. Но без этого, код просто ищет первый положительный элемент и затем выходит из цикла.