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

Как изменить код, чтобы он работал со строкой, содержащей пробелы? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Непонятные условия в некоторых примерах http://www.cyberforum.ru/cpp-beginners/thread11241.html
Читаю книгу, и там пример: ... int my_func(); ... int main() { ... if(my_func()) { cout << ...
C++ Свитчер Написал подобного рода прогу. int main() { int nomber; cout << "Choise the nomber of exercise(1-10, and other nomber to exit): ";... http://www.cyberforum.ru/cpp-beginners/thread11235.html
Тип char и указатели C++
Вопрос... Тип может хранить только символы, или строки тоже? Если только символы, то почему этот код работает?: ... void my_func(char* my_string) { for(int x = 0; x < 10; x++) { std::cout <<...
Иероглифы при чтении из файла C++
Привожу код, в котором создаю, файл записываю в него данные. Затем пытаюсь их считать, выводит иероглифы... Что не так?. Спасибо. #include "stdafx.h" #include <iostream> #include <fstream>...
C++ Проверка условия окончания цикла for http://www.cyberforum.ru/cpp-beginners/thread11197.html
Здраствуйте. Проблема заключается в следующем. Есть следующий цикл: for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++){ while ((n%i||d%i)==0){ ...
C++ Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? функция в классе в котором она прописана объявлена как паблик. void auction::rvectoroldtime(int oldtime1, double low, double high ) { vectoroldtime=(double *)calloc(oldtime*4, sizeof(double));... подробнее

Показать сообщение отдельно
4aineg
0 / 0 / 0
Регистрация: 07.08.2008
Сообщений: 23

Как изменить код, чтобы он работал со строкой, содержащей пробелы? - C++

14.08.2008, 10:48. Просмотров 1016. Ответов 1
Метки (Все метки)

А как мне в своем коде изменить чтобы вместо «_» при наборе предложения можно ставить пробелы, пытаюсь вводить через консоль с пробелами: выводит и работает только с одним словом
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
  #include <cstring>
  using namespace std;
   
  class Line
  {
  private:
   
        char *Line1; 
        int length;
   
  public:
   
        Line()
        {
              length = 1;
              Line1 = new char[length];
              Line1[length-1] = '\0'; 
        }
   
      Line(const char* L1)
      {
            length = strlen(L1)+1;
          Line1 = new char[length];
          strcpy(Line1, L1);
              Line1[length-1] = '\0';
      }
   
      friend ostream& operator << (ostream& out , Line& l);
        friend istream& operator >> (istream & in, Line &l);
        Line operator - (char letter);
        bool operator == (Line l);
        int CountWordsInLine();
        char* ReverseLine(); 
        void DrawStar();
   
        ~Line()
        {
              delete [] Line1;
        }
  };
   
  int Line::CountWordsInLine()
        {
          int Count=0;
          for(int i=0; i<length; i++)
        {
          if (Line1[i]==' ')
              Count++;
        }
          Count++;
          return Count;
        }
   
  char* Line::ReverseLine() 
        {
          for (int i=0; i<(length-1)/2; i++)
        {
              char temp = Line1[i];
              Line1[i] = Line1[length-i-2];
              Line1[length-i-2] = temp;
        }
              return Line1;
        }
   
  void Line::DrawStar()
  {
        for (int i=0; i<45; i++)
              cout << '*';
        cout << endl;
  }
   
  istream & operator >> (istream & in, Line& l)
        {
              char *temper = new char[100];
              in >> temper;
              l.length = strlen(temper)+1;
              temper[l.length-1] = '\0'; 
              l.Line1 = new char[l.length];
              strcpy(l.Line1, temper);
              l.Line1[l.length-1] = '\0';
              return in;
        }
   
      ostream& operator << (ostream& out, Line& l)
        {
              return out << l.Line1;
        }
   
        Line Line::operator - (char letter)
        {
              char *temp = new char[length];
              int i,j;
              for (i=0, j=0; i<length; i++)
              {
                    if (Line1[i] != letter)
                    {
                          temp[j] = Line1[i];
                          j++;
                    }
              }
              temp[j] = '\0';
              return temp;
      }
   
        bool Line::operator == (Line l)
        {
              int i, j;
              for (i=0, j=0; i<length-1, j<length-1; i++, j++)
                    if (Line1[i] == l.Line1[j])
                          return true;
              return false;
        }
   
  int main()
  {
        Line ln1;
        Line ln2("What's up niger");
        cout << "enter sentence: "; 
        cin >> ln1;
        cout << "normal sentece: " << ln1 << endl;
   
        if(ln1 == ln2)
              cout << "sentences are equal" << endl;
        else
              cout << "sentences are not equal" << endl;
        cout << "number of words: " << ln1.CountWordsInLine() << endl;
        ln1.DrawStar();
        cout << "enter letter: ";
        char temp;
        cin >> temp;
        cout << "without letter: " << ln1 - temp << endl;
        cout << "reversed sentence: " << ln1.ReverseLine() << endl;
        
        return 0;
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru