Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания. - 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