Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 17
1

Строки. нужен код для соритровки символов

21.11.2011, 16:10. Показов 745. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При написании программ использовать нуль–терминированные строки и работать только с типом char *. Длина каждой строки не превосходит 300 символов. Словом, входящим в состав строки, назовѐм непрерывную последовательность символов, ограниченную символами–разделителями, началом и концом строки. Символы, относящиеся к разделителям, определяет пользователь, если иное не сказано в условии задачи. Если решить задачу невозможно, программа должна выдать соответствующее сообщение.

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

Добавлено через 3 минуты
помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2011, 16:10
Ответы с готовыми решениями:

Нужен код распознавания графических символов с экрана монитора
Нужен код распознавания графических символов с экрана монитора!!Ребят!!помогите...

нужен код задачи на delphi (строки)
Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить...

Строки символов (кривой код)
Дано предложение в котором имеются буквы "t" и "s".определить какая из них встречается позже. до...

Оптимизировать код перебора символов строки
Здравствуйте.Подскажите как можно сжать этот код? public string a1 = new string {"a","b","с"}; ...

9
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
21.11.2011, 17:19 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <string.h>
 
#define DELIM  " .,:;!?\n\t"
#define MAXLINE  1000
#define MAXWORDS  100
 
void extract_words(char *s, char **w, int nw, char *delim)
{
    for (*w = strtok(s, delim);
        *w++ != NULL && --nw > 0;
        *w = strtok(NULL, delim))
        ;
}
 
int mystrcmp(char *s, char *t)
{
    for ( ; *s && *s == *t; s++, t++)
        ;
    return (*s == '\0' && *t == '\0') ? 0 : *s - *t;
}
 
char *merge_words(char *s, char **w1, char **w2,
    int (*cmp)(char *, char *))
{
    char **p;
 
    *s = '\0';
    while (*w1 != NULL && *w2 != NULL) {
        if (cmp(*w1, *w2) < 0)
            strcat(s, *w1++);
        else 
            strcat(s, *w2++);
        strcat(s, " ");
    }
    for (p = (*w1 == NULL) ? w2 : w1; *p != NULL; p++) {
        strcat(s, *p);
        strcat(s, " ");
    }
    return s;
}
 
int main()
{
    char str1[MAXLINE], str2[MAXLINE];
    char *words1[MAXWORDS], *words2[MAXWORDS];
    char s[MAXLINE + MAXLINE];
    
    while (printf("\nenter a first line:\n") > 0 
        && fgets(str1, MAXLINE, stdin) && *str1 != '\n'
        && printf("\nenter a second line:\n") > 0 
        && fgets(str2, MAXLINE, stdin) && *str2 != '\n') {
 
            extract_words(str1, words1, MAXWORDS, DELIM);
            extract_words(str2, words2, MAXWORDS, DELIM);
 
            printf("\nresult:\n%s\n",
                                merge_words(s, words1, words2, mystrcmp));
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 17
21.11.2011, 20:27  [ТС] 3
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
using namespace std;
int main()
{
    char a[256], b[256], s[256];
    gets(a);
    gets(b);
    int i = 0, j = 0, q = 0;
    while (i < strlen(a) && j < strlen(b))
    {
        while (!((a[i] > 64 && a[i] < 91) || (a[i] > 96 && a[i] < 123)))
            i++;
        while (!((b[j] > 64 && b[j] < 91) || (b[j] > 96 && b[j] < 123)))
            j++;
        if ((a[i] > b[j]) && ((a[i] > 64 && a[i] < 91) || (a[i] > 96 && a[i] < 123)) && ((b[j] > 64 && b[j] < 91) || (b[j] > 96 && b[j] < 123)))
        {
            while ((a[i] > 64 && a[i] < 91) || (a[i] > 96 && a[i] < 123))
            {
                s[q] = a[i];
                q++;
                i++;
            }
            s[q] = ' ';
            q++;
        }
        else 
        {
            while ((b[j] > 64 && b[j] < 91) || (b[j] > 96 && b[j] < 123))
            {
                s[q] = b[j];
                q++;
                j++;
            }
            s[q] = ' ';
            q++;
        }
    }
    if (i = strlen(a))
        while (j < strlen(b))
        {
            bool t = true;
            if ((b[j] > 64 && b[j] < 91) || (b[j] > 96 && b[j] < 123))
            {
                s[q] = b[j];
                q++;
                j++;
            }
            if (!((b[j] > 64 && b[j] < 91) || (b[j] > 96 && b[j] < 123)) && t == false)
            {
                s[q] = ' ';
                q++;
                j++;
                t = true;
            }
            if (!((b[j] > 64 && b[j] < 91) || (b[j] > 96 && b[j] < 123)) && t == true)
                j++;
        }
    else
        while (i < strlen(a))
        {
            bool t = true;
            if ((a[i] > 64 && a[i] < 91) || (a[i] > 96 && a[i] < 123))
            {
                s[q] = a[i];
                q++;
                i++;
            }
            if (!((a[i] > 64 && a[i] < 91) || (a[i] > 96 && a[i] < 123)) && t == false)
            {
                s[q] = ' ';
                q++;
                i++;
                t = true;
            }
            if (!((a[i] > 64 && a[i] < 91) || (a[i] > 96 && a[i] < 123)) && t == true)
                i++;
        }
        cout << s;
        return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!


вот мой вариант но не могу найти ошибку... отредактируйте плиз кто сможет))
просто тот код я немного не понял но в итоге

Пишет:
enter a first line:
15abr46987rbi]f';/sdfbx/s/rgent/

enter a second line:
h;liou0/hj,kn90hmn'd[dp

result:
15abr46987rbi]f' /sdfbx/s/rgent/ h liou0/hj kn90hmn'd[dp

,а должно на выходе выдавать только цифры...заменяя остальные символы пробелом ну т.е. вместо (a325b) должно будет выдать (a b)
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
22.11.2011, 14:18 4
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
 
#define MAXLINE  1000
#define MAXWORDS  100
 
char *get_delims(char *s)
{
    int c;
 
    for (c = 1; c <= UCHAR_MAX; c++)
        if (! isalpha(c))
            *s++ = c;
    *s = '\0';
    return s;
}
 
void extract_words(char *s, char **w, int nw, char *delim)
{
        for (*w = strtok(s, delim);
                *w++ != NULL && --nw > 0;
                *w = strtok(NULL, delim))
                ;
}
 
int mystrcmp(char *s, char *t)
{
        for ( ; *s && *s == *t; s++, t++)
                ;
        return (*s == '\0' && *t == '\0') ? 0 : *s - *t;
}
 
char *merge_words(char *s, char **w1, char **w2,
        int (*cmp)(char *, char *))
{
        char **p;
 
        *s = '\0';
        while (*w1 != NULL && *w2 != NULL) {
                if (cmp(*w1, *w2) < 0)
                        strcat(s, *w1++);
                else 
                        strcat(s, *w2++);
                strcat(s, " ");
        }
        for (p = (*w1 == NULL) ? w2 : w1; *p != NULL; p++) {
                strcat(s, *p);
                strcat(s, " ");
        }
        return s;
}
 
int main()
{
        char str1[MAXLINE], str2[MAXLINE];
        char *words1[MAXWORDS], *words2[MAXWORDS];
        char s[MAXLINE + MAXLINE];
    char delims[UCHAR_MAX];
 
    get_delims(delims);  
        while (printf("\nenter a first line:\n") > 0 
                && fgets(str1, MAXLINE, stdin) && *str1 != '\n'
                && printf("\nenter a second line:\n") > 0 
                && fgets(str2, MAXLINE, stdin) && *str2 != '\n') {
 
                        extract_words(str1, words1, MAXWORDS, delims);
                        extract_words(str2, words2, MAXWORDS, delims);
 
                        printf("\nresult:\n%s\n",
                                merge_words(s, words1, words2, mystrcmp));
        }
        return 0;
}
0
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 17
22.11.2011, 23:09  [ТС] 5
нет не работает все то же самое
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
22.11.2011, 23:11 6
Цитата Сообщение от Dima7147 Посмотреть сообщение
нет не работает все то же самое
пример?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.11.2011, 23:11 7
Цитата Сообщение от Dima7147 Посмотреть сообщение
нет не работает все то же самое
что конкретно не работает или работает не так? какие ошибки?
0
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 17
22.11.2011, 23:27  [ТС] 8
enter a first line:
a/c/d/f/

enter a second line
b/a/e/d

result:
a b a c d e d f

А должно выводить: a a b c d d e f
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
22.11.2011, 23:28 9
Цитата Сообщение от Dima7147 Посмотреть сообщение
enter a first line:
a/c/d/f/
enter a second line
b/a/e/d
result:
a b a c d e d f
А должно выводить: a a b c d d e f
вы сами себе противоречите
Цитата Сообщение от Dima7147 Посмотреть сообщение
Слова в каждой из двух исходных строк упорядочены по алфавиту
0
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 17
23.11.2011, 00:02  [ТС] 10
прошу прощения, осмотрелся. все верно, спасибо огромное за помощь
0
23.11.2011, 00:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2011, 00:02
Помогаю со студенческими работами здесь

Перебор всевозможных комбинаций символов строки, исправить код
Увидел код с подбором цифр... решил буквы добавить, но вышла ошибка... Пожалуйста, скажите как...

Алгоритм соритровки
Привет, нужно сделать сортировку таким образом что-бы все элементы массива изменили своих начальные...

Траблы, соритровки
Ребят, как в паскале записать массив AX (N) и добавить массив С(К), выполнить сортировку включением...

Для каждой строки вывести количество символов равное сумме элементов строки
дан целочисленный двумерный массив значения элементов которого лежат в интервале.Вычеслить суммы...

Составить программу для ввода строки символов с клавиатуры в буфер и вывод этой строки на экран
Составить программу для ввода строки символов с клавиатуры в буфер и вывод этой строки на экран ...

мне нужен код для С++ для поворота изображения
В университете задали(первый курс),проблема в том что я даже не могу понять как можно загрузить...


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

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