Поиск И Замена Числа В Файле (си)

Тема в разделе "C/C++/C#", создана пользователем Untiy16, 20 апр 2014.

  1. Untiy16

    Untiy16 New Member

    Регистрация:
    20 апр 2014
    Сообщения:
    1
    Симпатии:
    0
    Программа на СИ
    Дай файл целых чисел a1 ,...,an , что упорядочены по убыванию. Найти заданный элемент x. Если элемента х нет, то вставить его в файл так, чтобы файл остался упорядоченным по убыванию.

    Вот мой код: программа ищет элемент х. Помогите пожалуйста реализовать вставку элемента в файл если он не найден.

    Код (C++):
    #include <stdio.h>
    #include <conio.h>
    #include <locale.h>
    #include <stdlib.h>
    #include <math.h>

    FILE* createFileAuto(FILE *fp, int n)            
    {
    int cur;
    int i=0;
    for (int i=n;i>0;i--)
    {
    cur=i;
    fwrite(&cur, sizeof(int), 1, fp);
    }
    return fp;
    }

    FILE* printFile (FILE* fp, int n)
    {
    int cur;
    printf("\nСозданный файл:\n");
    for (int i=5;i<n;i++)
    {
    fread(&cur, sizeof(int), 1, fp);
    printf("%d ", cur);
    }
    return fp;
    }


    int main()
    {
    setlocale(LC_ALL,"rus");

    FILE * fp;
    int x;
    int n;
    printf("Введите количество чисел n>10 : ");
    start:
    scanf("%d", &n);
    if (n<1)
    {
    printf("(n>0): ");
    goto start;
    }
    if((fp=fopen("lab_15.txt","w+b"))==NULL)
    {
    printf("Ошибка при создании файла!\n");
    getch();
    exit(1);
    }
    createFileAuto(fp,n);
    fclose(fp);

    if((fp=fopen("lab_15.txt","r+b"))==NULL)
    {
    printf("Ошибка при открытии файла!\n");
    getch();
    exit(1);
    }

    printFile(fp,n);

    printf("\n\nВведите х: ");
    scanf("%d", &x);
    int s=0, i=0;
    fseek(fp,0,SEEK_SET);
    int cur;
    while (!feof(fp))
    {
    i++;
    fread(&cur, sizeof(int), 1, fp);
    if (cur==(x))
    {
    s=1;
    printf("\nЧисло x (%d) находится на %d позиции.", cur, i);
    }
    }
    if (s==0)
    printf("\nСреди данных чисел нет x");
     
Загрузка...

Поделиться этой страницей