Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
1

Бинарный файл. Поставить последнее число из этого файла между 10-м и 11-м компонентами

08.04.2013, 22:05. Просмотров 709. Ответов 6
Метки нет (Все метки)

4. Компоненты бинарного файла – вещественные числа. Поставить последнее число из этого файла между 10-м и 11-м компонентами.
Вот листинг
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
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<process.h>
#include<conio.h>
void Datfile(void);
int main()
{
    FILE *fin;
    int i=0,t=0,m=0;
    float n,k;
    srand(time(0));
    Datfile();
    fin=fopen("file.dat","r+b");
    if(fin==NULL) exit(1);
    printf("OLD\n");
    while(fread(&n,sizeof(float),1,fin))
    { 
        printf("%.2f\t",n);
        i++;    
        
    }
    t=i;
    for(m=t;m>10;m--)
 
        fseek(fin,ftell(fin),SEEK_SET);
    fwrite(&n,sizeof(float),1,fin);
 
    printf("\nNEW\n");
rewind(fin);
while(fread(&n,sizeof(float),1,fin))
    { 
        printf("%.2f\t",n);
    }
printf("\n");
 fclose(fin);
    return 0;
 
}
void Datfile(void)
{
    FILE *f;
    int n,k;
        float a;
    f=fopen("file.dat","wb");
    if(f==NULL) exit(1);
    k=14;//rand()%101;
    for(n=0;n<k;n++)
    {
        a=(rand()%1001-500)/10.0;
        fwrite(&a,sizeof(a),1,f);
    }
    fclose(f);
}
у меня никак не получается сдвинуть элементы после вставки между 10 и 11 элементами(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 22:05
Ответы с готовыми решениями:

Дан файл,компонентами его яв-ся числа.Число компонент делится на 2.Создать новый файл,куда будет записываться наименьшее из каждой пары чисел 1 файла
#include &quot;fsteam&quot; #include &quot;iomanip&quot; using namespace std; int main() {ifstream in(&quot;f.txt&quot;);...

Пожалуйсто обясниту разницу на пример между TImage и TDBImage и т.д между обичнами компонентами и DB компонентами
Здарова люди ;) Пожалуйсто обясниту разницу на пример между TImage и TDBImage и т.д между обичнами...

Как последнее число поставить на место первого?
Циклически сдвиньте элементы списка вправо (A переходит на место A, A на место A, ..., последний...

Создать бинарный файл, компонентами которого является структура "Книга"
Создать бинарный файл, компонентами которого является структура содержащая поля: ФИО автора книги...

В типизированном файле с вещественными компонентами обменять местами мак-симальный элемент с первым нулевым элементом этого файла
В типизированном файле с вещественными компонентами обменять местами мак-симальный элемент с первым...

6
dmitry94
565 / 194 / 70
Регистрация: 25.05.2012
Сообщений: 804
09.04.2013, 07:02 2
Считывайте все числа в массив, оперируйте с массивом, а затем заново пишите файл.
0
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
09.04.2013, 08:53  [ТС] 3
Надо именно без дополнительного массива(
0
dmitry94
565 / 194 / 70
Регистрация: 25.05.2012
Сообщений: 804
09.04.2013, 09:35 4
Ну навскидку как можно сделать:
1. запомнить последний элемент файла
2. сдвинуть элементы с 11 по предпоследний, начиная с предпоследнего на 1 позицию
3. перезаписать последний элемент в 11 место.
fread,fseek,fwrite
0
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
09.04.2013, 19:39  [ТС] 5
да да, но как именно сдвинуть? у меня не получается
0
dmitry94
565 / 194 / 70
Регистрация: 25.05.2012
Сообщений: 804
10.04.2013, 08:02 6
Реализовано
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
 
int main()
{
    FILE *f;
    double test[20];
    srand (time(NULL));
 
    for (int i=0; i<20; i++)
        {
            test[i] = (double)(rand() % 100) / (double)(rand() % 200);
            printf("test[%d]=%f\r\n",i,test[i]);
    }
 
    // запись в файл массива слючайных чисел
    f = fopen("test.dat","wb");
    fwrite(test,sizeof(test),1,f);
    fclose(f);
 
    f = fopen("test.dat","r+b");
    fseek(f,0,SEEK_SET);
    double d,s_last;
    int s_pos;
    for (int i=0; i<20; i++)
    {
        fread((double *)&d,sizeof(double),1,f);
        printf("readed test[%d]=%f\r\n",i,d);
        s_pos = i;
    }
    // сохранение последнего элемента
    s_last = d;
    printf("last element=%f last position=%d\r\n",s_last,s_pos);
    
    // перемещение всех элементов на 1 позицию
    for (int i=s_pos; i>=11; i--)
    {
        fseek(f,(i-1)*sizeof(double),SEEK_SET);
        fread((double *)&d,sizeof(double),1,f);
        fseek(f,(0 /*на какую позицию перенести числа */)*sizeof(double),SEEK_CUR); 
        fwrite((double *)&d,sizeof(double),1,f);
    }
 
    // запись последнего элемента в 11 место
    fseek(f,(11-1)*sizeof(double),SEEK_SET);
    fwrite((double *)&s_last,sizeof(double),1,f);
    fclose(f);
 
    //контрольное чтение
    f = fopen("test.dat","rb");
    for (int i=0; i<20; i++)
    {
        fread((double *)&d,sizeof(double),1,f);
        printf("readed test[%d]=%f\r\n",i,d);
    }
 
    fclose(f);
 
   return 0;
}
1
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
10.04.2013, 19:30  [ТС] 7
Огромное спасибо)) очень выручили
0
10.04.2013, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 19:30

Создать файл А с вещественными компонентами. Все положительные компоненты файла А записать в файл В
Помогите пожалуйста. Создать файл А с вещественными компонентами. Все положительные компоненты...

Вычислить разность между значениями первой и последней компонентами файла.
Создать файл,компоненты(количество &lt;=8)которого являются вещественными числами.После создания файла...

Вычислить разность между значениями первой и последней компонентами файла
почему-то не совсем правильно считает uses crt; const max=8; var x:file; {ЌҐвЁЇЁ§Ёа®ў***л©...


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

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

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