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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
#1

Дополнить каждое слова пробелами(по количеству максимального) - C++

15.11.2010, 14:09. Просмотров 1200. Ответов 19
Метки нет (Все метки)

Вот задачка. "Дополнить каждео слово предложения пробелами так , чтобы его длина была равна длине самого длинного слова. Распечатать получившееся предложение." Решить задачку нужно используя отдельную функция на каждое действие. Применение глобальных йункций запрещено. Мне уже решали данную задачу , но не без последнего условия , проще помочь. Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2010, 14:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дополнить каждое слова пробелами(по количеству максимального) (C++):

Дополнить каждое слово предложения пробелами (по длине максимального слова) - C++
Вот задачка. "Дополнить каждое слово предложения пробелами так, чтобы его длина была равна длине самого длинного слова. Распечатать...

дополнить пробелами каждое слово так, чтобы его длинна приравнялась длинне самого длинного слова в строке - C++
Язык Си. Нужна помощь с файлами. Компиляция проходит успешно, но при запуске Windows выдает ошибку. Задача программы: дополнить пробелами...

Дана строка, содержащая разделенные пробелами слова, вывести все слова-палиндромы - C++
Дана строка, содержащая разделенные пробелами слова.Вивесты все имеющиеся слова-палиндлромы и их общее количество,срочно надо,у меня не...

Дана строка текста, в которой слова разделены пробелами и запятыми, вывести повторяющиеся слова - C++
Помогите пожалуйста! Как мне найти и вывести повторяющиеся слова? П.С. При работе со строками не использовать указатели. Строки...

Поменять местами первые слова (слова разделены пробелами) заданных строк, без использования процедур - C++
Вводятся две строки произвольного текста. Поме-нять местами их первые слова (слова разделены пробелами). без подпроцедур.

Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. - C++
5.17 Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое...

19
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 14:15 #2
ridd[73rus], Глобальных функций запрещено? Через класс или прострнаство имен что-ли? оО
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
15.11.2010, 14:15 #3
Цитата Сообщение от ridd[73rus
;1112058]Применение глобальных йункций запрещено
простите, но что это значит?
0
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
15.11.2010, 14:16 #4
Это чтобы был красивый вывод: определенное количество символов на строку с переносом слов?
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
15.11.2010, 15:36 #5
Цитата Сообщение от ForEveR Посмотреть сообщение
ridd[73rus], Глобальных функций запрещено? Через класс или прострнаство имен что-ли? оО
Сомневаюсь, возможно ТС не совсем понял, что написал. Возможно имелось ввиду "глобальных переменных" или, что-нибудь в этом роде.
0
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
15.11.2010, 17:05  [ТС] #6
Изввиняюсь , именно Глобальных переменных .
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
15.11.2010, 18:25 #7
Как вариант:
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
#include<iostream>
#include<sstream>
#include<iomanip>
using namespace std;
ostream& addspace(ostream& ob,string& S){
    istringstream s(S);
    stringstream Os;
    int max=0;
    int countword=0;
    while(s>>S){
        if(S.size()>max)
            max=S.size();
        Os<<S<<' ';
        countword++;
    }
    while(countword){
    Os>>S;  
    ob<<setw(max)<<left<<S<<' ';
    countword--;
    }
    return ob;
}
 
int main(){
string S;
cout<<"Enter string: ";
getline(cin,S);
cout<<"String with space ";
addspace(cout,S)<<endl;
system("pause");
return 0;
}
В ф-ции хотел создать пустой поток, загнать туда строку с setw() и вернуть этот поток в cout - неполучилось( Может кто-нибудь подскажет, как это реализовать?

P.S. мы же тут не только из-за альтруизма, мы тоже учимся )))
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 20:45 #8
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
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
 
int main()
{
     std::string Str;
     std::vector<std::string> Vec;
     std::getline(std::cin, Str);
     std::istringstream ist(Str);
     std::string tmp;
     while(ist>>tmp)
         Vec.push_back(tmp);
     size_t maxlen=0;
     for(std::vector<std::string>::const_iterator It=Vec.begin();
          It!=Vec.end();
          ++It)
     {
          if(It->size()>maxlen)
             maxlen=It->size();
     }
     for(std::vector<std::string>::iterator It=Vec.begin();
          It!=Vec.end();
          ++It)
     {
          It->append(maxlen-It->size(), ' ');
     }
     for(std::vector<std::string>::const_iterator It=Vec.begin();
          It!=Vec.end();
          ++It)
     {
          std::cout<<*It<<' ';
     }
     std::cout<<'\n';
     return 0;
}
Добавлено через 12 минут
Kastaneda, Не понимаю зачем тебе вообще возврат потока. Явно мы результат функции все равно присвоить не сможем. А подаешь ты по ссылке. Так в чем проблема?
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
15.11.2010, 20:52 #9
ForEveR, а случайно не знаете как реализовать:
Цитата Сообщение от Kastaneda Посмотреть сообщение
В ф-ции хотел создать пустой поток, загнать туда строку с setw() и вернуть этот поток в cout
?
Объясню на примере:

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
ostream& addspace(string& S){
        stringstream s(S);
        stringstream Os;
        int max=0;
        int countword=0;
        while(s>>S){
                if(S.size()>max)
                        max=S.size();
                Os<<S<<' ';
                countword++;
        }
        while(countword){
        Os>>S;  
        s<<setw(max)<<left<<S<<' ';//вот тут просто заполняем поток
        countword--;
        }
        return s;//и возвращаем его
}
 
int main(){
string S;
cout<<"Enter string: ";
getline(cin,S);
cout<<"String with space "<<addspace(S)<<endl;//возвращенный заполненый поток выводим в cout
system("pause");
return 0
Но так не работает, не могу придумать как это реализовать(

Добавлено через 3 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Kastaneda, Не понимаю зачем тебе вообще возврат потока. Явно мы результат функции все равно присвоить не сможем. А подаешь ты по ссылке. Так в чем проблема?
Проблема в том, что я вообще не уверен, что такое возможно. Кое как добился компиляции этого кода, но выводится что-то походжее на адресс.

"Явно мы результат функции все равно присвоить не сможем." - не понял о чем речь?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 21:24 #10
Kastaneda, Как мы можем вывести поток в cout? Зачем вам это?
При вызове функции addspace(S, cout) - все ведь нормально работает и поток изменяется...

Добавлено через 8 минут
C++
1
cout.rdbuf(addspace(S).rdbuf());//меняем поток на тот который вернулся из функции
Добавлено через 10 минут
А если ты хочешь вывести поток в поток... То сомневаюсь
0
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
15.11.2010, 21:54  [ТС] #11
вот тут прикреплён файл с методичкой ,может вам поможет.
0
Вложения
Тип файла: pdf Язык Си часть 2.pdf (471.4 Кб, 46 просмотров)
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 22:05 #12
ridd[73rus], Сразу говорить надо было что на Си...
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
16.11.2010, 16:40 #13
Цитата Сообщение от ForEveR Посмотреть сообщение
Kastaneda, Зачем вам это?
Да просто для себя, хотел понять
А если ты хочешь вывести поток в поток... То сомневаюсь
Вот и я о чем. Мне интересно было - это я так не могу сделать или это реально не возможно ? После уже подумал - да, "поток в поток" - это глупость)
0
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
16.11.2010, 20:12  [ТС] #14
Цитата Сообщение от ForEveR Посмотреть сообщение
ridd[73rus], Сразу говорить надо было что на Си...
Раздел называется С/C++ для начинающих , я и выложил сюда задачку по C.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
16.11.2010, 20:28 #15
ridd[73rus], Принято указывать на каком языке. Чистый Си или С++ сильно различаются.
0
16.11.2010, 20:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2010, 20:28
Привет! Вот еще темы с ответами:

Вводится строка каждое слово которой отделяется от других слов одним или несколькими пробелами. - C++
Вводится строка каждое слово которой отделяется от других слов одним или несколькими пробелами. Найти количество слов состоящих из пяти...

Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию - C++
Помогите с вот такой вот задачкой: Дана строка символов, состоящая из произвольного текста, слова раз- делены пробелами. Вывести на...

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них - C++
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела....

ООП. Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу - C++
Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу: удалить из слова первую букву....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru