Определить количество чисел после удаления которых числовая последовательность станет монотонной. Работа с файлом - C (СИ)
Формулировка задачи:
Добрый день! Не так давно, к сожалению, изучаю язык, могу не многое но нужно реализовать программу а как не знаю. Помогите кто чем может. Как реализовать следующую программу: В строках текстового файла записаны числа, числа разделены пробелами и символами перевода строки. Необходимо определенное количество чисел после удаления которых числовая последовательность станет монотонной. Из работы с файлами могу только:
А как работать с данными файла я не знаю. Я так понимаю их можно поместить в массив и далее ими как то манипулировать. В общем помогите кто чем может!
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{ char ch, sl[50];
FILE *pf ; // Указатель на файлы
pf=fopen("new1.txt","r"); // Открытие файла pf для чтения
rewind(pf); // Возврат указателя на начало файла pf
fgets(sl,50,pf); // Чтение из файла pf строки в переменную sl
printf("%s\n",sl); // Вывод строки sl на дисплей
fclose(pf); // Закрытие файлов
getch();
}
Народ помогите хоть словом, я вообще в тупике...(((
Решение задачи: «Определить количество чисел после удаления которых числовая последовательность станет монотонной. Работа с файлом»
textual
Листинг программы
#include <stdio.h>
#define N 20
int A[N] = { 2, 1, 5, 7, 3, 4, 10, 14, 1, 15,
44, 35, 11, 18, 5, 3, 2, 7, 8, 40 };
char x[N];
main()
{ int i, j, ax, count;
memset(x, 0, N);
for(i=0; i<N; i++) {
if (x[i]) continue;
count = 1;
printf(" %d", A[i]);
ax = A[i];
for(j=i+1; j<N; j++) {
if (A[j] <= ax) continue;
printf(" %d", A[j]);
x[j] = 1;
ax = A[j];
count++;
}
printf(" =%d\n", count);
}
}
Объяснение кода листинга программы
В этом коде определен массив A, содержащий числа, и массив x, который изначально содержит только нули. Затем в цикле перебираются элементы массива A. Если текущий элемент уже был помечен как 0 в массиве x, то его пропускают. В противном случае, считают количество чисел, меньших или равных текущему, и выводят текущее число и его количество на экран. После этого помечают все числа, меньшие или равные текущему, в массиве x единицами. Код продолжается до тех пор, пока все элементы массива A не будут обработаны.