Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124

Подсчитать количество всех строк, а потом - количество слов в каждой строке

04.06.2014, 22:34. Показов 5346. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа считает количество строк в файле add.txt выводит на экран и записывает в новый указанный пользователем файл.

C++ (Qt)
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
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
#include <clocale>
#include <sstream> //  заголовочный файл с классами, функциями и переменными для организации работы со строками
 
using namespace std;
 
int main() // определение главной функции
{
    //пример 8 Программа считает количество строк в файле add.txt выводит на экран и записывает в новый указанный пользователем файл.
    string a;
    setlocale (0, "");
    ofstream fout; // определение обьекта fout для вывода данных в файл
    ifstream fin; // определение обьекта fin для ввода данных из файла
    fin.open ("add.txt");
    char с[100];
    cout << "Введите имя файла для записи" << endl;
    string name1;
    cin >> name1;
    string c = name1 + ".txt";
    fout.open (c.c_str(), ios::app);
    int line_nomer=0;
    int n;
    string probel (" ");
    string sohr;
    //size_t nachaloSlova[100]; 
    //size_t konecSlova[100]; 
    while(getline(fin, a))
    {
        //cout<<"Строка в файле add.txt = "<<line_nomer<<"\n"; //вывод на экран
        //fout<<"Строка в файле add.txt = "<<line_nomer<<"\n"; //запись во второй файл
        line_nomer++;
    }
    cout<<"Количество строк в файле add.txt = "<<line_nomer<<"\n"; //вывод на экран
    fout<<"Количество строк в файле add.txt = "<<line_nomer<<"\n"; //запись во второй файл
    fin.close();
    fout.close();
    system ("pause");
}

Содержимое add.txt:


Code
1
2
3
4
5
6
 marat artur rinat edik 
 ruslan sergey vadim roman 
 ramil ilsur azat zinnur 
 ilgiz jenya sasha fanis 
 lesha rushat ilnur dima 
 oleg vladimir ivan mickle
Как дополнить программу так, чтобы программа изначально посчитала количество всех строк, а потом посчитала количество слов в каждой строке, при этом чтобы она создавала для каждой строки и для каждого слова в строке свой определенный индекс под которым находятся эти строки/слова, чтобы в нужный для пользователя момент можно было к ним обратиться и записать их поток данных, а так же в новый создаваемый файл.

Если при этом можно использовать seekg () и seekp () то было бы хорошо/Ну или как-нибудь попроще.

Дополнение к: Записать в созданный файл все строки из файла add.txt

Добавлено через 1 час 37 минут
Актуально
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2014, 22:34
Ответы с готовыми решениями:

Подсчитать количество слов в каждой строке текста
Здравствуйте. Помогите, пожалуйста, с заданием. Для задачки взять любой текст 5-10 строк по 30-40 символов. 1. Считать исходный...

Парсинг строк: подсчитать и вывести количество слов в заданной строке
Прочитать из файла строку символов. Данная строка состоит из нулей, единиц и пробелов. Группы нулей и единиц, разделенные пробелами (одним...

Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове
Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в...

4
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
04.06.2014, 23:38
frontez, не вникал в ваш код. В моем варианте все строки сохраняются в vector,
далее функция getWordByIndex(string, int) определяет слово, по номеру строки и номеру слова в строке.
Вам остаётся доработать для своей цели
Кликните здесь для просмотра всего текста
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.h>
#include <fstream>
#include <vector>
 
std::string getWordByIndex(std::string str, int index)
{
    int counter = 0;
    char* chStr = new char[str.size() + 1];
    strcpy(chStr, str.c_str());
    
    char* p = strtok(chStr, " ");
    while(p != NULL)
    {
        std::string temp = p;
        if(counter == index)
            return temp;
        p = strtok(NULL, " ");
        counter++;
    }
}
 
int main()
{
    std::vector<std::string> arr;
    std::ifstream ifs("add.txt");
    std::string str;
    if(ifs)
    {
        char ch = '\0';
        while(ifs.get(ch))
        {
            if(ch == '\n')
            {
                arr.push_back(str);
                str.clear();
            }
            else
                str += ch;
        }
        ifs.close();
    }
    else
        perror("Error");
    
    for(int i = 0; i < arr.size(); i++)
        std::cout << "Line #" << i + 1 << ": " << arr[i] << std::endl;
    //////////////////////////////////////////////////////////
    int line, index;
    std::cout << "\nType line index: "; std::cin >> line;
    std::cout << "Type word index: ";   std::cin >> index;
    index--;
    std::cout << getWordByIndex(arr[line - 1], index) << std::endl;
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
05.06.2014, 00:08  [ТС]
GuGo1991, Не знаком с таким стилем программирования, а вектора вообще не знаю
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
05.06.2014, 00:29
frontez, vector можно заменить на динамический массив, только придётся дважды открыть файл.
Сначала посчитать количество строк закрыть файл ifs.close(), "очистить" ifs.clear(), потом выделить память,
снова открыть файл и записать строки в массив.
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
05.06.2014, 04:24  [ТС]
Может кто-нибудь покажет пример решения похожей задачи с использованием seekg () и seekp () ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2014, 04:24
Помогаю со студенческими работами здесь

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

Для каждой из матриц подсчитать количество четных элементов в каждой строке
даны 2 матрицы разн.размерности. Для каждой из них подсчитать кол-во четных эл-тов в каждой строке. Использовать процедуры и ф-ции.

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

Подсчитать количество слов в строке
Дано строку символов, среди которых есть произвольное количество пробелов. Подсчитать количество слов в строке. Задание сделать двумя...

Подсчитать количество слов в строке
Составить программу, подсчитывает число слов в строке, введенного пользовате-чем. Для этого написать функцию с прототипом: int num_word...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru