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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
medved89
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 3
#1

Удалить в каждой строке текстового файла последнее слово - C++

29.06.2011, 03:50. Просмотров 2832. Ответов 5
Метки нет (Все метки)

Выполнить обработку текстового файла. Определить кол-во предложений в исходном тексте.как реализовать ?Удалить в каждой строке последнее слово:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <iostream>
 
using namespace std;
int main(){
   ifstream fin("input.txt");
      int p = -1;
   while (!fin.eof()){
      char c;
      fin.get(c);
      if (c == '.') p++;
      if (c == '!') p++;
      if (c == '?') p++;
   }
   cout << p << std::endl;
   system("pause");
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 03:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить в каждой строке текстового файла последнее слово (C++):

В каждой строке текстового файла поменять местами первое и последнее слова - C++
В каждой строке текстового файла поменять местами первое и последнее слова. Очень нужна ваша помощь!!! Вот есть пример того, что...

В каждой строке файла удалить среднее слово - C++
В каждой строке файла удалить среднее слово, результат записать в файл Например, в строке 7 слов - удалить 4 слово Если 6 слов, то...

Скопировать содержимое текстового файла, удалив в каждой строке слово номер N+1, если в слове N есть 4 - C++
Здравствуйте. Помогите, пожалуйста, в написании программы Скопировать содержимое текстового файла, удалив в каждой строке слово номер...

Удалить в каждой строке лишние пробелы; исходную информацию считать из текстового файла - C++
Пусть задано множество строк. Удалить в каждой строке лишние пробелы. Пробел считается лишним, если он 1) стоит в начале строки ...

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

Удалить в строке последнее слово и удвоить предпоследнее - C++
Доброго Времени Суток! Не могу решить 2 задачи со строками,возможно кто нибудь сможет помочь,вдруг у кого нибудь осталась задача.. Буду...

5
OLLEGATOR
Linux-оид
116 / 65 / 3
Регистрация: 15.02.2011
Сообщений: 353
29.06.2011, 03:57 #2
бей по токинам(strtok)...если токин последний то удаляй...я б так делал...
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.06.2011, 04:23 #3
Вот попробуй.

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 <ctype.h>
 
 
 
int   len_punct(const char* str) { 
       int len = 0;
       while( *str ) {
            if( *str == '.' || *str == '?' || *str == '!')
             len++;
          *str++;
      }
      return  len;
}
 
 
void   last_word_delete(char*  str, int size) {
       int  cnt = 0;
       for(int i = size - 1; i >= 0; i-- ) {
             if( isalpha( *((str) + i) ))
                     cnt++;
             else if(! isalpha( *((str) + i) )) {
              if(cnt > 1) {
                           *((str) + i) = '\0';
                                     break;
                      }
             }
        }
}
 
 
 
void  main(void) {
 
    int  count_pred = 0;
    FILE*  fp      = fopen("text.txt", "r" );
 
    char line[1024];
    while(! feof(fp)) { 
          line[0] = '\0';
          fgets(line, sizeof(line), fp);
          int  len = strlen(line);
          if(len > 0) {
               line[len - 1] = '\0';
               count_pred += len_punct(line);
               last_word_delete(line, len);
        puts(line);
          }
     }
    fclose(fp);
    printf("count pred: %d\n", count_pred);
 
   getchar();
}
1
medved89
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 3
29.06.2011, 04:45  [ТС] #4
Цитата Сообщение от xAtom Посмотреть сообщение
int *len = strlen(line);
спс, но выбивает ошибку в 43 строке

Надо добавить в начале #include<cstring>


Тему клосс/ СПАСИБО xAtom, OLLEGATOR!
0
OLLEGATOR
Linux-оид
116 / 65 / 3
Регистрация: 15.02.2011
Сообщений: 353
29.06.2011, 05:03 #5
int len = strlen(line); внимательнее
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
29.06.2011, 12:35 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() 
{
    char temp[100];
    char *p;
    std::ifstream ifs("1.txt");
 
    while (ifs.getline(temp,80)) {
        if (p=strrchr(temp,' ')) *p=0;
        puts(temp);
    }
 
 
    getchar();
    return 0;
}
без проверок на большое количество проверок. в стиле С.

Добавлено через 15 минут
пробелов*
0
29.06.2011, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2011, 12:35
Привет! Вот еще темы с ответами:

Сравнить с последнее слово с другими словами в строке и удалить повторяющиеся слова - C++
задание- сравнить с последнее слово с другими словами в строке и удалить повторяющиеся слова(последнее слово=слову в строке). вывести...

В каждой строке удалить второе слово - C++
Ребята, нужна помощь. Нужно иметь N-ое кол-во строк и вводить это кол-во с клавиатуры, но не больше 20. Дальше вводим каждую строку, позже...

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

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


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

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

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