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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
#1

Улучшение алгоритма подсчета строк, букв, слов - C++

28.06.2012, 12:01. Просмотров 1670. Ответов 18
Метки нет (Все метки)

Данный алгоритм, компилируется. Однако есть недочеты:
1. Не всегда верно считает буквы. Почему не очень понимаю.
2. Два спейса считает как слово. Надо как то включить с логически и (&&) чтобы слово он считал как спейс + хотя бы одна бука из алфовита, так вот я не знаю как это прописать типа 'a-z' && 'A-Z' как то так что ли ?

Заранее огромное спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
int main ()
{  
char ch;
  cout <<"enter your text: " ;
  cin >> ch; 
    int numChars = 0; 
    int numLines = 0;
    int numWords = 0;
    while ((ch=getchar())!= 4) // Keyboard input will continue until "ASCII value 4 + <enter>" (CTRL+D+<enter>) will be entered
        switch (ch)
             {      
    case  ' ' : numWords++; break; // The condition of the definition of words
    case '\t' : numWords++; break; // The condition of the definition of words
    case '\n' : numWords++; numLines++; break; // The condition of the definition of words and newlines 
    default   : numChars++; break;       
            }
    numLines += 1; // for some reason it needs to add one and the results are correct
 cout << "CharCounter results: " << numChars << endl;
 cout << "WordsCounter results: " << numWords << endl;
 cout << "LinesCounter results: " << numLines << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 12:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Улучшение алгоритма подсчета строк, букв, слов (C++):

Улучшение алгоритма записи строк - C++
В общем код полностью рабочий. В функции fill_start_file происходит запись в файл с условием, что строка не должна быть больше 80 символов....

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

Улучшение алгоритма вычисления определителя матрицы, порядка n>3 - C++
Всем доброго времени суток, я достаточно долго искал шаблон кода для вычисления определителя квадратной матрицы, нашел на просторах рунета...

Напишите программу подсчета суммарного числа букв 'а' и букв 'b' в данной строковой переменной - C++
Напишите программу подсчета суммарного числа букв 'а' и букв 'b' в данной строковой переменной. Вывести на экран каких букв больше. ...

Составить блок-схему алгоритма для подсчета количества работников - C++
Составить блок-схему алгоритма для подсчета количества работников, которые имеют с 1 по 5 разряд, если известны разряды каждого работника...

функция подсчета слов - C++
Здравствуйте! Помгите исправить ошибку в функции подсчета слов оканчивающихся на символ Пркатически все варианты пробывал но ничего...

18
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
28.06.2012, 16:42  [ТС] #16
Цитата Сообщение от voral Посмотреть сообщение
я не великий гуру, но вроде это не должно работать.

Добавлено через 3 минуты
Вы наверное хотели написать:
C
1
  if (((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z')))
Да и по отношению к первому варианту программы здесь будут другие результаты. Т.к. ряд символов не учитывается включая пробел, перенос строки, табуляции, а так же цифр и знаков.

Кроме того если между словами поставить табуляцию без пробела, то будет учтено только одно слово
как же тогда мне код переписать чтоб все ок было ? подскажи пожалуйста
0
voral
536 / 520 / 92
Регистрация: 16.03.2008
Сообщений: 2,389
28.06.2012, 16:46 #17
Так просто в тело do while добавь из первого варианта switch и его содержимое.
И будет почти так же. Для полного счастья останется только в этот switch добавить
C
1
case 4: break;
Чтоб этот символ не учитывался
1
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
28.06.2012, 16:54  [ТС] #18
Цитата Сообщение от voral Посмотреть сообщение
Так просто в тело do while добавь из первого варианта switch и его содержимое.
И будет почти так же. Для полного счастья останется только в этот switch добавить

Чтоб этот символ не учитывался
так я добавил код выше это собственно оно и есть... только херня какая получается
0
voral
536 / 520 / 92
Регистрация: 16.03.2008
Сообщений: 2,389
28.06.2012, 16:59 #19
В коде выше у вас. Используются "if", а в первом варианте switch ... case...
0
28.06.2012, 16:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 16:59
Привет! Вот еще темы с ответами:

Функция подсчета пар букв в строке - C++
Доброго времени суток, в данный момент я читаю книгу Страуструпа &quot;Язык программирования С++&quot; и пытаюсь прорешивать задачи, которые он дает,...

В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются. - C++
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.

Введите с клавиатуры некоторый текст и подсчитать в нем количество слов, букв, цифр,строчных букв, заглавных б - C++
Напишите пожалуйста программу в С++: Введите с клавиатуры некоторый текст и подсчитать в нем количество слов, букв, цифр,строчных букв,...

Дана строка из 20 слов. Сформировать строку, составленную из последних букв всех слов исходной строки - C++
Задача: дана строка из 20 слов (или любого другого числа). Сформировать строку, составленную из последних букв всех слов исходной строки.


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

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

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