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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запрет создания скриншотов http://www.cyberforum.ru/cpp-beginners/thread417291.html
Возникла задача - как запретить пользователю делать скриншоты экрана/частей экрана? Перехватить нажатие PrtScr проблем нет, но существует много программ, делающих скриншоты. Как отслеживать их работу?
C++ Массив чисел в строку Доброго времени суток. Помогите пожалуйста преобразовать массив чисел в строку. Может уже кто-то подобное делал, или есть какие-то мысли. Буду очень благодарна. http://www.cyberforum.ru/cpp-beginners/thread417290.html
C++ Создание функции для структуры.
Дана структура и массив структур. struct vedomost { char surname; //фамилия char otdel; //наименование отдела float zarplata; //зарплата }; struct vedomost mas; //массив структур Нужно...
C++ Вычислить сумму элементов массива и записать элементы массива в фаил
в одномерном массиве, состоящем из n вещественных элементов, вычислить: -сумму элементов массива, расположенных после первого положительного элемента; -записать элементы массива в фаил.#include...
C++ Рандом числа в квадрате http://www.cyberforum.ru/cpp-beginners/thread417268.html
Нужно сгенерировать рандомные числа в диапазоне от 1 до 9 и вывести матрцией 9х9. //Вывод матрицы for(i=0; i<9; i++) { for(j=0; j<9; j++) printf("%3d", A); putchar('\n');
C++ Создать класс вещественных чисел Double Создать класс вещественных чисел Double. Определить перегруженную функцию, возвращающую максимальное из двух аргументов. Функция не является членом класса Double. Перегруженные функции имеют... подробнее

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

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

25.12.2011, 19:43. Просмотров 690. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru