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