4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
1

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

04.06.2014, 22:34. Показов 4581. Ответов 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:


Код
 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2014, 22:34
Ответы с готовыми решениями:

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

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

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

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

4
272 / 266 / 146
Регистрация: 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;
}
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
05.06.2014, 00:08  [ТС] 3
GuGo1991, Не знаком с таким стилем программирования, а вектора вообще не знаю
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
05.06.2014, 00:29 4
frontez, vector можно заменить на динамический массив, только придётся дважды открыть файл.
Сначала посчитать количество строк закрыть файл ifs.close(), "очистить" ifs.clear(), потом выделить память,
снова открыть файл и записать строки в массив.
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
05.06.2014, 04:24  [ТС] 5
Может кто-нибудь покажет пример решения похожей задачи с использованием seekg () и seekp () ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2014, 04:24
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru