Использование внешних файлов
Сформировать исходную заданную последовательность с помощью программы и сохранить ее в файле. Организовать чтение данных из файла, обработку массива в соответствии с алгоритмом и редактированием данных в том же файле. Вывести на экран данные входного файла и результаты превращений.
Дана последовательность a1...a30. Заменить каждый элемент суммой предыдущего элемента и максимального.
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "math.h"
#include "iostream"
int _main
{
int i, a, n = 30, b, max = -1000;
FILE *f;
f = fopen("pop.txt", "w");
for (i = 0; i < n; i++) {
a = rand() % 100;
fprintf(f, "%4d", a);
}
fclose(f);
f = fopen("pop.txt", "r");
b = ftell(f);
for (i = 0; i < n; i++) {
b = f
l(f);
fscanf(f, "%2d", &a);
printf("\n %2d %4d ", b, a);
}
fclose(f);
f = fopen("pop.txt", "a");
for (i = 0; i < n; i++)
if (a > max) max = a;
fprintf(f, "\n max= %3d", max);
printf("\n max= %3d ", max);
fclose(f);
}
Макс нашел. Осталось позаменять. Пробовал как-то через fseek, но чет не выходит. хелп
Ответы (1 шт):
Автор решения: Марк Яковлев
→ Ссылка
Я разобрался. Вот так кста
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "math.h"
#include "locale.h"
int main()
{
setlocale(LC_ALL, "Rus");
int poz, pozm, i, kol = 30, max;
int a, p;
FILE* pf_1;
//Занесение информации в файл
fopen_s(&pf_1, "ff1.dat", "w");
//printf("введите количество элементов");
//scanf_s("%d", &kol);
//printf("введите данные");
for (i = 0; i < kol; i++)
{
//scanf_s("%d", &a);
a = rand() % 25;
fprintf(pf_1, "%4d", a);
}
fclose(pf_1);
//Считывание информации из файла
printf("\n Последовательность1:\n");
fopen_s(&pf_1, "ff1.dat", "r+");
for (i = 0; i < kol; i++)
{
poz = ftell(pf_1);
printf("\n %4d", poz);
fscanf_s(pf_1, "%4d", &a);
printf(" %4d", a);
}printf("\n \n");
//fclose(pf_1);
max = 3;
pozm = poz;
fseek(pf_1, pozm, SEEK_SET);
for (int i = 0; i < kol - 1; i = i + 1)
{
fseek(pf_1, pozm - ((i + 1) * 4), SEEK_SET);
//poz = ftell(pf_1);
fscanf_s(pf_1, "%4d", &a);
//printf("\n %d %4d", poz, a);
p = a + max;
fseek(pf_1, pozm - (i * 4), SEEK_SET);
fprintf(pf_1, "%4d", p);
}
fclose(pf_1);
//Считывание информации из файла
printf("\n Последовательность2:\n");
fopen_s(&pf_1, "ff1.dat", "r");
for (i = 0; i < kol; i++)
{
poz = ftell(pf_1); printf("\n %4d", poz);
fscanf_s(pf_1, "%4d", &a);
printf(" %4d", a);
}printf("\n \n");
fclose(pf_1);
}