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

Помогите поправить код 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; //массив структур Нужно для этой структуры написать 3 функции: 1. Вычислить общую сумму выплат за месяц по отделу.
C++ Вычислить сумму элементов массива и записать элементы массива в фаил
в одномерном массиве, состоящем из n вещественных элементов, вычислить: -сумму элементов массива, расположенных после первого положительного элемента; -записать элементы массива в фаил.#include "stdafx.h" #include "stdio.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv) { float sum, mas;
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. Перегруженные функции имеют аргументы типа int, double, Double. Тело перегруженных функций должны быть одинаковыми. #include "stdafx.h" #include <iostream> #include "math.h" using namespace System; using namespace std; подробнее

Показать сообщение отдельно
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
25.12.2011, 19:43     Помогите поправить код C++. Счетчик символов+слов+строк
Условие:
Напишите С- программу, которая запрашивает текст с клавиатуры на 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru