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

Функция доводит длину строки до заданной, вставляя пробелы между словами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Взаимосвязанные исходные файлы http://www.cyberforum.ru/cpp-beginners/thread666262.html
Как сделать так чтобы в одном исходном файле я мог использовать элементы из другого и наоборот. А то я делаю змейку и у меня не получается сделать чтобы в классе Snake был указатель на Food и в Food указатель на Snake. Я понял что причина в инклуде в основном исходнике, что исходник объявленный ниже, знает про верхний, но нижний не может знать о верхней((( #include "Food.cpp" // Не знает...
C++ Если строки начинаются с одинаковых символов, напечатать «ДА», иначе –«НЕТ» Народ, помогите мне пожалуйста. Даны две строки. Если они начинаются с одинаковых символов, то напечатать «ДА», иначе –«НЕТ». В С++. Прошу, помогите. http://www.cyberforum.ru/cpp-beginners/thread666261.html
Сформировать одномерный массив из номеров первых отрицательных элементов каждой строки матрицы C++
Дана матрица А размерностью n*m. Сформировать одномерный массив В, элементами которого являются номера первых отрицательных элементов каждой строки массива А. (0 – отрицательный элемент отсутствует). помогите ребятушки чем можете)))
C++ Напечатать числа в порядке неубывания
Помогите пожалуйста написать программу: Даны целые числа a1, a2, ..., an. Напечатать числа в порядке неубывания. Именно напечатать, а не отсортировать. Использовать 2 массива: в 1-м находятся сами числа a1, a2, ..., an, а 2-й массив - это массив порядковых номеров элементов k={0, 1, 2, ..., n}. В результате массив k должен содержать порядковые номера элементов в порядке неубывания. Например,...
C++ Написать программу, которая создает файл http://www.cyberforum.ru/cpp-beginners/thread666243.html
Здравствуйте! Помогите написать программу на Visual Studio 2010. Задание: Написать программу, которая создает файл (name.txt), записует в файл данные введенные с клавиатуры, считует файл и выводит данные на экран. Вводить информацию нужно для 5-и студентов : 1. ФИО студента 2. № студ. билета 3. № курса 4. № группы
C++ Сумма ряда чисел подсчёты Когда подсчитываю сумму 1-го, второго, третьего и четвёртого ряда чисел, то всё правильно, а как доходит до 5-го(n=5), то его значение равняется -5.13067e-005(т.е. -5.13067*10-0.005). Когда это значение складываю с той суммой, которая получилось с 1-го по 4 ряд, то получается совсем другое число, а в программе -1.097(должно быть -6 примерно). Подскажите пожалуйста где моя ошибка? Может не так... подробнее

Показать сообщение отдельно
Snaiffer
2 / 2 / 0
Регистрация: 13.03.2011
Сообщений: 18
12.10.2012, 13:06     Функция доводит длину строки до заданной, вставляя пробелы между словами
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
#include <iostream>
#include <string.h>
 
using namespace std;
 
int count_words(const string &str)
{
     int count = 0;
 
     bool word = false;
     for(int i=0; i < str.size(); i++)
     {
          if(str[i] == ' ')
          {
                if( word )
                     count++;
 
                word = false;
          }
          else
                word = true;
     }
     //process end of string
     if (word)
          count++;
 
     return count;
}
 
int stretch(string &output, const string &input, const int target_size)
{
     int istr_size = input.size();
     if (istr_size < target_size)
     {
        const int quant_words = count_words(input);
        if ( quant_words > 1)
        {
            int quant_AddSpaces = target_size - istr_size;
            int SpacBetweenTwoW = quant_AddSpaces/(quant_words-1);
            int remainder = quant_AddSpaces - SpacBetweenTwoW*(quant_words-1);
    
            bool word = false;
            for(int i=0; i < istr_size; i++)
            {
                  output += input[i];
                  if(input[i] == ' ')
                  {
                        if( word )
                        {
                             int add = 0;
                             if (remainder > 0)
                             {
                                  add = 1;
                                  remainder--;
                             }
                             output.insert(output.size(), SpacBetweenTwoW+add, ' ');
                        }
        
                        word = false;
                  }
                  else
                        word = true;
            }
        }
        else
             return 2;
     }
     else
          return 1;
 
     return 0;
}
 
int main()
{
     string str = "hello world! How are you?";
     const int target_len = 40;
 
     string output;
     switch (stretch(output, str, target_len))
     {
          case 0:
                cout << str << endl;
                cout << output << endl;
                break;
 
          case 1:
                cerr << "The target length of string is less the initual length\n"; 
                break;
 
          case 2:
                cerr << "Quantity of words is less two words\n";
                break;
 
          default:
                cerr << "Unknown error\n";
                break;
     }
 
 
     return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru