Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vl22d
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 12
#1

В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное - C++

16.05.2014, 20:12. Просмотров 382. Ответов 2
Метки нет (Все метки)

В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное.
В общем я написал но оно почему то не пишет в конец максимальный элемент и вставляя минимальный заменяет одну цифру..Помоги пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <stdio.h>
#include <iostream>
using namespace std;
 
int poisk()
{
    FILE *f;
    int i, n, *a;
    f = fopen("D:\\lab14.dat", "rb+");
    fread(&n, sizeof(int), 1, f);
    a = new int[n];
    fread(a, sizeof(int), n, f);
    int imax = 0;
    int imin = 0;
    int max = a[0];
    int min = a[0];
    for (i = 1; i < n; i++)
    {
        if (a[i]>max)
        {
            max = a[i];
            imax = i;
        }
        if (a[i] < min)
        {
            min = a[i];
            imin = i;
        }
    }
    fclose(f);
    f = fopen("D:\\lab14.dat", "wb+");
    fseek(f, 0 * sizeof(int), SEEK_SET);
    fwrite(&min, sizeof(int), 1, f);
    fseek(f, 0 * sizeof(int), SEEK_END);
    fwrite(&max, sizeof(int), 1, f);
    fclose(f);
    f = fopen("D:\\lab14.dat", "rb+");
    for (i = 0; i < n + 2; i++)
    {
        fread(a, sizeof(int), n, f);
        cout << a[i] << " ";
    }
    fclose(f);
    return a[i];
}
int vuvod()
{
    FILE *f;
    int i, n, *a;
    f = fopen("D:\\lab14.dat", "rb");
    fread(&n, sizeof(int), 1, f);
    cout << "n= "<< n << endl;
    a = new int[n];
    fread(a, sizeof(int), n, f);
    for (i = 0; i < n; i++)
        cout << a[i] << " ";
    fclose(f);
    cout << endl;
    return a[i];
}
int main()
{
    int a, i, n;
    FILE *f;
    f = fopen("D:\\lab14.dat", "wb");
    cout << "n=";
    cin >> n;
    fwrite(&n, sizeof(int), 1, f);
    for (i = 0; i < n; i++)
    {
        cout << "a=";
        cin >> a;
        fwrite(&a, sizeof(int), 1, f);
    }
    fclose(f);
    vuvod();
    poisk();
    system("Pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 20:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное (C++):

В начало двоичного файла целого типа дописать нечетные элементы этого файла. - C++
Вот прога для записи четных файлов...в конец Мне нужно в начало....нечетные...помогите разобраться как сделать!!!:drink: #include...

При записи в начало бинарного файла удаляется все его содержимое - C++
Есть бинарный файл, в котором в самом начале 2 байта отделены для значения int, а далее идут структуры. Нужно сменить это значение int в...

Как дописать в конец числа цифру при этом обнулив его начальное значение на с++? - C++
Как дописать в конец числа цифру при этом обнулив его начальное значение на с++? Например было 0,152 стало 0,0005; 1,22=0,005

Дано натуральное число n<=99. дописать к нему цифру k в начало и в конец - C++
дано натуральное число n&lt;=99. дописать к нему цифру k в начало и в конец

Максимальное и минимальное значение типа "long double" - C++
Здравствуйте. 1.7976931348623157e+308 == std::numeric_limits&lt;double&gt;::max(); 2.2250738585072014e-308 ==...

Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных. - C++
Есть массив А, который вводится с клавиатуры. Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных....

2
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
16.05.2014, 20:29 #2
Во-первых, убери возврат у vuvod(), она возвращает то, что за границами массива. Опиши её как void.
Вставить элемент у тебя не получится, это же не контейнер. Файл можо только перезаписать. Записываешь сначала длину n+2, затем найденный минимальный элемент, далее содержимое массива a[] и в конце максимальный элемент.
1
vl22d
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 12
16.05.2014, 21:37  [ТС] #3
а как это правильно написать? что то у меня не получаеться

Добавлено через 58 минут
я не понимаю почему через команду SEEK_END максимальный элемент записывается сразу после минимального а не в конце
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
#include <iostream>
using namespace std;
 
void poisk()
{
    FILE *f;
    int i, n, *a;
    f = fopen("D:\\lab14.dat", "rb+");
    fread(&n, sizeof(int), 1, f);
    a = new int[n];
    fread(a, sizeof(int), n, f);
    int imax = 0;
    int imin = 0;
    int max = a[0];
    int min = a[0];
    for (i = 1; i < n; i++)
    {
        if (a[i]>max)
        {
            max = a[i];
            imax = i;
        }
        if (a[i] < min)
        {
            min = a[i];
            imin = i;
        }
    }
    fclose(f);
    f = fopen("D:\\lab14.dat", "wb+");
    for (i = 0; i < n + 2; i++)
    {
        int p = a[i];
        fwrite(&p, sizeof(int), 1, f);
    }
    fseek(f, 0 * sizeof(int), SEEK_SET);
    fwrite(&min, sizeof(int), 1, f);
    for (i = 0; i < n + 2; i++)
    {
        int p = a[i];
        fwrite(&p, sizeof(int), 1, f);
    }   
    fseek(f, 0 * sizeof(int), SEEK_END);
    fwrite(&max, sizeof(int), 1, f);
    for (i = 0; i < n + 2; i++)
    {
        int p = a[i];
        fwrite(&p, sizeof(int), 1, f);
    }
    fclose(f);
    f = fopen("D:\\lab14.dat", "rb+");
    for (i = 0; i < n + 2; i++)
    {
        fread(a, sizeof(int), n+2, f);
        cout << a[i] << " ";
    }
    fclose(f);
    
}
void vuvod()
{
    FILE *f;
    int i, n, *a;
    f = fopen("D:\\lab14.dat", "rb");
    fread(&n, sizeof(int), 1, f);
    cout << "n= "<< n << endl;
    a = new int[n];
    fread(a, sizeof(int), n, f);
    for (i = 0; i < n; i++)
        cout << a[i] << " ";
    fclose(f);
    cout << endl;
    
}
int main()
{
    int a, i, n;
    FILE *f;
    f = fopen("D:\\lab14.dat", "wb");
    cout << "n=";
    cin >> n;
    fwrite(&n, sizeof(int), 1, f);
    for (i = 0; i < n; i++)
    {
        cout << "a=";
        cin >> a;
        fwrite(&a, sizeof(int), 1, f);
    }
    fclose(f);
    vuvod();
    poisk();
    system("Pause");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 21:37
Привет! Вот еще темы с ответами:

Написать программу копирования файла. В конец каждой строки файла дописать количество пробелов в строке - C++
Чтение происходит блоками. Обработать ошибки Я пока просто смогла скопировать один файл в другой, а как добавить количество пробелов...

Дописать символ в начало файла - C++
Добрый день подскажите плиз что не так уже голова распухла #include&lt;fstream&gt; #include&lt;iostream&gt; using namespace std; void...

Перенос в начало списка его максимального элемента, а в конец минимальный - C++
нужно написать функцию,которая переносит в начало непустого списка L его максимальный элемент а в конец минимальный.

Для данного вещественного х найти значение следущей функции f, принимающей значение целого типа: - C++
0, если х&lt;0, f(x) = 1, если принадлежит[0,1),[2,3),..., -1, если х принадлежит [1,2),[3,4), ... .


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru