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

Скопировать второе слово каждой строки в начало следующей строки - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
Askar2008
13 / 13 / 0
Регистрация: 04.03.2009
Сообщений: 154
28.03.2010, 18:11     Скопировать второе слово каждой строки в начало следующей строки #1
Привет, прошу помощи! Заранее спасибо!
Индивидуальное задание:
Скопировать второе слово каждой строки в начало следующей строки
Примечания:
Составить программу, которая читает текстовый файл и выполняет такое преобразование его, какое задано в Вашем варианте индивидуального задания.
Примечания:
1. Имя файла, который подлежит обработке, должно быть параметром программы.
2. Файл должен иметь не менее 10-15 строк текста.
3. Допускается ограничить максимальную длину строки в тексте 80 символами.
4. Допускается (если в индивидуальном задании не оговорено второе) считать, что слова разделяются пробелами, а знаки препинания рассматривать как буквы.
5. Программу следует разрабатывать, исходя из предположения, что весь текст из файла не может быть размещен в оперативной памяти.
6. Допускается создавать при выполнении программы временные файлы, которые не должны сохранятся после окончания программы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 18:11     Скопировать второе слово каждой строки в начало следующей строки
Посмотрите здесь:

Как сделать, чтобы при вводе в консоли <Enter> не переводил курсор на начало следующей строки? C++
C++ Строки в файлах (вывести из каждой строки последнее слово)
Даны два слова.Верно ли,что первое слово начинается на ту же букву,на которую заканчивается второе слово (работа с символами строки) C++
Вывести на экран второе слово введённой пользователем строки C++
C++ Как считать первое слово из каждой строки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DjaFaR74
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 47
17.12.2011, 15:01     Скопировать второе слово каждой строки в начало следующей строки #21
программу переписал, компилится, но не выдает то что нужно, помогите исправить ошибку
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
101
102
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
//максимальная длина строки
#define MAX_STR 1000
//имя второго файла, который будет использоваться
#define FILE2_NAME "output.txt"
//функция, которая определяет является ли символ разделяющим
int split(char c){
        return ((c==' ')||(c==(char)9)||(c=='\0')||(c=='\n'));
};
int fflush(FILE *stream);
int main(int arc, char * argv[])
{
        char * st=argv[1];
        //открываем 2 файла. один для чтения, другой для записи
        FILE *f1;
        FILE *f2=fopen(FILE2_NAME,"w");
        //объявляем строки и целочисленные переменные
        char str[MAX_STR],res[MAX_STR],word[MAX_STR],last[MAX_STR];
        int uk,word_len,res_len,i,end,sch,last_len,z;
        //цикл будет продолжаться до тех пор пока не будет достигнут конец
        //файла - feof(f1)
        /*if (argc==1){
            printf("there is no file name");
            return 1;
        }*/
        f1=fopen(st,"r");
        if (f1==NULL){
            printf("File does not exist");
            return 2;
        }
        last[0]='\0';
        last_len=0;
        while (!feof(f1)){
                //в строку str считывает 1строку из файла, в строку res
                //будем помещать результат для строки str, а в строку word
                //будем помещать текущее слово. res_len, word_len - длины строк
                str[0]='\0';
                //fflush(f1);
                fgets(str,MAX_STR,f1);
                res_len=last_len;
                for (z=0;z<last_len;z++)
                    res[z]=last[z];
                uk=0;
                word_len=0;
                end=0;
                sch=0;
                while (!end){
                        //если символ не разделяющий, то добавляем его в текущее слово
                        if (!split(str[uk])){
                                word[word_len]=str[uk];
                                word_len++;
                        }
                        else{
                                res[res_len++]=str[uk];
                                if (word_len!=0){
                                    if (sch==1){
                                        for (z=0;z<word_len;z++)
                                            last[z]=word[z];
                                        last_len=word_len;
                                        last[last_len]='\0';
                                    } else
                                    for (z=0;z<word_len;z++)
                                        res[res_len++]=word[z];
                                    sch++;
                                    word_len=0;
                                }
                                //когда дошли до конца строки end=1, и цикл закончится
                                if (str[uk]=='\0')
                                        end=1;
                        }
                        //указатель на символ из строки str увеличиваем на 1
                        uk++;
                }
                //выводим строку res в файл она уже будет содержать переход
                //на следующую строку, если это не последная строка
                fputs(res,f2);
        }
        fprintf(f2,"%s ",last);
        //закрываем файлы
        fclose(f1);
        fclose(f2);
        //и снова открываем, только первый файл уже для записи, а второй для
        //считывания
        f1=fopen(st,"w");
        f2=fopen(FILE2_NAME,"r");
        //пока не дойдем до конца файла считываем по 1 строке из 2 файла и
        //записываем в 1 файл
        while (!feof(f2)){
                str[0]='\0';
                fgets(str,MAX_STR,f2);
                fprintf(f1,"%s",str);
        }
        //закрываем файлы
        fclose(f1);
        fclose(f2);
        //удаляем 2 файл
        remove(FILE2_NAME);
        //сообщаем об успешно выполненой задаче
        return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.12.2011, 06:58     Скопировать второе слово каждой строки в начало следующей строки #22
какое задание ?
DjaFaR74
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 47
18.12.2011, 22:38     Скопировать второе слово каждой строки в начало следующей строки #23
Задание то же
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.12.2011, 02:38     Скопировать второе слово каждой строки в начало следующей строки #24
Цитата Сообщение от DjaFaR74 Посмотреть сообщение
программу переписал
а, ну тогда она вообще неправильная
в начале топика описан алгоритм (сообщение)
в середине топика есть фрагмент, выводящий на экран (сообщение)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 17:59     Скопировать второе слово каждой строки в начало следующей строки
Еще ссылки по теме:

C++ Строки, символы. вычислить, сколько раз встречается каждый символ в обоих строках, вывести второе слово второй строки в обратном порядке
C++ Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки
Строки. Удалить каждое второе слово C++

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

Или воспользуйтесь поиском по форуму:
DjaFaR74
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 47
19.12.2011, 17:59     Скопировать второе слово каждой строки в начало следующей строки #25
я в те переменные не врубаюсь
Yandex
Объявления
19.12.2011, 17:59     Скопировать второе слово каждой строки в начало следующей строки
Ответ Создать тему
Опции темы

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