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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
#1

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

04.06.2014, 22:34. Просмотров 1569. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 22:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подсчитать количество всех строк, а потом - количество слов в каждой строке (C++):

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

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

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

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

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

Подсчитать количество слов в строке - C++
Очень надо!!! 1. Дана строка - подсчитать количество слов в строке и вывести на экран количество слов, эти слова и напротив...

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

Подсчитать количество слов в строке С++ - C++
В заданной строке посчитать количество слов. Разделителем слов считается пробел. Вот примерно хотел реализовать задачу, но когда...

Подсчитать количество слов в строке - C++
Догнать не могу как начать делать? На форумах искал, там везде есть, но только если пробел один. А вот если несколько? само задание...

Подсчитать количество слов в строке - C++
1.Дано строку слова в которой разделены пробелом (1 или несколькими). Подсчитать количество слов в даной строке. 2.Дано текст. Подсчитать...

Подсчитать количество слов в строке - C++
Ввести небольшой текст (с пробелами) в строку s. Подсчитать количество слов в строке и вывести все слова в столбик.


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
05.06.2014, 04:24
Ответ Создать тему
Опции темы

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