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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
#1

Алфавитный порядок - строки - C++

22.04.2009, 18:34. Просмотров 1040. Ответов 12
Метки нет (Все метки)

Помогите пожалуйста решить задачу:
Описать функцию Sort(A), которая принимает в виде параметра строку A, состоящую из трёх слов, в каждом из которых от 2-ух до 6-ти латинских букв, и за каждым из которых следует пробел,. Функция Sort(A) выводит на печать эти слова в алфавитном порядке.

Никогда задачи со строками не решал, даже не знаю как подойти.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2009, 18:34     Алфавитный порядок - строки
Посмотрите здесь:

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

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

Поменять порядок следования символов строки на обратный - C++
Всем привет помогите пожалуйста.Решить задачу: поменять порядок следования символов данной строки на обратный. Например, для строки «Мама...

Задана строка. Изменить порядок следования символов в 1 и 2 половине строки на обратный - C++
Всем доброго времени суток! Работать со строками крайне не умею, а сдать нужно. Надеюсь, что поможете. То есть, я понимаю это как...

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

При выполнении определенного условия поменять порядок следования символов строки на противоположный - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Если второе слово первой строки такое же, как второе слово второй строки, то...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
22.04.2009, 20:37     Алфавитный порядок - строки #2
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
#define MAXWORDS 3
#define MAXLEN 6
 
void Sort(char *line)
{
    int i, is = 1;
    char words[MAXWORDS][MAXLEN], tmp[MAXLEN], *p;
    
    for(i = 0; (p = strtok(line, " ")) != NULL; i++) {
        strcpy(words[i], p);
        line += strlen(p) + 1;
    }
    while(is) {
        is = 0;
        for(i = 0; i < MAXWORDS-1; i++)
            if(strcmp(words[i], words[i+1]) > 0) {
                strcpy(tmp, words[i]);
                strcpy(words[i], words[i+1]);
                strcpy(words[i+1], tmp);
                is = 1;
            }
    }
    for(i = 0; i < MAXWORDS; i++)
       printf("%s\n", words[i]);
}
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
22.04.2009, 21:16     Алфавитный порядок - строки #3
Gravity, меня тоже заинтересовала это задача, но твоё решение быстрее, я вставил твою ф-цию - при отладке:
Алфавитный порядок - строки
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
22.04.2009, 21:19     Алфавитный порядок - строки #4
insolent, покажи код, где и какую строку отправляешь в функцию.
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
22.04.2009, 21:34     Алфавитный порядок - строки #5
Вот код:
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
#include "stdafx.h"
#include "iostream"
using namespace std;
#define n 30
#define MAXWORDS 3
#define MAXLEN 6
void Sort(char *line);
int main(int argc, char* argv[])
{
    setlocale(LC_ALL,".1251");
    char str[n];
    _flushall();
    cout << "Введите строку." << endl;
    cin.getline(str,n);
    Sort(str);
    system("PAUSE");
    return 0;
}
void Sort(char *line)
{
    int i, is = 1;
    char words[MAXWORDS][MAXLEN], tmp[MAXLEN], *p;
 
    for(i = 0; (p = strtok(line, " ")) != NULL; i++) {
        strcpy(words[i], p);
        line += strlen(p) + 1;
    }
    while(is) {
        is = 0;
        for(i = 0; i < MAXWORDS-1; i++)
            if(strcmp(words[i], words[i+1]) > 0) {
                strcpy(tmp, words[i]);
                strcpy(words[i], words[i+1]);
                strcpy(words[i+1], tmp);
                is = 1;
            }
    }
    for(i = 0; i < MAXWORDS; i++)
        printf("%s\n", words[i]);
}
Заганяю строку: new line inside
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
22.04.2009, 21:37     Алфавитный порядок - строки #6
insolent, по условию задачи после каждого слова стоит пробел, ну а ты, видимо, этот пробел где-то не вводишь, вот strtok и вылетает. Чтобы такого не было, можно добавить дополнительную проверку в цикле ф-и.
Код
for(i = 0; (p = strtok(line, " ")) != NULL && i < MAXWORDS; i++)
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
22.04.2009, 21:51     Алфавитный порядок - строки #7
После корректировки:
Алфавитный порядок - строки
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
22.04.2009, 21:52     Алфавитный порядок - строки #8
MAXLEN увеличь.
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
22.04.2009, 22:02     Алфавитный порядок - строки #9
Теперь все ок(MAXLEN увеличил до 7). Я так понял MAXLEN - длина большева слово + пробел?
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
22.04.2009, 22:02     Алфавитный порядок - строки #10
Да, только вместо пробела туда пишется '\0'.
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
22.04.2009, 22:09     Алфавитный порядок - строки #11
СПС буду знать.
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
27.04.2009, 14:14  [ТС]     Алфавитный порядок - строки #12
Спасибо большое, но извиняюсь за глупый вопрос, в каком месте конкретно программа отслеживает соответствие алфавитному порядку первых букв в каждом слове?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2009, 12:22     Алфавитный порядок - строки
Еще ссылки по теме:

Перенести все цифры в конец строки, при этом порядок букв не меняется - C++
помогите написать программу пожалуйста Даны предложения в котором встречаются цифры. Перенести все цифры в конец строки, при этом порядок...

Переписать содержимое одной строки в другую изменив порядок букв в первом слове на обратный - C++
Нужно написать программу на С++ переписать содержимое одной строки в другую изменив порядок букв в первом слове на обратный

Переместить элементы матрицы равные 0 в конец строки, сохранив порядок следования остальных элементов - C++
Проблема следующая : дано двумерный массив надо переместить элементы которые равны 0 в конец строки при этом последовательность следования...

Порядок байтов - C++
Заранее извиняюсь если не туда пишу... Помогите определить порядок байтов: 01 00 00 00 71 82 3D 00 CB 82 3D 00 ED 68 4C 23...


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

Или воспользуйтесь поиском по форуму:
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
04.05.2009, 12:22  [ТС]     Алфавитный порядок - строки #13
Ап
Yandex
Объявления
04.05.2009, 12:22     Алфавитный порядок - строки
Ответ Создать тему
Опции темы

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