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

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

Войти
Регистрация
Восстановить пароль
 
 
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
#1

Работа со строкой без библиотечных функций - C++

24.01.2012, 21:15. Просмотров 1010. Ответов 15
Метки нет (Все метки)

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

БЕЗ использования библиотечных функций - C++
Помогите написать программу... Написать программу, которая (без использования библиотечных функций для обработки строк), копировала бы...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Использование библиотечных функций string.h - C++
Задание 3. Использование библиотечных функций string.h 1. Даны текстовая строка и слово (например, ba). Напечатать все слова, входящие в...

Есть ли способ просмотреть код библиотечных функций? - C++
Жутко хочется посмотреть, как устроена, скажем, функция gotoxy из conio.h. Но в заголовочном файле бесконечные отсылки к разным файлам и...

Не применяя библиотечных функций, напишите код функции - C++
Не применяя библиотечных функций, напишите код функции для вычисления чисел типа int и double в целую степень n. Напишите программу, в...

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

15
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
24.01.2012, 21:18 #2
Это называется сортировка по возрастанию с учетом пробелов.
Сортировку знаем? Знаем. Вперед.
0
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
24.01.2012, 21:31  [ТС] #3
нет. сделал много задач на строки(удаление пробелов, замена часто встречающихся символов и много всякой такой штуки) а это не знаю(
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 23:16 #4
Разбиваете строки на слова. Помещаете их в вектор. Сортируете вектор. Формируете из него обратно строку. Есть нюансы у этого алгоритма. Но я думаю что в дебри вам лезть не нужно.
0
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
24.01.2012, 23:22  [ТС] #5
сорри, но векторы никогда не использовал...это динамический массив?
что посоветуете почитать по этой теме?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 23:45 #6
Вы на правильном пути. Думаю читать не имеет смысла, если они вам не нужны. Вектор это динамический массив. Он здесь очень удобен, так как мы заранее не знаем количество слов. Но ведь можно выделить и памяти с запасом. Вариантов много. Ну а почитать лучше документацию по ним. Но сразу с STL не разберешься, если пробел большой
1
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
24.01.2012, 23:50 #7
тока не ясно получается - библиотечные алгоритмы над строками использовать нельзя, а вектора значит можно?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 23:57 #8
Paporotnik, ну так ведь все можно и самому реализовать. Так стоп. О чем идет речь: std::string или char* ?
0
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 00:09  [ТС] #9
go, char st[20]={.....}. Не стринг
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
25.01.2012, 01:06 #10
Сортировать численные массивы умеете?
0
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 01:11  [ТС] #11
Chelioss, конечно, пузырьком, вставкой, вспомогательными массивами - все эт умеем)
0
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 11:43 #12
Цитата Сообщение от fruktik Посмотреть сообщение
Дана строка типа "abc xyz dea"
На выходе расположить слова в алфавитном порядке первых букв, т.е. "abc dea xyz"
Не могу раскрутить алгоритм...
- вот вникай в этот
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
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    int i,j, nWords = 0;//Число слов в тексте
    string text;
    string word; 
    stringstream ss;
    cout<<"Enter string\n";
    getline(cin,text);
    ss.str(text);
    //Сначала посчитаем число слов
    while(ss>>word)
        nWords++;
    //Теперь наш стринг-поток надо "перезагрузить"
    ss.clear();
    ss.seekg(0,ios::beg);
    ss.str(text);//Заново впихиваем введенный текст в поток
    //Выделим память под массив слов
    string * array = new string[nWords];
    for(i = 0; i < nWords; i++)
        ss>>array[i];
    //Ну а теперь сортируем прямЫм выбором
    for(    i = 0; i < nWords; i++)
    for(j = i + 1; j < nWords; j++)
    {
        if((array[j])[0] < (array[i])[0])
        {
            word = array[i];
            array[i] = array[j];
            array[j] = word;
        }
    }
    cout<<"Sorted words\n";
    for(i = 0; i < nWords; i++)
        cout<<array[i]<<" ";
    cout<<endl;
    system("pause");
    delete [] array;//ну и чистим память при выходе
    return 0;
}
0
Миниатюры
Работа со строкой без библиотечных функций  
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 11:45 #13
PS:Такой ввод в VisualStudio 6.0 требует нажатия Enter 2 раза
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
getline(cin,text);
, на 9-й версии всё работает после 1-го нажатия...
0
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 14:42  [ТС] #14
-=ЮрА=-, спасибо за труды, но пользоваться библиотекой стринг нельзя(
только массив типа ЧАР и никаких библиотечных функций
0
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 14:47 #15
Цитата Сообщение от fruktik Посмотреть сообщение
-=ЮрА=-, спасибо за труды, но пользоваться библиотекой стринг нельзя(
только массив типа ЧАР и никаких библиотечных функций
- т.е всё делать в циклах - без проблем....
0
25.01.2012, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2012, 14:47
Привет! Вот еще темы с ответами:

Напишите варианты библиотечных функций strncpy, strncat и strncmp - C++
вот такая задача, Напишите варианты библиотечных функций strncpy, strncat и strncmp, которые оперируют с первыми символами своих...

Записать тригонометрические выражения посредством библиотечных функций и вычислить их - C++
Нужно написать программу, в которой пользователь вводит альфа(alpha), а программа бы считывала и выводила z1 и z2 z1=cos в квадрате от...

Найти количество слов в строке с использованием библиотечных функций string.h - C++
Найти количество слов в строке с использованием библиотечных функций string.h на языке С. Помогите Не дублируйте темы!

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


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

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

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