Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания. - 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++; }
Объяснение кода листинга программы
- В цикле while считываются числа из файла
fin
и сохраняются в массивеd
- Переменная
len
увеличивается на единицу после каждого успешного считывания числа - Код в циклах while и for выполняется до тех пор, пока условие истинно
- Условие fscanf(fin,
%f
, &num) == 1 проверяет, было ли успешно считано число из файла - Если число успешно считано, то переменная
num
принимает его значение, а переменнаяlen
увеличивается на единицу - Значение переменной
len
используется для выделения памяти под массивd
- После завершения цикла, в массиве
d
сохраняются все числа из файла в порядке их чтения - Далее, в цикле for происходит поиск локальных экстремумов в массиве
d
- Переменная
max
инициализируется значением первого элемента массиваd
- В каждой итерации цикла for, проверяется, является ли текущий элемент массива
d
максимальным - Если текущий элемент больше
max
, то он становится новымmax
- После завершения цикла, в переменной
max
сохраняется последнее максимальное значение - Переменная
min
инициализируется значением первого элемента массиваd
- В каждой итерации цикла for, проверяется, является ли текущий элемент массива
d
минимальным - Если текущий элемент меньше
min
, то он становится новымmin
- После завершения цикла, в переменной
min
сохраняется последнее минимальное значение - Далее, в цикле for происходит сортировка массива
d
в порядке убывания - В каждой итерации цикла for, элемент с индексом
i
сравнивается сmin
иmax
- Если элемент больше
min
, но меньшеmax
, то он меняется местами с элементом, следующим заmax
- После завершения цикла, в переменной
max
сохраняется последний элемент массиваd
- Результат выводится на экран с помощью функции printf
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д