33 / 33 / 1
Регистрация: 03.03.2011
Сообщений: 302
1

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

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

Author24 — интернет-сервис помощи студентам
Дана строка типа "abc xyz dea"
На выходе расположить слова в алфавитном порядке первых букв, т.е. "abc dea xyz"
Не могу раскрутить алгоритм...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2012, 21:15
Ответы с готовыми решениями:

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

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

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

Функция Reverse(s) без использования библиотечных функций и индексации
Итак, есть задачка: Написать функцию Reverse(s), которая будет менять порядок элементов в строке s...

15
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
24.01.2012, 21:18 2
Это называется сортировка по возрастанию с учетом пробелов.
Сортировку знаем? Знаем. Вперед.
0
33 / 33 / 1
Регистрация: 03.03.2011
Сообщений: 302
24.01.2012, 21:31  [ТС] 3
нет. сделал много задач на строки(удаление пробелов, замена часто встречающихся символов и много всякой такой штуки) а это не знаю(
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.01.2012, 23:16 4
Разбиваете строки на слова. Помещаете их в вектор. Сортируете вектор. Формируете из него обратно строку. Есть нюансы у этого алгоритма. Но я думаю что в дебри вам лезть не нужно.
0
33 / 33 / 1
Регистрация: 03.03.2011
Сообщений: 302
24.01.2012, 23:22  [ТС] 5
сорри, но векторы никогда не использовал...это динамический массив?
что посоветуете почитать по этой теме?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.01.2012, 23:45 6
Вы на правильном пути. Думаю читать не имеет смысла, если они вам не нужны. Вектор это динамический массив. Он здесь очень удобен, так как мы заранее не знаем количество слов. Но ведь можно выделить и памяти с запасом. Вариантов много. Ну а почитать лучше документацию по ним. Но сразу с STL не разберешься, если пробел большой
1
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
24.01.2012, 23:50 7
тока не ясно получается - библиотечные алгоритмы над строками использовать нельзя, а вектора значит можно?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.01.2012, 23:57 8
Paporotnik, ну так ведь все можно и самому реализовать. Так стоп. О чем идет речь: std::string или char* ?
0
33 / 33 / 1
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 00:09  [ТС] 9
go, char st[20]={.....}. Не стринг
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
25.01.2012, 01:06 10
Сортировать численные массивы умеете?
0
33 / 33 / 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
33 / 33 / 1
Регистрация: 03.03.2011
Сообщений: 302
25.01.2012, 14:42  [ТС] 14
-=ЮрА=-, спасибо за труды, но пользоваться библиотекой стринг нельзя(
только массив типа ЧАР и никаких библиотечных функций
0
Заблокирован
Автор FAQ
25.01.2012, 14:47 15
Цитата Сообщение от fruktik Посмотреть сообщение
-=ЮрА=-, спасибо за труды, но пользоваться библиотекой стринг нельзя(
только массив типа ЧАР и никаких библиотечных функций
- т.е всё делать в циклах - без проблем....
0
186 / 186 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2012, 14:55
Помогаю со студенческими работами здесь

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

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

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

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

Где найти описание библиотечных функций?
можно ли скачать подробное описание библиотечных функций c++ и типов их аргументов? как на msdn...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru