Задача об указателях. Определить максимальный элемент массива и изъять его из массива - C (СИ)
Формулировка задачи:
Добрый вечер. Учусь на первом курсе, начали программировать на С. Все шло очень хорошо, пока не начали изучать указатели. Очень нужна помощь.
Задачка такова:
Есть массив действительных чисел. Нужно определить максимальный елемент массива и изьять его из массива, подвинув все значения, которые находятся за за максимальным, на одну позицию влево. Вывести сокращенный массив.Мой код:
#include <windows.h> #include <stdio.h> #include <conio.h> #define K 6 int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); #define K 6 double ar[K]; double max; double *p1=ar; int i; double * tempPointer; double * pointer_max; max = *p1; pointer_max = p1; printf("Введите массив\n"); for(tempPointer=p1 ; tempPointer < p1 + K ; tempPointer++) { scanf("%lf", tempPointer); if ( max < *tempPointer) { max = *tempPointer; pointer_max = tempPointer; } } for(tempPointer = pointer_max; tempPointer < p1 + K-1 ; tempPointer++) { *tempPointer = *(tempPointer + 1); printf ("%lf\n",*tempPointer); } getch(); }
Проблемки:
1) если последний елемент и есть максимальным, нужно вывести изначальный массив. Туплю как это сделать 2) данная программа при вводе, к примеру, елементов 1 5 9 4 3 2 выведет только 4 3 2, хотя нужен результат 1 5 4 3 2 Возможно что-то еще упустил Очень прошу помочь с задачкой, если получиться решить - обьяснить почему именно так. Да и хотел бы почитать о них более подробно с примерами решения задач и с толковым их обьяснениемРешение задачи: «Задача об указателях. Определить максимальный элемент массива и изъять его из массива»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 6 int main(int argc, char *argv[]) { int arr[N]; int i; int maxIndex = -1, maxValue; puts ("Enter array: "); for (i = 0; i < N; i++) { scanf ("%d", &arr[i]); } maxValue = arr[0]; for (i = 1; i < N; i++) { if (arr [i] > maxValue) { maxIndex = i; maxValue = arr [i]; } } if (maxIndex != -1) { for (i = maxIndex; i < N - 1; i++) { arr [i] = arr [i + 1]; } arr[N - 1] = 0; } puts ("New array: "); for (i = 0; i < N; i++) { printf ("%d\n", arr[i]); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д