Задача об указателях. Определить максимальный элемент массива и изъять его из массива - 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;
}