Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
fruktik
32 / 32 / 1
Регистрация: 03.03.2011
Сообщений: 302
1

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

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

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

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

Частотный словарь без использования библиотечных функций. Файлы
Добрый день, товарищи!:senor: Помогите, пожалуйста, разобраться с программой....

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

Использование библиотечных функций string.h
Задание 3. Использование библиотечных функций string.h 1. Даны текстовая...

Тела библиотечных функций на базовом языке
Очень интересно было бы узнать, что такое этот базовый язык, и как устроены...

15
Chelioss
181 / 181 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
24.01.2012, 21:18 2
Это называется сортировка по возрастанию с учетом пробелов.
Сортировку знаем? Знаем. Вперед.
0
fruktik
32 / 32 / 1
Регистрация: 03.03.2011
Сообщений: 302
24.01.2012, 21:31  [ТС] 3
нет. сделал много задач на строки(удаление пробелов, замена часто встречающихся символов и много всякой такой штуки) а это не знаю(
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.01.2012, 23:16 4
Разбиваете строки на слова. Помещаете их в вектор. Сортируете вектор. Формируете из него обратно строку. Есть нюансы у этого алгоритма. Но я думаю что в дебри вам лезть не нужно.
0
fruktik
32 / 32 / 1
Регистрация: 03.03.2011
Сообщений: 302
24.01.2012, 23:22  [ТС] 5
сорри, но векторы никогда не использовал...это динамический массив?
что посоветуете почитать по этой теме?
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.01.2012, 23:45 6
Вы на правильном пути. Думаю читать не имеет смысла, если они вам не нужны. Вектор это динамический массив. Он здесь очень удобен, так как мы заранее не знаем количество слов. Но ведь можно выделить и памяти с запасом. Вариантов много. Ну а почитать лучше документацию по ним. Но сразу с STL не разберешься, если пробел большой
1
Paporotnik
383 / 227 / 12
Регистрация: 06.07.2011
Сообщений: 512
24.01.2012, 23:50 7
тока не ясно получается - библиотечные алгоритмы над строками использовать нельзя, а вектора значит можно?
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.01.2012, 23:57 8
Paporotnik, ну так ведь все можно и самому реализовать. Так стоп. О чем идет речь: std::string или char* ?
0
fruktik
32 / 32 / 1
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 00:09  [ТС] 9
go, char st[20]={.....}. Не стринг
0
Chelioss
181 / 181 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
25.01.2012, 01:06 10
Сортировать численные массивы умеете?
0
fruktik
32 / 32 / 1
Регистрация: 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 / 1
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 14:42  [ТС] 14
-=ЮрА=-, спасибо за труды, но пользоваться библиотекой стринг нельзя(
только массив типа ЧАР и никаких библиотечных функций
0
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 14:47 15
Цитата Сообщение от fruktik Посмотреть сообщение
-=ЮрА=-, спасибо за труды, но пользоваться библиотекой стринг нельзя(
только массив типа ЧАР и никаких библиотечных функций
- т.е всё делать в циклах - без проблем....
0
Chelioss
181 / 181 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
25.01.2012, 14:55 16
Цитата Сообщение от fruktik Посмотреть сообщение
Chelioss, конечно, пузырьком, вставкой, вспомогательными массивами - все эт умеем)
Тогда представьте, что символьный массив - это численные массив и сортируйте его как численный.
C++
1
2
3
for( int i = отсюда; i < дотсюда; --/++ i )
           for( int j = отсюда; j < дотсюда; --/++j )
                  if( str[] != ' ' ) // тут как-то вставить if, чтобы пробел сортировка не трогагала
Вот вам только надо правильно во вложенный цикл вставить if( str[] != ' '), чтобы пробел не сортировал.
0
25.01.2012, 14:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2012, 14:55

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

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

Не применяя библиотечных функций, напишите код функции
Не применяя библиотечных функций, напишите код функции для вычисления чисел...


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

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

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