Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания. - C (СИ)

Узнай цену своей работы

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

Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания. помогите плиз кто чем может.вот у меня даж не получаеться перенести в новый файл в порядке возрастаниятуплю кто чем может хелп)
#include <stdio.h>
#include <stdlib.h>
#define a 100
#define FIN_NAME "1.txt"
#define FOUT_NAME "2.txt"
 
int main()
{
        FILE *fin, *fout;
        float num;
        int cnt;
        
        fin = fopen(FIN_NAME, "r");      
        fout = fopen(FOUT_NAME, "w");
        cnt=0;     
        while ( fscanf(fin, "%f", &num) == 1 )
        {
            if ( cnt++)
            {
                if ( (num-1)>num<(num+1)  ||  (num-1)<num>(num+1))
                {
                        if ( fprintf(fout, "%.1f\n", cnt) < 0 )
                        {
                                perror("fprintf");
                                fclose(fin);
                                fclose(fout);
                                exit(1);
                        }
                }
        }
        }
         fclose(fin);
         fclose(fout);
         return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define a 100
#define FIN_NAME "1.txt"
#define FOUT_NAME "2.txt"
 
int main(void)
{
        FILE *fin, *fout;
        float num;
        int i,v;
        
        fin = fopen(FIN_NAME, "r");      
        fout = fopen(FOUT_NAME, "w");
             v=fstrlen(fin);
        while ( fscanf(fin, "%f", &num) == 1 )
        {
            for(i=v;;i--)
                if ( (num-1)>num<(num+1)  ||  (num-1)<num>(num+1))
                {
                        if ( fprintf(fout, "%.1f\n", i) < 0 )
                        {
                                perror("fprintf");
                                fclose(fin);
                                fclose(fout);
                                exit(1);
                        }
                }
        }
}
вот типа так???
 v=fstrlen(fin);
я знаю что тут надо какуето функцию для файла наподобии.какую?? помогите кто чем может

Решение задачи: «Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания.»

textual
Листинг программы
while ( fscanf(fin, "%f", &num) == 1 ) 
{
 d[i]=num; len++; 
}

Объяснение кода листинга программы

  1. В цикле while считываются числа из файла fin и сохраняются в массиве d
  2. Переменная len увеличивается на единицу после каждого успешного считывания числа
  3. Код в циклах while и for выполняется до тех пор, пока условие истинно
  4. Условие fscanf(fin, %f, &num) == 1 проверяет, было ли успешно считано число из файла
  5. Если число успешно считано, то переменная num принимает его значение, а переменная len увеличивается на единицу
  6. Значение переменной len используется для выделения памяти под массив d
  7. После завершения цикла, в массиве d сохраняются все числа из файла в порядке их чтения
  8. Далее, в цикле for происходит поиск локальных экстремумов в массиве d
  9. Переменная max инициализируется значением первого элемента массива d
  10. В каждой итерации цикла for, проверяется, является ли текущий элемент массива d максимальным
  11. Если текущий элемент больше max, то он становится новым max
  12. После завершения цикла, в переменной max сохраняется последнее максимальное значение
  13. Переменная min инициализируется значением первого элемента массива d
  14. В каждой итерации цикла for, проверяется, является ли текущий элемент массива d минимальным
  15. Если текущий элемент меньше min, то он становится новым min
  16. После завершения цикла, в переменной min сохраняется последнее минимальное значение
  17. Далее, в цикле for происходит сортировка массива d в порядке убывания
  18. В каждой итерации цикла for, элемент с индексом i сравнивается с min и max
  19. Если элемент больше min, но меньше max, то он меняется местами с элементом, следующим за max
  20. После завершения цикла, в переменной max сохраняется последний элемент массива d
  21. Результат выводится на экран с помощью функции printf

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


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

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

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