Определить количество новых строк в тексте

Уровень сложности:

Дан текст произвольной длины оканчивающийся символом  '#'. Определить количество строк в тексте, каждая строка заканчивается символом перевода строки '\n'.

Если вы ещё не знаете, как работать со строками в С++, прочитайте статью на нашем сайте — символы и строки. Результат работы программы показан на рисунке 1.

#include <iostream>

using namespace std;

int main()
{
    char text[] = "последовательная обработка\n символов\nстроки в С++\nпрограммирование на С++\nколичество строк#";
    int counter = 0, // индекс символов
        new_string = 0; // счётчик строк

    while (text[counter] != '#') // посимвольная обработка текста
    {
        if (text[counter] == '\n')
            new_string++; // инкремент счётчика строк
        counter++; // инкремент индекса символов
    }

    cout << "Количество новых строк = " << new_string << endl;

    return 0;
}

Для корректного отображения русского текста в Windows, прочитайте статью Кириллица в консоли. Вот пример работы программы:

Определить количество новых строк в тексте

Рисунок 1 — Определить количество новых строк в тексте

Следующие статьи помогут вам в решении данной задачи:
Автор: admin
Дата: 12.09.2012
Поделиться:

Комментарии

  1. odto11

    odto11

    Собственно мой вариант. Один момент, какой смысл со знака «#»??? Что с ним, что без него..

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main()
    {
        int X = 0;
        char sText[] = "CPPSTUDIO.COM — это учебник для начинающих, основная\n задача которого — объяснить новичку язык программирования \n\
                        С++, с основ и до новейших особенностей ANSI-C++, в том\n числе такие понятия, как: массивы, структуры, списки, \n\
                        файлы, строки, функции, шаблоны. Не оставим без внимания\n передовую структуру данных С++ — классы, их основные \n\
                        концепции, такие как полиморфизм, инкапсуляция, наследование.\n Руководство ориентировано не только на сухую \n\
                        теорию языка высокого уровня С++, но и на практические задания,\n с рабочими примерами программ во всех \n\
                        разделах и статьях, чтобы изучать С++ было просто не только\n новичку, но и любому «чайнику».#";
    
        cout <<"\t\tОпределить количество новых строк в тексте\n";
    
        for(int i = 0; i < strlen(sText)-1; i++)
        {
            if(sText[i] == '\n')
            {
                X++;
            }
    
        }
        cout << "Количество новых строк = " << X;
        return 0;

     

  2. colt

    #include "stdafx.h"
    #include "iostream"
    #include "fstream"
    #include "windows.h"
    #include "string"
    
    using namespace std;
    
    
    fstream fsVar;							//объявляем переменную связанную с файлом
    char cEnd = '\n';						//символ конца строки
    char cNum = '#';						//символ решётка
    char buff;								//буфер для текущего символа
    int iNumbOfLines;						//счётчик количества строк
    string strAdress = "C:/1/text.txt";		//адресс файла
    
    int _tmain(int argc, _TCHAR* argv[])
    {	
    	SetConsoleCP(1251);
    	SetConsoleOutputCP(1251);
    
    	while(true)
    	{
    		system("CLS");
    		cout<<"\t\t\tОпределить количество новых строк в тексте\n\n";
    
    		fsVar.open(strAdress, fstream::in);		//открываем файл
    		
    		if (fsVar.is_open())					//проверяем открылся ли файл
    		{
    			iNumbOfLines=1;						//если файл открылся, то в нём как минимум содержится одна строка, даже если в ней нет символов
    			cout<<"Файл успешно открыт\n\n";
    			while(!fsVar.eof())					//если не достигли конца файла "End of File" 
    			{
    			fsVar.get(buff);					//считываем новый символ из файла
    			if (buff==cEnd) iNumbOfLines++;		//как только находим символ перехода строки, счётчик переходов увеличиваем
    			if (buff==cNum) break;				//если нашли #, тогда заканчиваем перебор
    			}	
    			cout<<"Количество новых строк в тексте = "<<iNumbOfLines<<"\n\n";
    		}
    		else cout<<"Файл \""<<strAdress<<"\" не существует\n\n";
    
    		
    
    		fsVar.close();					//закрываем файл
    		system("PAUSE");
    	}
    	return 0;
    }
  3. Роман Лобода

    #include<iostream>
    using namespace std;
    int main()
    {
    setlocale(LC_ALL, «Russian»);
    char text[] = «последовательная обработка\n символов\nстроки в С++\nпрограммирование на С++\nколичество строк#»;
    int count = 0;
    char x;
    for (int i = 0; i < strlen(text); i++)
    {
    x = text[i];
    if (x != ‘#’)
    {
    if (x == ‘\n’)
    {
    count++;
    }
    }
    }
    cout << «General quantity line in text: » << count + 1 << endl;
    }

  4. Georgy Petrov

    // 14_Определить количество новых стр.cpp: определяет точку входа для консольного приложения.
    //несколько способов
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <conio.h>
    
    using namespace std;
    const int MAX(100);
    int _tmain(int argc, _TCHAR* argv[])
    {
    	//string s;
    	//cout << "Enter string: "; getline(cin,s,'#');
    	//int len = s.size();
    	//int k=0;
    	//for (int i = 0; i < len; i++){
    	//	if (s.at(i) == '\n') k++;
    	//}
    	//cout << "Amount of strings: " << k + 1;
    
    	//char ar[MAX];
    	//int k = 0;
    	//cout << "Enter string: ";
    	//cin.get(ar, MAX, '#');
    	//cout << ar;
    	//int len = strlen(ar);
    	//for (int i = 0; i < len; i++){
    	//	if (ar[i] == '\n') k++;
    	//}
    	//cout << "Amount of strings: " << k + 1;
    
    	char ch = 'a';
    	int k = 0;
    	cout << "Enter string: ";
    	do{
    		cin.get(ch);
    		if (ch == '\n')k++;
    	} while (ch!='#');
    	cout << "Amount of strings: " << k+1;
    
    	//char ch = ' ';
    	//int k = 0;
    	//cout << "Enter string: ";
    	////system("cls");
    	////cin.clear();
    	//while (ch != '#'){
    	//	ch = _getche();
    	//	if (ch == '\r'){ cout << endl; k++; }
    	//}
    	//cout << "\nAmount of strings: " << k + 1;
    
    	//char ar[] = "FNnw  wdwd \nwdjf wd f\n df sd \nsdf#";
    	//int len = strlen(ar);
    	//int k = 0;
    	//for (int i = 0; i < len; i++){
    	//	if (ar[i] == '\n') k++;
    	//}
    	//cout << "\nAmount of strings: " << k + 1;
    
    	_gettch();
    	return 0;
    }
  5. gro

    gro

    Ненавижу работу с символами и строками:-(

    #include <iostream>
    using namespace std;
    int main()
    {
    	setlocale(LC_ALL,"rus");
    	char text[500], text2[500]={''};
    	int counter=0;
    	cout << "Введите текст:\n";
    	while (!strchr(text,'#')) //поиск первого вхождения символа # в строке text.
    	{
    		cin.getline(text, 128, '\n'); // Ввод строки до 128 символов и завершение ввода строки по нажатию Enter
    		strcat(text2, text); // Присоединение строки в text к уже имеющимся в text2
    		strcat(text2, "\n");
    		counter++;
    	}
    	cout << "\nВведенный текст: \n" << text2 << "\nНовых строк: " << counter << endl;
    	return 0;
    }

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.