Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
avraal
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 213
Записей в блоге: 1
1

В каждой строке файла удалить среднее слово

30.06.2015, 23:10. Просмотров 531. Ответов 10
Метки нет (Все метки)

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

Например, в строке 7 слов - удалить 4 слово
Если 6 слов, то удалить третье

Помогите сделать задание

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

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 23:10
Ответы с готовыми решениями:

Удалить среднее слово из каждой строки файла
Всем привет! Столкнулся с проблемой не знания как можно удалить среднее слово...

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

Для каждой строки файла удалить среднее слово; результат записать в файл (файловый ввод/вывод)
для каждой строки файла удалить среднее слово. результат записать в файл

В каждой строке удалить второе слово
Ребята, нужна помощь. Нужно иметь N-ое кол-во строк и вводить это кол-во с...

В каждой строке текста удалить второе слово
Привет всем, у меня вопрос. Нужно ввести 20 строк из 128 символов (максимум,...

10
isobo531
43 / 43 / 28
Регистрация: 11.11.2014
Сообщений: 325
30.06.2015, 23:11 2
Полностью сделать задание?
0
avraal
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 213
Записей в блоге: 1
30.06.2015, 23:15  [ТС] 3
Это всё что есть
0
isobo531
43 / 43 / 28
Регистрация: 11.11.2014
Сообщений: 325
30.06.2015, 23:18 4
avraal, Что вы сделали сами?
0
avraal
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 213
Записей в блоге: 1
30.06.2015, 23:32  [ТС] 5
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
#include <iostream>
#include <conio>
#include <fstream>
 
using namespace std;
 
struct slova{
        char text[20];
        int pos;
};
 
int main()
{
        slova slovo;
        slovo.pos = 0;
        char *ptr;
        ofstream outfile;
        ifstream infile;
        outfile.open("File1.txt", ios::out);
        if(!outfile)
        {
                cout<<"File ne sozdan"<<endl;
                getch();
        }else
        {
                cout<<"Vvodite text(^Z - zavershit vvod)"<<endl;
                while(!cin.eof())
                {
                        cin>>slovo.text;
                        slovo.pos++;
                        outfile.write((char*)&slovo, sizeof(slovo));
                }
        }
        outfile.close();
        cout<<"Najmite lubuyu klavishu dlya prodoljenia";
        getch();
        cout<<endl;
 
        infile.open("File1.txt", ios::ate);
        if(!infile)
        {
                cout<<"File ne sozdan"<<endl;
                getch();
        }else
        {
                while(!infile.eof())
                {
                        infile.read((char*)&slovo, sizeof(slovo));
                        cout<<"Text: "<<slovo.text<<endl;
                        cout<<"Pos: "<<slovo.pos<<endl;
                }
                infile.close();
        }
 
        cout<<"Najmite lubuyu klavishu"<<endl;
        getch();
        return 0;
}
Добавлено через 7 минут
Но дальше я не знаю
0
isobo531
43 / 43 / 28
Регистрация: 11.11.2014
Сообщений: 325
30.06.2015, 23:33 6
Осталось оформить запись в файл?
0
avraal
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 213
Записей в блоге: 1
30.06.2015, 23:43  [ТС] 7
Надо как-то определить какое слово среднее и удалить
0
isobo531
43 / 43 / 28
Регистрация: 11.11.2014
Сообщений: 325
30.06.2015, 23:52 8
avraal, Занеси строку в массив. Подели строку на лексемы и занеси в новый массив. Определи размер нового массива. Если размер равен чётному числу - находи средний элемент и удаляй его. Если не чётный - размер уменьшай на 1 и удаляй элемент массива. Потом выводи массив в файл.

Добавлено через 2 минуты
Приблизительно:
C++
1
2
3
4
5
6
7
8
9
char arr[256];
char *word = strtok(str, " ,!.;");  
int wordCounter = 0;
while (word != 0)
{
    strcpy(arr[wordCounter], word); 
    word = strtok(0, " ,!.;");
    wordCounter++;
}
0
avraal
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 213
Записей в блоге: 1
30.06.2015, 23:52  [ТС] 9
Я бы не написал сюда, если бы смог это сам реализовать..
0
ThePlague
102 / 102 / 99
Регистрация: 30.06.2015
Сообщений: 272
01.07.2015, 04:29 10
Вот отрыл у себя в загашнике, сто лет назад писал вроде работало.
Почти так как ты хотел, с одной только поправкой тут все на оборот все слова удаляются кроме искомого.
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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    ifstream inFile("FILE.txt");
    ofstream outFile("FILE2.txt");
 
    if(!inFile)
    {
        cerr << "ERROR: Cannot open 'FILE.txt'!" << endl;
        exit(1);
    }
    string line, tmp;
    vector<string> myArray;
    int counter=0;
    int numspaces=0;
    while (getline(inFile,line))
    {
        for (int i=0; i<int(line.length()); i++)
        {
            tmp = tmp + line[i];
            if (line[i]==(' '))
            {
                myArray.push_back(tmp);
                numspaces++;
                tmp = "";
            }
                
        }
        if(numspaces < 3)
        {
 
            cout << myArray.front() << endl;
        }
        else
        {
            if(numspaces%2==0)
            {
                cout << myArray[(numspaces/2)-1] << endl;
            }
            else
            {
                cout << myArray[(numspaces/2)] << endl;
            }
        }
        numspaces = 0;
        myArray.clear();
    }
    return(0);
}

З.Ы: Суть я думаю тебе будет ясна, немного подправить и готово.
0
Геомеханик
792 / 597 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
01.07.2015, 15:02 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
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
#include <iostream>
#include <fstream>
#include <strstream>
#include <cctype>
#include <string>
 
 
//кол-во слов в строке
int count_words(const char* s){
    int n = 0;
    while(*s){
        while(*s && ! isalnum(*s))
            ++s;
        if(isalnum(*s)){
            ++n;
            while(isalnum(*s))
                ++s;
        }
    }
    return n;
}
 
//удаление слова
void remove_avg(std::string& s){
    int inx;
    int cnt = count_words(s.c_str());
    if(cnt <= 2)
        return;
 
    cnt = (cnt + 2) / 3;
    inx = 0;
 
    const char* i, *p = s.c_str();
    while(*p){
        while(*p && ! isalnum(*p))
            ++p;
 
        if(isalnum(*p)){
            i = p + 1;
            while(isalnum(*i))
                ++i;
 
            if(inx++ >= cnt){
                s.erase((p - s.c_str()), i - p);
                break;
            }
            p = i;
        }
    }
}
 
 
//удаление среднего слова
void output_rem(std::ostream& _o, std::istream& _i){
    std::string l;
    while((! _i.eof()) && (! _i.fail())){
        std::getline(_i, l);
        if(l.length() > 0){
            remove_avg(l);
            _o << l << std::endl;
        } else
            _o << std::endl;
    }
    _o.flush();
}
 
 
int main(void){
    char s[] = "fox dog bat cat wolf bea cow\r\n"\
               "AA BB CC DD EE FF\r\n"\
               "A1 B2 C3 D4 C5";
    std::istrstream ist(s);
    output_rem(std::cout, ist);
 
/*  вот работать с файлом
    std::ifstream fin("input.txt");
    std::ofstream fout("output.txt");
    output_rem(fout, fin);
    fin.close();
    fout.close();
*/
    return 0;
}
Результат работы кода
0
01.07.2015, 15:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 15:02

В каждой второй строке удалить третье слово, если такое есть
Добрый день! Ребята срочно нужна помощь,буду признателен,нужно в С++...

Для каждой строки файла переставить первое и среднее слово
Помогите пожалуйста!!! не знаю с чего начать... необходимо для каждой...

Для каждой строки файла удалить короткое слово
Для каждой строки файла удалить короткое слово. Результат записать в файл. ...


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

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

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