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

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

Войти
Регистрация
Восстановить пароль
 
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
#1

Помогите поправить код C++. Счетчик символов+слов+строк - C++

25.12.2011, 19:43. Просмотров 591. Ответов 0
Метки нет (Все метки)

Условие:
Напишите С- программу, которая запрашивает текст с клавиатуры на input. На output выдает количество символов, количество слов, количество строк которое было введено. Чтение с клавиатуры осуществить с помощью функции getchar(). Чтение с клавиатуры должно быть остановлено при помощи ввода shutdown-code ^D (CTRL + D). ^D имеет ASCII-значение 4. Используйте while loop.
В муках родился у меня такой вот код-уродец (см. ниже).

Существует у меня несколько проблем:
1. По отдельности у меня эти три функции работают вроде как нормально. Вместе (как в коде) ниже. Что то они не очень работают. Программа компилируется, но прежде чем вывести
"WordsCounter results: " и
"StringsCounter results: "
выдает какое то замысловатое число с буквенной частью.
Как это поправить ?

2. Не знаю как ввести CTRL + D. Поэтому ввел пока табуляцию, но ее приходится вводить три раза, чтобы прога выдала результат.
Как ввести корректно CTRL + D?

3. Есть еще алгоритмическая ошибка.
Почему то подсчет слов введется только в пределах последней строки.
А надо чтобы подсчет ввелся со всех строк.
Как это реализовать ?

Пожалуйста, помогите.

Код
#include <iostream>
#include <string>
#include <stdio.h>
#include <conio.h>
#define IN 1
#define OUT 0
using namespace std;

int CharsCounter (string str)
{
	int Sumlength = 0;
	int c=0;
	while ((c=getchar())!= '\t')
    {
	int length = str.length();
	Sumlength = Sumlength+length;
	}
	return Sumlength;
}


int WordsCounter (string str)
{
int c, counter,state;
state=OUT;
c=0;
counter=1;
while((c=getchar())!= '\t')

	{
	if(c==' ')
	state=OUT;
		if(state==OUT)
		{
		state=IN;
		++counter;
		}
	}
return counter;
}


int StringsCounter(string str)
{
int c, counter,state;
state=OUT;
counter=1;
	while((c=getchar())!='\t')
	{
		if(c=='\n')
		{
	++counter;
		}
	}
	return counter;
}

int main ()
{
  string str;

  cout <<"enter string: "  << endl; 

  getline(cin,str) ; 
  

 cout <<"CharsCounter results: " << CharsCounter (str) 
  << endl <<

 cout <<"WordsCounter results: " << WordsCounter (str) 
  << endl <<

 cout <<"StringsCounter results: " << StringsCounter (str)
  << endl;


  system ("pause");
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 19:43     Помогите поправить код C++. Счетчик символов+слов+строк
Посмотрите здесь:

Количество введенных символов, слов и строк - C++
Напишите программу, которая выводит на экран вводимые символы до тех пор, пока не введено &lt;CTRL/Z&gt;, выводит ко-личество введенных символов,...

Определить количество символов, слов и строк в файле - C++
Здравствуйте ребята, на практических столкнулась с проблемой, необходима ваша помощь) Есть некий текстовый файл, мне нужно определить...

Программа подсчета строк, слов и символов не выводит результат - C++
Читаю книгу по с++ и там есть пример такой задачи. Когда запускаю ее то она ничего не выводит. В чем проблема? #include &lt;stdio.h&gt; ...

Создать программу-счётчик слов (помогите доработать код) - C++
Эта программа видит на входе &quot;Ма-ма -мыла раму. Рама-, мыла маму. Мама была рамой. А у Саши 0 - шуры муры. А у Шуры нет&quot; а на выходе должно...

Запомнить данные в классе в виде массива слов. Помогите - не код, а совет как сделать. - C++
Здравстуйте! Задание стоит так: Программа должна открыть файл Go.txt и считать с него текстовую информацию в виде отдельных слов. в...

Преобразовать полученный текст в набор строк, каждая из которых содержит целое количество слов и ее длинна не превышает 40 символов - C++
Преобразовать полученный текст в набор строк, каждая из которых содержит целое количество слов (слово должно целиком находиться в...

Поправить код - C++
В этом коде нужно дописать, что пременная step&lt;=0 иначе errror. Как это сделать ? Вот код. #include &lt;iostream&gt; using namespace...

Нужно поправить код - C++
Вобщем есть файл txt с парами областей вот пример кусочек Volynska Rivnenska Volynska Lvivska Lvivska Volynska Lvivska...

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

Необходимо поправить код - C++
в общем программа решает СЛАУ методом Жордана-Гаусса с выбором ведущего элемента, проблема в том, что код вроде бы правильный но выдает...

Поправить немного код - C++
#include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using namespace std; int main() { int...

Поправить код программы - C++
Здравствуйте, уважаемые программисты. Очень нужна ваша помощь - не хочет работать код. Очень благодарен за любую помощь. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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