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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ [C++] Задача http://www.cyberforum.ru/cpp-beginners/thread417362.html
Срочно нужно решить задачу: Дан массив из n слов произвольной длины (длина слова не рпевышает 80 символов). В качестве символов могут использоваться только арабские цифры . Удалить из массива слово , содержащее наименьшее количество четных цифр.
C++ Не могу найти ошибку. Программ запускается и сражу же пропадает. Написано в visual studio 2010 Помогите пжлста найти ошибку. Вроде бы visual studio 2010 ошибок не находит. Но при запуске программы, окно сразу же пропадает. За ранее огромное спасибо. Вот листинг программы. Это программа для хранения книг. #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <conio.h> #include <string.h> http://www.cyberforum.ru/cpp-beginners/thread417356.html
Исследование функциональных возможностей системы команд микропроцессора C++
Обращение матрицы методом Гаусса нужно на Си,а потом этот код перевести в Assembler
C++ Даны числа А,В,С, обозначающие дату.Определить, сколько полных дней осталось до конца года.
Прмогите пожайлуста.Прога не работает как надо(( Вот задание: Даны числа А,В,С, обозначающие дату.Определить, сколько полных дней осталось до конца года. Вот моя нерабочая прога, что переделать? program dni; uses crt; var a,c,b,n,p,t: integer; begin clrscr;
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; str=id1.GetBuffer(); подробнее

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