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

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

25.12.2011, 19:43. Показов 1117. Ответов 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2011, 19:43
Ответы с готовыми решениями:

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

Код склеивания строк, нужно поправить код соединения строк с запятыми для Excel
Есть красивый код но в нем учитывается и пустые строки для соединения и получается не красиво...

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

Помогите немного поправить код
Привет всем. Помогите поправить код кому не тяжело (наработку прикрепляю). Суть такова, нужно...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2011, 19:43
Помогаю со студенческими работами здесь

Помогите поправить код почти закончил прогу
Вот весь код unit Unit1; interface uses shellapi, Windows, Messages, SysUtils, Variants,...

Подсчёт символов, строк и слов
Всем доброго! Никак не могу разобраться в чём ошибка. Есть статусбар и в нём 3 блока для подсчёта...

Подсчет символов, строк и слов
Доброго времени суток. Совсем недавно начал изучать Си, и за основу взял книжку Керн&amp;Ричи. В первой...

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


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

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

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