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

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

25.10.2014, 15:20. Показов 3309. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2014, 15:20
Ответы с готовыми решениями:

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

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

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

7
 Аватар для edw1n
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 114
25.10.2014, 15:52
Все довольно просто. Читаем построчно файл, и в каждой строке считаем кол-во слов.
Считать слова в строке можно таким способом:
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  [ТС]
edw1n, а можно вашу реализацию с первой частью кода соединить? у меня что-то не получается
0
 Аватар для edw1n
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 114
25.10.2014, 16:27
Так как у вас каждое слово в файле 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  [ТС]
edw1n, вы не учли то что в строке может быть несколько слов. Ваш код подсчитывает количество строк получается. Попробовал проверить работу программы когда в строке несколько слов - она не считает правильно (если в строке больше одного слова).

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

PS Открыть файл как поток (ifstream), читать посимвольно. Дальше вроде как тривиально.
Если бы я знал как реализовать, не просил бы помощи
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
25.10.2014, 22:24
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2014, 22:24
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru