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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 120
04.06.2014, 22:34     Подсчитать количество всех строк, а потом - количество слов в каждой строке #1
Программа считает количество строк в файле 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:


Код
 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 минут
Актуально
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 22:34     Подсчитать количество всех строк, а потом - количество слов в каждой строке
Посмотрите здесь:

C++ Подсчитать количество слов в строке
C++ подсчитать количество слов в строке
Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. C++
Подсчитать количество слов в заданной строке C++
C++ Подсчитать количество слов в строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
04.06.2014, 23:38     Подсчитать количество всех строк, а потом - количество слов в каждой строке #2
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;
}
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 120
05.06.2014, 00:08  [ТС]     Подсчитать количество всех строк, а потом - количество слов в каждой строке #3
GuGo1991, Не знаком с таким стилем программирования, а вектора вообще не знаю
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.06.2014, 00:29     Подсчитать количество всех строк, а потом - количество слов в каждой строке #4
frontez, vector можно заменить на динамический массив, только придётся дважды открыть файл.
Сначала посчитать количество строк закрыть файл ifs.close(), "очистить" ifs.clear(), потом выделить память,
снова открыть файл и записать строки в массив.
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 120
05.06.2014, 04:24  [ТС]     Подсчитать количество всех строк, а потом - количество слов в каждой строке #5
Может кто-нибудь покажет пример решения похожей задачи с использованием seekg () и seekp () ?
Yandex
Объявления
05.06.2014, 04:24     Подсчитать количество всех строк, а потом - количество слов в каждой строке
Ответ Создать тему
Опции темы

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