Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
32 / 5 / 0
Регистрация: 15.12.2013
Сообщений: 72
1

Подсчет количества слов

25.10.2014, 15:20. Показов 2345. Ответов 7
Метки нет (Все метки)

Есть два файла, 1.txt и 2.txt

Задание:

1) Скопировать в файл 2.txt только те строки из 1.txt, которые начинаются с буквы "а"
2) Подсчитать количество слов в файле 2.txt

Первая половина кода написана, нужно реализовать второй пункт задания через подсчет пробелов. Спасибо заранее.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string.h>
#include <iostream>
#include <stdio.h>
int main()
{
  FILE * f1;
  FILE * f2;
  char buf[256];
  int L;
  f1=fopen("1.txt","rt");
  f2=fopen("2.txt","wt");
  while(!feof(f1))
   {
    fgets(buf,255,f1);
    L=strlen(buf);
    if(buf[0]=='a')
       fputs(buf,f2);
   }
  fclose(f2);
  fclose(f1);
  //здесь подсчет количества слов
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2014, 15:20
Ответы с готовыми решениями:

Подсчет количества слов
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество слов, имеющих...

Подсчет количества слов
Допустим, дана строка: &quot;129 s23 ertr 234 0 e&quot; Как подсчитать количество слов, состоящих только...

Подсчет количества слов в предложении
Здравствуйте. Помогите, пожалуйста, с лабой. 1. Дана строка символов. Распечатать слова, отличные...

Подсчет количества одинаковых слов
http://pastebin.com/s8Ewa9Dp // Zadanie2.cpp: определяет точку входа для консольного приложения....

7
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 114
25.10.2014, 15:52 2
Все довольно просто. Читаем построчно файл, и в каждой строке считаем кол-во слов.
Считать слова в строке можно таким способом:
C++
1
2
3
4
5
6
7
8
    
if ( str[0] != ' ' ) numWords++;
 
for ( i = 0; i < strlen(str)-1; i++ ) {
 
     if ( (str[i] == ' ') && (str[i+1] != ' ') ) numWords++;
 
}
1
32 / 5 / 0
Регистрация: 15.12.2013
Сообщений: 72
25.10.2014, 16:00  [ТС] 3
edw1n, а можно вашу реализацию с первой частью кода соединить? у меня что-то не получается
0
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 114
25.10.2014, 16:27 4
Так как у вас каждое слово в файле 2 на новой строке, то достаточно лишь подсчитать кол-во записей в файл 2 во время копирования с файла 1.

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
#include <string.h>
#include <iostream>
#include <stdio.h>
int main()
{
  FILE * f1;
  FILE * f2;
  char buf[256];
  int L, counter = 0;
  f1=fopen("1.txt","rt");
  f2=fopen("2.txt","wt");
  while(!feof(f1))
   {
    fgets(buf,255,f1);
    L=strlen(buf);
    if(buf[0]=='a')
       {
         fputs(buf,f2);
         counter++;
       }
   }
  fclose(f2);
  fclose(f1);
  printf("Number of words in file 2 - %d\n", counter);
  system("pause");
  return 0;
}
1
32 / 5 / 0
Регистрация: 15.12.2013
Сообщений: 72
25.10.2014, 17:28  [ТС] 5
edw1n, вы не учли то что в строке может быть несколько слов. Ваш код подсчитывает количество строк получается. Попробовал проверить работу программы когда в строке несколько слов - она не считает правильно (если в строке больше одного слова).

P.S я просил помочь в реализации с помощью подсчета пробелов, т.к таким способом количество слов верно вычисляется
0
2712 / 1879 / 556
Регистрация: 05.06.2014
Сообщений: 5,468
25.10.2014, 17:54 6
Первая половина кода написана, нужно реализовать второй пункт задания через подсчет пробелов.
А если пробелов между словами больше одного?
PS Открыть файл как поток (ifstream), читать посимвольно. Дальше вроде как тривиально.
0
32 / 5 / 0
Регистрация: 15.12.2013
Сообщений: 72
25.10.2014, 18:53  [ТС] 7
А если пробелов между словами больше одного?
Пробел один между словами.

PS Открыть файл как поток (ifstream), читать посимвольно. Дальше вроде как тривиально.
Если бы я знал как реализовать, не просил бы помощи
0
2712 / 1879 / 556
Регистрация: 05.06.2014
Сообщений: 5,468
25.10.2014, 22:24 8
Цитата Сообщение от steps Посмотреть сообщение
Если бы я знал как реализовать, не просил бы помощи
C++
1
2
3
4
5
6
ifstream stream("1234.txt");
int count =0;
while(stream.good())
    if(isspace(stream.get()))
        ++count;
cout<<count<<endl;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2014, 22:24

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

Подсчет количества слов в файле
Дан текстовый файл. Определить, сколько раз каждое слово встречается в тексте. Слова выводить на...

Подсчет количества слов в строке
Помогите пожалуйста написать программу для подсчета количества слов в строке

Подсчет количества уникальных слов
Добрый день. Есть программа для подсчета количества слов тексте: #include &lt;iostream&gt; #include...

Подсчет количества слов в строке
Все привет. Помогите пожалуйста написать код на с++ С клавиатуры вводится текстовая строка....


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

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

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