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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ [C++] Задача http://www.cyberforum.ru/cpp-beginners/thread417362.html
Срочно нужно решить задачу: Дан массив из n слов произвольной длины (длина слова не рпевышает 80 символов). В качестве символов могут использоваться только арабские цифры . Удалить из массива слово...
C++ Не могу найти ошибку. Программ запускается и сражу же пропадает. Написано в visual studio 2010 Помогите пжлста найти ошибку. Вроде бы visual studio 2010 ошибок не находит. Но при запуске программы, окно сразу же пропадает. За ранее огромное спасибо. Вот листинг программы. Это программа для... http://www.cyberforum.ru/cpp-beginners/thread417356.html
Исследование функциональных возможностей системы команд микропроцессора C++
Обращение матрицы методом Гаусса нужно на Си,а потом этот код перевести в Assembler
C++ Даны числа А,В,С, обозначающие дату.Определить, сколько полных дней осталось до конца года.
Прмогите пожайлуста.Прога не работает как надо(( Вот задание: Даны числа А,В,С, обозначающие дату.Определить, сколько полных дней осталось до конца года. Вот моя нерабочая прога, что переделать?...
C++ Задача на обработку текста (sos) http://www.cyberforum.ru/cpp-beginners/thread417330.html
Задана фраза - последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать все...
C++ Переместить слова в начало строки Добрый день! Дана строка CString типа, перем m_f и m_last указывают диапазон слов, которые надо перенести в начало строки. char *tot; char *str,*str3,*str2; str2=" "; str3=" "; i=0; ... подробнее

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

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

25.12.2011, 20:35. Просмотров 234. Ответов 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 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru