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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы