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

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

Восстановить пароль Регистрация
 
Orest_raiter
3 / 3 / 0
Регистрация: 11.02.2012
Сообщений: 40
08.10.2012, 18:47     Функция доводит длину строки до заданной, вставляя пробелы между словами #1
Функция доводит длину строки до заданной, вставляя пробелы между словами.
слово может складатса с любых символов
идея так
считать сначала n, где n наша строка которая даст знать скоко пробелов потом добавлять
потом считуем L ето наш рядок слов
потом lenghstd() мы узнаем длину нашего рядка
потом проверим скоко у нас слов и скоко нужно пробелов, потом между слов кидаем пропуски
но как ето релизировать

Добавлено через 35 минут
ну плиз помогите

Добавлено через 28 минут
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
// zadacha 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
using namespace std;
 
int lengs (int n,char l[100],int k,int a,int i)
{
cin.getline(l,20);
if(n>=strlen(l) && n!=strlen(l)) k=n-strlen(l);
cout<<l;
for(i=0;i<k;i++)
{
    cout<<" "<<endl;
}
}
 
int main()
{int n,char l[100],int k,int a,int i;
cin>>n;
lengs();
return 0;
system("pause");
}
Добавлено через 16 секунд
чтото типа етого, но тут немогу норм замутить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 18:47     Функция доводит длину строки до заданной, вставляя пробелы между словами
Посмотрите здесь:

Функция доводит длину строки до заданной, вставляя пробелы между словами C++
C++ Исключить лишние пробелы между словами (комментарии)
Написать программу, которая удаляет из текста пробелы между словами и записывает в массив N длину каждого слова C++
C++ Убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два.
Строка: Удалить лишние пробелы между словами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.10.2012, 19:25     Функция доводит длину строки до заданной, вставляя пробелы между словами #2
 Комментарий модератора 
Orest_raiter, следующий дубль - и получите карточку. Если вам не отвечают, ждите, а не нарушайте правила форума.

Сейчас с другими делами закончу, посмотрю, что там у вас.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.10.2012, 13:54     Функция доводит длину строки до заданной, вставляя пробелы между словами #3
Пока ваш код мало на что похож. Вам нужно разобраться сначала с языком как таковым, а потом приступать к написанию программ на нём. Это вам поможет: Литература C++
Orest_raiter
3 / 3 / 0
Регистрация: 11.02.2012
Сообщений: 40
11.10.2012, 19:14  [ТС]     Функция доводит длину строки до заданной, вставляя пробелы между словами #4
Цитата Сообщение от silent_1991 Посмотреть сообщение
Пока ваш код мало на что похож. Вам нужно разобраться сначала с языком как таковым, а потом приступать к написанию программ на нём. Это вам поможет: Литература C++
cпс
но мне завтра здавать, помогите плиз
я не проч, просто комп в ремонте, а компилировать через телефон на сайте надоело немного
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
12.10.2012, 10:18     Функция доводит длину строки до заданной, вставляя пробелы между словами #5
совет, делайте в стринговых переменных, т.к. там есть масса полезных функций.
проверяете длину вашей строки если меньше 20, то сплитом разрываете по признаку символа " " вашу строку. потом в цикле простым сложением строк можете добавить нужное количество пробелов между вашими словами (совет если изначально у вашей строки между словами есть 2 и более пробелов, делайте исключения иначе у вас будут пустые строки в полученном массиве, компилятор ясно дело это съест ибо он не вкурсе что вы записываете с вою строку, но при добавлении пробелов будет выпадать ошибка)
Snaiffer
2 / 2 / 0
Регистрация: 13.03.2011
Сообщений: 18
12.10.2012, 13:06     Функция доводит длину строки до заданной, вставляя пробелы между словами #6
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;
}
Yandex
Объявления
12.10.2012, 13:06     Функция доводит длину строки до заданной, вставляя пробелы между словами
Ответ Создать тему
Опции темы

Текущее время: 04:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru