Помогите пожалуйста

Определить, какую последовательность образуют элементы данного массива: строго возрастающую, строго убывающую, невозрастающую, неубывающую, неупорядочены

#include <windows.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <errno.h>


char* Rus(const char* text);
void main(void);
void input_rec(int);
int read_rec(int base, unsigned int pos);
void write_rec(int base, unsigned int pos, int* rea);
unsigned int get_rec_count(int base);

int* inp_1;
int* inp_zap;
int count_massiv;

void main(void)
{   
 int count;
 int var;
 int var_ch=-1;
 int read_c;
 int base;
 int i=0;
 int priz_vvod;
 int rea;
 int priz_otr=0;
 int priz_pol=0;
 base=open("base.dat",O_RDONLY); 
 if(base==-1)
  {
   base=open("base.dat",O_CREAT|O_BINARY,S_IREAD|S_IWRITE);
   close(base);
   base=open("base.dat",O_RDWR|O_BINARY,S_IREAD|S_IWRITE);
   system("cls");
   printf(Rus("Файл для записи массива создан.Данных в нём нет.\n"));
   printf(Rus("Для продолжения-ENTER.\n"));
   getch();
  }
 else
  {
   read_c=read_rec(base,i);
   if(read_c)
    {
     system("cls");
     printf(Rus("Файл данных уже существует.В нём имеются данные.\n"));
     close(base);
     base=open("base.dat",O_RDWR|O_BINARY,S_IREAD|S_IWRITE);
     printf(Rus("Для продолжения-ENTER.\n"));
     getch();
    }
   else
    {
     system("cls");
     printf(Rus("Файл данных уже существует.Данных в нём нет.\n"));
     close(base);
     base=open("base.dat",O_RDWR|O_BINARY,S_IREAD|S_IWRITE);
     printf(Rus("Для продолжения-ENTER.\n"));
     getch();
    }
  }
 do
  {
   system("cls");
   printf(Rus("Выберите пункт меню работы программы:\n"));
   printf(Rus("\n1) Ввод/Добавление информации в массив и запись в файл."));
   printf(Rus("\n2) Просмотр содержимого массива в оперативной памяти"));
   printf(Rus("\n3) Просмотр содержимого файла"));
   printf(Rus("\n4) Корректировка содержимого файла"));       
   printf(Rus("\n5) Считывание информации из файла в оперативную память"));
   printf(Rus("\n6) Обработка данных согласно условию"));
   printf(Rus("\n7) Завершение работы\n"));

   scanf("%d",&var);
   switch (var)
    {
     case 1:                    //ввод информации в массив и запись в файл
            {
             system("cls");
             count=0;
             priz_vvod=1;
             lseek(base,0,SEEK_END);
             count++;
             input_rec(count);
             while (priz_vvod==1)
              {
               printf(Rus("Будете ещё вводить информацию?:\n"));
               printf(Rus("Да-1, Нет-0:\n"));
               scanf("%d",&priz_vvod);
               if(priz_vvod==1)
                {
                 count++;
                 input_rec(count);
                }
              }       
             for(i=0;i<count;i++)
              {
               write_rec(base,i,inp_1+i);
              }
             count_massiv=count;
            }
            break;
     case 2:                    //Просмотр содержимого массива в оперативной памяти
            {
             printf("\n");
             if(inp_1)
              {
               for(i=0;i<count_massiv;i++)
                {
                 printf("%8d",*(inp_1+i));
                 if((i+1)%10==0)
                  printf("\n");
                }
              }
             else
              printf(Rus("Массив пустой.Данных в нём нет.\n"));
             printf(Rus("\nДля продолжения-<ENTER>:\n"));
             getch();
            }
            break;
     case 3:                    //Просмотр содержимого файла
            {            
             printf("\n");
             i=0;            
             rea=read_rec(base,i);
             if(rea)
              {
               printf("\n%8d ",*inp_zap);
               while(!eof(base))
                {
                 i++;
                 free(inp_zap);
                 rea=read_rec(base,i);
                 printf("%8d",*inp_zap);
                 if((i+1)%10==0)
                  printf("\n");
                }
              }
             else
              printf(Rus("Файл данных существует.Данных в нём нет.\n"));              
             printf(Rus("\nДля продолжения-<ENTER>:\n"));
             getch();
            }
            break;
     case 4:                    //корректировка содержимого файла
            {
             do
              {
               printf(Rus("Выберите требуемый вариант пункта подменю:\n"));
               printf(Rus("\n1) Удаление информации из файла"));
               printf(Rus("\n2) Возврат в предыдущее меню\n"));

               scanf("%d",&var_ch);
               switch(var_ch)
                {
                 case 1:
                        {
                         if(base)
                          close(base);
                         base=open("base.dat",O_RDWR|O_BINARY|O_TRUNC,S_IREAD|S_IWRITE);
                        }
                        break;
                 case 2:
                        break;          
                 default:
                         printf(Rus("Ошибка: некорректный ввод варианта работы"));
                }
              }
             while (var_ch!=2);
             var_ch=-1;
            }
            break;
     case 5:                    //Считывание информации из файла в оперативную память
            {
             i=0;
             count_massiv=0;
             free(inp_1);
             rea=read_rec(base,i);
             if(rea)
              {
               inp_1=(int*)calloc(1,sizeof(int*));
               if(inp_1)
                {
                 *inp_1= *inp_zap;
                 count_massiv++;
                 while(!eof(base))
                  {
                   i++;
                   free(inp_zap);
                   rea=read_rec(base,i);
                   inp_1=(int*)realloc(inp_1,(i+1)*sizeof(int));
                   if(inp_1)
                    {
                     *(inp_1+i)= *inp_zap;
                     count_massiv++;
                    }
                   else
                    {
                     printf(Rus("Нет возможности выделить память под оставшиеся элементы массива при считывание из файла\n"));
                     exit(-1);
                    }   
                  }
                }
               else
                {
                 printf(Rus("Нет возможности выделить память под первый элемент массива при считывание из файла\n"));
                 exit(-1);
                }   
              }
             else
              printf(Rus("Файл данных существует.Данных в нём нет.\n"));              
             printf(Rus("\nДля продолжения-<ENTER>:\n"));
             getch();
            }
            break;          
     case 6:                    //обработка информации
            {
             if(inp_1)
              {
               for(i=0;i<count_massiv;i++)
                {
                 if(*(inp_1+i)<0)
                  {
                   printf(Rus("Первый отрицательный элемент стоит на %d месте и равен %d\n"),i+1,*(inp_1+i));
                   priz_otr++;
                   break;
                  }
                }
               for(i=count_massiv-1;i>0;i--)
                {
                 if(*(inp_1+i)>0)
                  {
                   printf(Rus("Последний положительный элемент стоит на %d месте и равен %d\n"),i+1,*(inp_1+i));
                   priz_pol++;
                   break;
                  }
                }
               if(!priz_otr)
                printf(Rus("Отрицательные элементы в исходном массиве отсутствуют\n"));
               if(!priz_pol)
                printf(Rus("Положительные элементы в исходном массиве отсутствуют\n"));
              }
             else
              printf(Rus("Данные в исходном массиве отсутствуют\n"));
             printf(Rus("\nДля продолжения-<ENTER>:\n"));
             getch();
            }
            break;          
     case 7:
            break;
     default:
             printf(Rus("Ошибка: некорректный ввод варианта работы"));
    }
  }
 while(var!=7);
 close(base);
}

void input_rec(int count_rec)
{
 short err;
 if(count_rec==1)
  {
   inp_1=(int*)calloc(1,sizeof(int*));
   if(inp_1)
    {
     printf(Rus("Элемент массива[%d]="),count_rec);
     scanf("%d",inp_1);
    }
   else
    {
     printf(Rus("Нет возможности выделить память под первый элемент массива\n"));
     exit(-1);
    }   
  }
 else
  {
   inp_1=(int*)realloc(inp_1,count_rec*sizeof(int));
   if(inp_1)
    {
     printf(Rus("Элемент массива[%d]="),count_rec);
     scanf("%d",inp_1+(count_rec-1));
    }
   else
    {
     printf(Rus("Нет возможности выделить память под оставшиеся элементы массива\n"));
     exit(-1);
    }   
  }
}

int read_rec(int base, unsigned int pos)
{
 int read_c;
 //отсчет pos с нуля
 lseek(base,sizeof(int)*pos,SEEK_SET);
 inp_zap=(int*)calloc(1,sizeof(int));
 read_c=read(base,inp_zap,sizeof(int));
 if(read_c)
  {
   return(read_c);
  }
 else//освобождение памяти после неудачного чтения
  {
   free(inp_zap);
   return(read_c);
  }
}

void write_rec(int base, unsigned int pos, int* rea)
{
    long cur_pos = tell(base);
    lseek(base,sizeof(int)*pos,SEEK_SET);
    int write_c=write(base,rea,sizeof(int));
    if(write_c == -1)
      printf(Rus("\nНе всё записалось...\n"));
    else
      lseek(base,cur_pos,SEEK_SET);
}


unsigned int get_rec_count(int base)
{
 long cur_pos=tell(base);
 lseek(base,0,SEEK_END);
 long count_r = tell(base) / sizeof(int);
 lseek(base, cur_pos, SEEK_SET);
 return(count_r);
}

char bufRus[256];
char* Rus(const char* text)
{
 CharToOemA(text, bufRus);
 return bufRus;
}

Если считать «данным массивом» вашу программу, то элементы в нем явно неупорядочены ;-)

А в чем вопрос-то?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.