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

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

Войти
Регистрация
Восстановить пароль
 
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
#1

Файлы, работа с ними (ч.1) - C++

05.05.2010, 19:01. Просмотров 772. Ответов 9
Метки нет (Все метки)

Народ, плз помогите с задачами на языке Си
Задача 1. Дана строка S. Если S является допустимым именем файла, то создать пустой файл с этим именем и вывести True. Если файл с именем S создать нельзя, то вывести False.

Задача 2. Дано имя файла и целое число N (> 1). Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел (2, 4, …).

Задача 3. Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов арифметической прогрессии с начальным членом A и разностью D:
A, A + D, A + 2*D, A + 3*D, … .

Народ, плз помогите с задачами, и если можете подскажите книгу по Си чтоб было очень понятно
И если не затруднит, плз хелп и объясните
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Файлы, работа с ними (ч.1) (C++):

Файлы, работа с ними (ч.2) - C++
Люди, помогите плз с задачами на файлы ( на языке Си ) задачи с файлами - вообще ппц, не понимаю. Хелп Плиз!:( Задача 1. Дан файл целых...

Файлы и работа с ними - C++
Пытаюсь написать программу записывающую в файл строку "123123а" Но вместо этого программа записывает строку "1Н2Н3Н1Н2Н3НaН" В чем...

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними - C++
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

Массивы и работа с ними - C++
помогите, пожалуйста, написать программу Дана вещественная прямоугольная матрица размера M*N. • Упорядочить столбцы матрицы по...

Где должны находиться текстовые файлы, для того чтобы с ними можно было работать? - C++
подскажите пожалуйста,где должны находиться текстовые файлы, для того чтобы с ними можно было работать? #include "stdafx.h" #include...

Чтение данных из файла и работа с ними - C++
Может ли кто нибудь помочь? Нужно в Visual Studio 2010 написать программу, которая будет из файла читать определённые значения...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
06.05.2010, 10:35 #2
Цитата Сообщение от Лестат Посмотреть сообщение
Задача 3. Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов арифметической прогрессии с начальным членом A и разностью D:
A, A + D, A + 2*D, A + 3*D, …
Если "файл вещественных чисел" - это бинарный файл, то вот:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SIZE 10
 
int main(void){
    double arr[SIZE], a, d;
    size_t i;
    char buf[MAX_PATH];
    FILE *f;
    
    printf("A = ");
    if ( scanf("%lf", &a) != 1 ){
        perror("scanf");
        exit(1);
    }
    printf("B = ");
    if ( scanf("%lf%*c", &d) != 1 ){
        perror("scanf");
        exit(1);
    }
    
    printf("Name for output file: ");
    if ( scanf("%s", buf) != 1 ){
        perror("scanf");
        exit(1);
    }
    
    for ( i = 0; i < SIZE; ++i )
        arr[i] = a + d * i;
    
    if ( ( f = fopen(buf, "wb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( fwrite(arr, sizeof(double), SIZE, f) != SIZE ){
        perror("fwrite");
        if ( fclose(f) )
            perror("fclose");
        exit(1);
    }
    
    if ( fclose(f) ){
        perror("fclose");
        exit(1);
    }
    f = NULL;
    
    memset(arr, 0, sizeof(double) * SIZE); /* для чистоты эксперимента */
    
    if ( ( f = fopen(buf, "rb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( fread(arr, sizeof(double), SIZE, f) != SIZE ){
        perror("fread");
        if ( fclose(f) )
            perror("fclose");
        exit(1);
    }
    if ( fclose(f) )
        perror("fclose");
    
    for ( i = 0; i < SIZE; ++i )
        printf("%f\n", arr[i]);
    
    exit(0);
}
Добавлено через 1 час 12 минут
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
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
int main(void){
    int n, val;
    char buf[MAX_PATH];
    FILE *f;
    
    printf("Name for output file: ");
    if ( scanf("%s", buf) != 1 ){
        perror("scanf");
        exit(1);
    }
    printf("N = ");
    if ( scanf("%d", &n) != 1 ){
        perror("scanf");
        exit(1);
    }
    if ( n < 2 ){
        fprintf(stderr, "Too small!\n");
        exit(1);
    }
    if ( n > INT_MAX / 2 ){
        fprintf(stderr, "Too big!\n"); /* ;) */
        exit(1);
    }
    if ( ( f = fopen(buf, "wb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    for ( val = 2; n > 0; val += 2, --n ){
        if ( fwrite(&val, sizeof(int), 1, f) != 1 ){
            perror("fwrite");
            if ( fclose(f) )
                perror("fclose");
            exit(1);
        }
    }
    if ( fclose(f) ){
        perror("fclose");
        exit(1);
    }
    f = NULL;
    
    if ( ( f = fopen(buf, "rb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    while ( fread(&val, sizeof(int), 1, f) == 1 )
        printf("%d\n", val);
    
    val = 0;
    if ( ferror(f) ){
        perror("ferror");
        val = 1;
    }
    if ( fclose(f) ){
        perror("fclose");
        val = 1;
    }
    exit(val);
}
1
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
12.05.2010, 16:04  [ТС] #3
Может кто-нибудь с 1-й задачей помочь =((
easybudda, не знаете почему и в той, и в той задаче - когда выводится в файл - то вместо того, что надо выводит "кракозябры" ???пытался исправить - не получилось =(((
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
12.05.2010, 16:07 #4
Цитата Сообщение от Лестат Посмотреть сообщение
easybudda, не знаете почему и в той, и в той задаче - когда выводится в файл - то вместо того, что надо выводит "кракозябры"
может по тому, что файлы двоичные, а не текстовые?
1
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
12.05.2010, 16:09  [ТС] #5
омг, а в каком формате тогда создавать файл ? или как решить эту проблему ???
а то разобратся толком не могу =((( ,( только с физикой вчера разобрался, а на программирование времени не хватает =(( )
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
13.05.2010, 00:46 #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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SIZE 10
 
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
 
int main(void){
        double a, d;
        size_t i;
        char buf[MAX_PATH];
        FILE *f;
 
        printf("A = ");
        if ( scanf("%lf", &a) != 1 ){
                perror("scanf");
                exit(1);
        }
        printf("D = ");
        if ( scanf("%lf%*c", &d) != 1 ){
                perror("scanf");
                exit(1);
        }
 
        printf("Name for output file: ");
        if ( scanf("%s", buf) != 1 ){
                perror("scanf");
                exit(1);
        }
 
        if ( ( f = fopen(buf, "w") ) == NULL ){
            perror("fopen");
            exit(1);
        }
 
        for ( i = 0; i < SIZE; ++i ){
            if ( fprintf(f, "%f\n", a + d * i) < 0 ){
                perror("fprintf");
                if ( fclose(f) )
                    perror("fclose");
                exit(1);
            }
        }
 
        if ( fclose(f) )
            perror("fclose");
        else
            printf("Done.\n");
 
        exit(0);
}
на пример...

Добавлено через 7 часов 49 минут
Цитата Сообщение от Лестат Посмотреть сообщение
Дана строка S. Если S является допустимым именем файла, то создать пустой файл с этим именем и вывести True. Если файл с именем S создать нельзя, то вывести False.
Цитата Сообщение от Лестат Посмотреть сообщение
Может кто-нибудь с 1-й задачей помочь
а в чём сложность-то?
C
1
2
3
4
5
6
7
8
9
10
11
12
...
FILE *f;
char *S = "file.txt";
if ( f = fopen(S, "w") ){
  printf("Oh yeah!\n");
  fclose(f);
}
else {
  printf("Shit happens!\n");
  exit(1);
}
...
1
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
13.05.2010, 02:45 #7
Отнюдь. Файл может не создаться по миллиону причин. А посему: надо узнать требования к именам файлов (чтобы в них отсутсвовали определённые символы, чтобы одноимённый файлов не было в директориях и так далее)

А потом уже анаолизировать строку S нав предмет соответствия этим правилам.
0
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
13.05.2010, 08:52  [ТС] #8
eassybudda, а что вместо ... О_о
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
13.05.2010, 09:10 #9
Цитата Сообщение от kravam Посмотреть сообщение
Файл может не создаться по миллиону причин.
Ага, может... Но в задании не сказано выяснять причину, только попытаться создать файл и вывести результат. А тут без вариантов - или создался, или нет.

Цитата Сообщение от Лестат Посмотреть сообщение
а что вместо ...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
 
#define BAD_FILE_NAME "z:\\file.txt"
 
int main(void){
    FILE *f;
    if ( f = fopen(BAD_FILE_NAME, "w") ){
        fclose(f);
        printf("Aga!\n");
    }
    else {
        printf("Ne aga!\n");
        exit(1);
    }
    exit(0);
}
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
13.05.2010, 09:53 #10
easybudda,
Цитата Сообщение от easybudda Посмотреть сообщение
"Ne aga!\n" "Aga!\n"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 09:53
Привет! Вот еще темы с ответами:

Хранение данных пользователя и работа с ними - C++
Здравствуйте. Есть игровой сервер. При входе на сервер игроку автоматически выдается ID игрока (0-1000) и происходит запрос к БД и...

Списки. Объявление, заполнение добавление и работа с ними - C++
Подкиньте faq по этим разделам, желательно досканальный. Это же структуры, я правильно понимаю?

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? - C++
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Работа с функциями. Задача без них работает, а с ними - нет - C++
Вообще нужно посчитать количество локальных минимумов в двумерном массиве 10х10 и найти сумму выше главной диагонали. Без функций всё...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2010, 09:53
Ответ Создать тему
Опции темы

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