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

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

25.12.2011, 20:35. Показов 349. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2011, 20:35
Ответы с готовыми решениями:

Поправить код
В этом коде нужно дописать, что пременная step&lt;=0 иначе errror. Как это сделать ? Вот код. ...

Нужно поправить код
Всем привет, есть у меня вот такая функция,по сути самый простой калькулятор.Он полностью...

Поправить код программы
Добрый день, уважаемые программисты. Нашёл нужный код для своего задания, а он не работает. Пытался...

Нужно поправить код
Вобщем есть файл txt с парами областей вот пример кусочек Volynska Rivnenska Volynska Lvivska ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2011, 20:35
Помогаю со студенческими работами здесь

Поправить код программы
Здравствуйте, уважаемые программисты. Очень нужна ваша помощь - не хочет работать код. Очень...

Поправить код программы
Здравствуйте, уважаемые программисты. Прошу у вас помощи с программой: Методические указания:...

Поправить немного код
#include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using namespace...

Необходимо поправить код
в общем программа решает СЛАУ методом Жордана-Гаусса с выбором ведущего элемента, проблема в том,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru