Найти максимальный из элементов массива, не являющихся ни локальным минимумом, ни локальным максимумом - C (СИ)

Формулировка задачи:

Помогите пожалуйста найти ошибку в решении задачи с массивами. Дан массив размера N. Найти максимальный из его элементов, не являющихся ни локальным минимумом, ни локальным максимумом. Если таких элементов в массиве нет, то вывести 0. локальный минимум — это элемент, который меньше любого из своих соседей локальный максимум — это элемент, который больше любого из своих соседей
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
    int i,j=0,flag,n,*a,*b,k;
    printf ("Vvedine razmer:");
    scanf ("%d",&n);
    a = (int *)malloc(n * sizeof(int));
    for (i=0;i<n;i++)
    {
     printf ("Vvedine chislo [%d]:",i);
     flag=scanf ("%d",&a[i]);
     if(flag!=1)
     exit (-1);
    }
    for (i=1;i<n-1;i++)
    {
       if(((a[i]<=a[i+1])&&(a[i]>=a[i-1]))||((a[i]>=a[i+1])&&(a[i]<=a[i-1])))
       {
          j++;
          if(j==1)
          {b = (int *)malloc(j * sizeof(int));}
          else
          b = (int *)realloc(b,j * sizeof(int));
          b[j]=a[i];
          printf ("%d\n",j);/*количество элементов нового массива*/
       }
    }
    if(j==0)
    {
       printf ("0\n");
    }
    else
    {
    for(i=0;i<j;i++)
    {
        printf ("%d\n",b[i]);/*элементы нового массива*/
    }
    printf ("\n");
    for (i=0;i<j;i++)
    {
        if(b[i]>b[i+1])
        {
          k=b[i];
          b[i]=b[i+1];
          b[i+1]=k;
        }
    }
    for (i=0;i<j;i++)
    {
        printf ("%d",b[i]); /*упорядоченные элементы нового массива*/
    }
    }
    getch ();
    return 0;
}

Код к задаче: «Найти максимальный из элементов массива, не являющихся ни локальным минимумом, ни локальным максимумом - C (СИ)»

textual
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main ()
{
    int i,j=0,flag,n,*a,*b,k,array[50],o=0,max;
    printf ("Vvedine razmer:");
    scanf ("%d",&n);
    int m=0,x=0;
    a = (int *)malloc(n * sizeof(int));
    for (i=0;i<n;i++)
    {
     printf ("Vvedine chislo [%d]:",i);
     flag=scanf ("%d",&a[i]);
    }
    for (i=1;i<n-1;i++)
    {
       if ((a[i]<=a[i+1])&&(a[i]<=a[i-1])) //min
        printf("Min: %d\n",a[i]);
         else
          {
           m=a[i];
           printf("Nemin===%d\n",m);
          }
       if ((a[i]>=a[i+1])&&(a[i]>=a[i-1]))   //Max
        printf("Max: %d\n",a[i]);
         else
          {
           x=a[i];
           printf("Nemax===%d\n",x);
          }
       if (m==x)
        {
         printf ("Ne max/Ne min==%d\n",m);  //не минимум/не максимум, отправляем его в Mass
         array[o]=m;
         printf ("Mass= =%d\n", array[o]);
         o++;
        }
    }
    printf("\n");
    max=array[0];
    for (k=0; k<o; k++)
     {
      if (array[k]>max)
       max=array[k];
     }
    printf("Maximal Element=%3d",max);
    getch ();
    return 0;
}

9   голосов, оценка 4.333 из 5


СОХРАНИТЬ ССЫЛКУ