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

Файлы - C++

Восстановить пароль Регистрация
 
lera8
 Аватар для lera8
630 / 213 / 26
Регистрация: 03.11.2009
Сообщений: 488
19.12.2009, 17:10     Файлы #1
Спасите меня от мучений с этими файлами Буду очень вам благодарна
В данном задании необходимо осуществить обработку бинарного файла (или файлов)
согласно условию варианта. Имя файла передается в параметрах командной строки, а если оно
не указано, то вводится с клавиатуры.
Дан файл, содержащий вещественные числа (тип double). Определить сумму чисел,
меньших среднего значения всех чисел в файле.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2009, 17:10     Файлы
Посмотрите здесь:

файлы C++
Файлы C++
C++ Файлы
Файлы C++
файлы C++
C++ Файлы....
файлы C++
Файлы C++
C++ файлы в С++
C++ Файлы
Файлы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
19.12.2009, 20:15     Файлы #2
А от чего именно спасать ?
lera8
 Аватар для lera8
630 / 213 / 26
Регистрация: 03.11.2009
Сообщений: 488
19.12.2009, 20:32  [ТС]     Файлы #3
От смерти в обнимку с языком Си и не возможностью решить эту задачу
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
19.12.2009, 20:35     Файлы #4
Спасать вижу смысл только тех, кто сам прилагает усилия.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
19.12.2009, 22:17     Файлы #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от lera8 Посмотреть сообщение
Дан файл, содержащий вещественные числа (тип double). Определить сумму чисел,
меньших среднего значения всех чисел в файле.
А сам "файл, содержащий вещественные числа" дадут, или тоже сделать надо?
на всякий случай вот Вам
файлосоздавалка
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
 
/*
*   создавалка двоичного файла, содержащие числа типа double 
*/
 
int main(int argc, char **argv){
    double d;
    FILE *f;
    char buf[BUFSIZ], *p, *file_name;
    
    if ( argc > 1 )
        file_name = argv[1];
    else {
        printf("Name for output file: ");
        if ( !fgets(buf, BUFSIZ, stdin) ){
            perror("Can't get name for file!\n");
            exit(1);
        }
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        if ( !*buf ){
            perror("Can't get name for file!\n");
            exit(1);
        }
        file_name = buf;
    }
    
    if ( ( f = fopen(file_name, "wb") ) == NULL ){
        perror("Can't open output file!\n");
        exit(1);
    }
    
    while ( 1 ){
        printf("Double value or q for quit: ");
        if ( !fgets(buf, BUFSIZ, stdin) ){
            perror("Can't get value!\n");
            exit(1);
        }
        if ( *buf == 'q' )
            break;
        
        d = strtod(buf, NULL);
        if ( errno == ERANGE ){
            printf("Bad value!\n");
            continue;
        }
        
        if ( fwrite(&d, sizeof(double), 1, f) != 1 ){
            perror("Can't write data to file!\n");
            exit(1);
        }
        printf("Saved to file.\n");
    }
    fclose(f);
    exit(0);
}
а вот
читалка и считалка
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/*
*   читалка двоичного файла и считалка суммы значений, меньших среднего арифметического 
*/
 
int main(int argc, char **argv){
    double *arr, average, sum;
    FILE *f;
    char buf[BUFSIZ], *p, *file_name;
    size_t count, i;
    long pos;
    
    if ( argc > 1 )
        file_name = argv[1];
    else {
        printf("Name for input file: ");
        if ( !fgets(buf, BUFSIZ, stdin) ){
            perror("Can't get name for file!\n");
            exit(1);
        }
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        if ( !*buf ){
            perror("Can't get name for file!\n");
            exit(1);
        }
        file_name = buf;
    }
    
    if ( ( f = fopen(file_name, "rb") ) == NULL ){
        perror("Can't open input file!\n");
        exit(1);
    }
    
    fseek(f, 0, SEEK_END);
    pos = ftell(f);
    rewind(f);
    if ( pos % sizeof(double) ){
        fprintf(stderr, "File corrupt!\n");
        exit(1);
    }
    count = pos / sizeof(double);
    if ( !count ){
        fprintf(stderr, "No data in file!\n");
        exit(1);
    }
    
    if ( ( arr = (double*)calloc(count, sizeof(double)) ) == NULL ){
        perror("Bad memory!\n");
        exit(1);
    }
    if ( fread(arr, sizeof(double), count, f) != count ){
        perror("Can't read file!\n");
        exit(1);
    }
    fclose(f);
    
    for ( sum = 0.0, i = 0; i < count; ++i )
        sum += arr[i];
    average = sum / (double)count;
    for ( sum = 0.0, i = 0; i < count; ++i )
        if ( arr[i] < average )
            sum += arr[i];
    
    printf("All %d values:\n", count);
    for ( i = 0; i < count; ++i )
        printf( ( i < count - 1 ) ? "%.2f " : "%.2f\n", arr[i]);
    printf("Average value: %.2f\n", average);
    printf("Sum of elements less than average is: %.2f\n", sum);
    
    free(arr);
    exit(0);
}


Не по теме:

Цитата Сообщение от odip Посмотреть сообщение
Спасать вижу смысл только тех, кто сам прилагает усилия.
Ну ладно Вам, барышня всё-таки...

lera8
 Аватар для lera8
630 / 213 / 26
Регистрация: 03.11.2009
Сообщений: 488
19.12.2009, 23:01  [ТС]     Файлы #6
easybudda, спасибо вам большое! Обязательно буду стараться разобраться с файлами=) Ещё раз вам спасибо
Yandex
Объявления
19.12.2009, 23:01     Файлы
Ответ Создать тему
Опции темы

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