Форум программистов, компьютерный форум CyberForum.ru

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

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

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

16.05.2014, 20:12. Просмотров 321. Ответов 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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 20:12     В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное
Посмотрите здесь:

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

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

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

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

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

В массиве поменять местами его максимальное и минимальное значения - C++
В массиве из 15 вещественных чисел поменять местами его максимальное и минимальное значения.

Найти максимальное значение среди разрядов целого числа a - C++
зависает программа, стыдно что не получается даже такое решить( в чем ошибка: #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include...

Выборка массива максимальное/минимальное значение - C++
int A = {-1,4,-7,-2,4,2,6,76,4,-123}; int nMin = 0, nMax = 0; for (int i = 0; i &lt; n; i++) { if (A &lt; 0) { A = nMax; ...

В массиве целых чисел, рассматриваемом как соединение двух его отрезков, переставить начало и конец - C++
задача: дан массив целых чисел рассматриваемый как соединение двух его отрезков: x..x длины m и конца x..x длины n. не используя доп....

Определить в матрице минимальное и максимальное значение и их позиции - C++
помогите написать код...я просто в этом не очень разбираюсь...буду очень благодарен за помощь Постановка задачи: Выполнить...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5265 / 4585 / 1537
Регистрация: 14.04.2014
Сообщений: 18,218
16.05.2014, 20:29     В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное #2
Во-первых, убери возврат у vuvod(), она возвращает то, что за границами массива. Опиши её как void.
Вставить элемент у тебя не получится, это же не контейнер. Файл можо только перезаписать. Записываешь сначала длину n+2, затем найденный минимальный элемент, далее содержимое массива a[] и в конце максимальный элемент.
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");
}
Ответ Создать тему
Опции темы

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