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

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

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

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

29.06.2011, 03:50. Просмотров 2549. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 03:50     С++ Удалить в каждой строке последнее слово
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
29.06.2011, 03:57     С++ Удалить в каждой строке последнее слово #2
бей по токинам(strtok)...если токин последний то удаляй...я б так делал...
xAtom
 Аватар для xAtom
911 / 736 / 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();
}
medved89
 Аватар для medved89
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 3
29.06.2011, 04:45  [ТС]     С++ Удалить в каждой строке последнее слово #4
Цитата Сообщение от xAtom Посмотреть сообщение
int *len = strlen(line);
спс, но выбивает ошибку в 43 строке

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


Тему клосс/ СПАСИБО xAtom, OLLEGATOR!
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
29.06.2011, 05:03     С++ Удалить в каждой строке последнее слово #5
int len = strlen(line); внимательнее
OstapBender
 Аватар для OstapBender
581 / 519 / 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 минут
пробелов*
Yandex
Объявления
29.06.2011, 12:35     С++ Удалить в каждой строке последнее слово
Ответ Создать тему
Опции темы

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