Использование внешних файлов

Сформировать исходную заданную последовательность с помощью программы и сохранить ее в файле. Организовать чтение данных из файла, обработку массива в соответствии с алгоритмом и редактированием данных в том же файле. Вывести на экран данные входного файла и результаты превращений.

Дана последовательность 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);
}
→ Ссылка