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

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

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

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

25.12.2011, 19:43. Просмотров 554. Ответов 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++
C++ довести до ума код .сравнение двух строк и вывод общих символов
Запомнить данные в классе в виде массива слов. Помогите - не код, а совет как сделать. C++
Поправить код C++
C++ Поправить немного код
Нужно поправить код C++
Количество введенных символов, слов и строк C++
Преобразовать полученный текст в набор строк, каждая из которых содержит целое количество слов и ее длинна не превышает 40 символов C++
Поправить код программы C++
Программа подсчета строк, слов и символов не выводит результат C++
Создать программу-счётчик слов (помогите доработать код) C++
C++ Определить количество символов, слов и строк в файле

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

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

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