Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
1

В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки

24.01.2014, 16:07. Просмотров 1887. Ответов 35
Метки нет (Все метки)

Помогите составить программу:
Следует разработать программу, которая преобразует любой текстовый файл в другой текстовый файл по правилу, определяемому на основе своего варианта
Указанное правило применяется для каждой строки исходного текстового файла. В ходе выполнения программы пользователь может вводить имя исходного текстового файла, а также имя получаемого текстового файла.

вариант: В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 16:07
Ответы с готовыми решениями:

Определить число символов в самом длинном слове строки
Дана последовательность символов S1, …, SN. Группы символов, разделенные пробелом (одним или...

Определить число символов в самом длинном слове строки
Т.к. я полный 0 в этом, обращаюсь сюда. Нужно определить число символов в самом длинном слове...

строки-. Опpеделить число символов в самом длинном слове стpоки. Слова отделяются знаком "/".
Опpеделить число символов в самом длинном слове стpоки. Слова отделяются знаком "/".

В самом длинном слове строки исключить те гласные буквы, которые не встречаются в самом коротком ее слове.
Помогите с программой плз. В самом длинном слове строки исключить те гласные буквы, которые не...

Заменить в самом длинном слове строки буквы 'a' на 'b'
Ребят, вот пытаюсь решить задачу, вроде бы решил, но что-то мне подсказывает , что тут что-то не...

35
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
24.01.2014, 19:22 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
80
81
82
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <assert.h>
 
//-----------------------------------------------------------------------------
int GetWord(char text[], char** begin, char** end) {
 
    for (; *text && isspace(*text); ++text) { ; }
    *begin = text;
 
    for (; *text && !isspace(*text); ++text) { ; }
    *end = text;
 
    return *end - *begin;
}
//-----------------------------------------------------------------------------
char* GetLine(FILE* f) {
 
    static size_t len = 0;
    static char* str = NULL;
    char ch = fgetc(f);
 
    if ((ch == '\n') || (ch == EOF)) {
        if (len) {
            str = malloc(len + 1);
            str[len] = '\0';
        }
        else {
            str = NULL;
        }
    }
    else {
        len++;
        str = GetLine(f);
        str[--len] = ch;
    }
 
    return str;
}
//-----------------------------------------------------------------------------
void FromTo(FILE* fsrc, FILE* fdest) {
 
    char* str;
    char* begin;
    char* end;
    size_t len, maxlen;
 
    while (!feof(fsrc)) {
 
        str = begin = GetLine(fsrc);
 
        maxlen = 0;
 
        if (str) {
            while ((len = GetWord(begin, &begin, &end))) {
                if (maxlen < len) {
                    maxlen = len;
                }
                begin = end;
            }
        }
 
        fprintf(fdest, "%s %u\n", str ? str : "", maxlen);
 
        free(str);
    }
}
//-----------------------------------------------------------------------------
 
int main() {
 
    FILE* fsrc;
    FILE* fdest;
 
    assert(fsrc = fopen("program.c", "r"));
    assert(fdest = fopen("result.txt", "w"));
 
    FromTo(fsrc, fdest);
 
    return 0;
}
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
24.01.2014, 20:07  [ТС] 3
спасибо огромное, а можете еще пояснить мне как осуществить ввод пользователем имён файлов??
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
25.01.2014, 09:02 4
Ввод имён файлов лучше выполнять при запуске программы в качестве параметров. main функция будет выглядеть примерно так:
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
int main(int argc, char* argv[]) {
 
    FILE* fsrc;
    FILE* fdest;
 
    if (argc != 3) {
        printf("Usage: %s <SOURCE> <DESTINATION>\n", argv[0]);
        return 1;
    }
 
    fsrc = fopen(argv[1], "r");
    if (fsrc == NULL) {
        perror(argv[1]);
        return 1;
    }
 
    fdest = fopen(argv[2], "w");
    if (fdest == NULL) {
        perror(argv[2]);
        fclose(fsrc);
        return 1;
    }
 
    FromTo(fsrc, fdest);
 
    fclose(fdest);
    fclose(fsrc);
 
    return 0;
}
1
25.01.2014, 09:02
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
26.01.2014, 10:08  [ТС] 5
не могу запустить программу, ошибки выдает, можете пояснить как ее запускать может нужно файлы создать на компьютере ?? спасибо заранее)
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
26.01.2014, 10:58 6
truhin_evgeniy, ну я же не телепат. Какие ошибки?
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
26.01.2014, 13:32  [ТС] 7
я так понимаю эти два кода нужно совместить или как?
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
26.01.2014, 14:01 8
Лучший ответ Сообщение было отмечено truhin_evgeniy как решение

Решение

Цитата Сообщение от truhin_evgeniy Посмотреть сообщение
я так понимаю эти два кода нужно совместить или как?
Ну конечно.
Кликните здесь для просмотра всего текста
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
95
96
97
98
99
100
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <assert.h>
 
//-----------------------------------------------------------------------------
int GetWord(char text[], char** begin, char** end) {
 
    for (; *text && isspace(*text); ++text) { ; }
    *begin = text;
 
    for (; *text && !isspace(*text); ++text) { ; }
    *end = text;
 
    return *end - *begin;
}
//-----------------------------------------------------------------------------
char* GetLine(FILE* f) {
 
    static size_t len = 0;
    static char* str = NULL;
    char ch = fgetc(f);
 
    if ((ch == '\n') || (ch == EOF)) {
        if (len) {
            str = malloc(len + 1);
            str[len] = '\0';
        }
        else {
            str = NULL;
        }
    }
    else {
        len++;
        str = GetLine(f);
        str[--len] = ch;
    }
 
    return str;
}
//-----------------------------------------------------------------------------
void FromTo(FILE* fsrc, FILE* fdest) {
 
    char* str;
    char* begin;
    char* end;
    size_t len, maxlen;
 
    while (!feof(fsrc)) {
 
        str = begin = GetLine(fsrc);
 
        maxlen = 0;
 
        if (str) {
            while ((len = GetWord(begin, &begin, &end))) {
                if (maxlen < len) {
                    maxlen = len;
                }
                begin = end;
            }
        }
 
        fprintf(fdest, "%s %u\n", str ? str : "", maxlen);
 
        free(str);
    }
}
//-----------------------------------------------------------------------------
 
int main(int argc, char* argv[]) {
 
    FILE* fsrc;
    FILE* fdest;
 
    if (argc != 3) {
        printf("Usage: %s <SOURCE> <DESTINATION>\n", argv[0]);
        return 1;
    }
 
    fsrc = fopen(argv[1], "r");
    if (fsrc == NULL) {
        perror(argv[1]);
        return 1;
    }
 
    fdest = fopen(argv[2], "w");
    if (fdest == NULL) {
        perror(argv[2]);
        fclose(fsrc);
        return 1;
    }
 
    FromTo(fsrc, fdest);
 
    fclose(fdest);
    fclose(fsrc);
 
    return 0;
}


Вызов:
Код
$ program <ИСХОДНЫЙ ФАЙЛ> <РЕЗУЛЬТИРУЮЩИЙ ФАЙЛ>
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
26.01.2014, 20:05  [ТС] 9
спасибо программа работает, без ошибок вот только я не понимаю что нужно сделать чтобы добиться следующего:
В ходе выполнения программы пользователь может вводить имя исходного текстового файла, а также имя получаемого текстового файла.

вариант: В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки.


это мне нужно создать начальный текстовый файл?? я так понимаю в папке где находиться данный проект?? или как поясните плиз еще это
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
27.01.2014, 07:33 10
Цитата Сообщение от truhin_evgeniy Посмотреть сообщение
В ходе выполнения программы пользователь может вводить имя исходного текстового файла, а также имя получаемого текстового файла.
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
int main() {
 
    FILE* fsrc;
    FILE* fdest;
 
    char nameSrc[256], nameDest[256];
 
    printf("input file: ");
    scanf("%255s", nameSrc);
 
    printf("output file: ");
    scanf("%255s", nameDest);
 
    fsrc = fopen(nameSrc, "r");
    if (fsrc == NULL) {
        perror(nameSrc);
        return 1;
    }
 
    fdest = fopen(nameDest, "w");
    if (fdest == NULL) {
        perror(nameDest);
        fclose(fsrc);
        return 1;
    }
 
    FromTo(fsrc, fdest);
 
    fclose(fdest);
    fclose(fsrc);
 
    return 0;
}
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
27.01.2014, 09:52  [ТС] 11
а его нужно создавать на компьютере?
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
27.01.2014, 11:15 12
Цитата Сообщение от truhin_evgeniy Посмотреть сообщение
а его нужно создавать на компьютере?
Исходный файл должен существовать и содержать текст. Выходной файл создастся автоматически.
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
27.01.2014, 14:03  [ТС] 13
а куда его поместить? в папку с проектом?
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
27.01.2014, 14:19 14
Туда, откуда будите вызывать программу. Но можете и в другое место, но тогда нужно указать полный путь до файла: С:\путь\до\файла\ФАЙЛ
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
27.01.2014, 18:46  [ТС] 15
а где прописывать путь к файлу? поместил файл в то место от куда вызываю программу (данный проект), ничего не происходит, может нужно в коде прописать имя файла? если да не подскажите в какой строке?
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
28.01.2014, 04:04 16
Может так поймёте?

В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки
2
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
28.01.2014, 12:40  [ТС] 17
не получается ничего, использую программу code blocks, программа находиться по адресу с/нужное/проги/code blocks/code blocks.exe, проект данный находиться с/project/main.c, текстовый файл вставлял и в папку проги, и в папку project, результата не выявил,может в коде нужно прописывать путь к файлу?
может я просто недоделываю что-то? код не менял после вас, нового ничего не прописывал
0
anmartex
...
1733 / 1217 / 917
Регистрация: 12.02.2013
Сообщений: 1,994
28.01.2014, 14:33 18
Цитата Сообщение от truhin_evgeniy Посмотреть сообщение
не получается ничего
А чуть более конкретно можно? Что именно не получается?

В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки


Ну вот, смотрите, правда в Linux-е, но всё же. Внизу отмечена директория, где находится проект. Вверху указываю источник и приёмник. А в центре я вывел результат выполнения программы.
1
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
28.01.2014, 21:49  [ТС] 19
а как открыть вот это окошко где указывается источник и приемник??, у вас та же программа что и у меня по моему?)
0
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
28.01.2014, 21:56  [ТС] 20
вот что у меня получается при запуске, я не могу добиться чтобы он увидел исходный файл
0
Миниатюры
В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки  
28.01.2014, 21:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 21:56

В самом длинном слове строки расположить все буквы по алфавиту
в самом длинном слове строки расположить все буквы по алфавиту, строку брать из текстового файла и...

Каждое слово строки заменить на число, соответствующее количеству символов в слове
Задана строка символов . группы символов, разделенные пробелом и не содержащие пробелов внутри...

Вставить в конец каждой строки текстового файла число N, равное количеству слов в строке
Откорректировать данный текстовый файл Т, вставляя в конец каждой его строки число N, равное...


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

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

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