Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Tollerant
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 4
1

Определить, упорядочены ли слова в предложении в лексикографическом порядке по возрастанию

21.10.2017, 20:19. Просмотров 372. Ответов 6

Задание "Словом назовем всякую последовательность букв латинского алфавита длины не более 20. Пред-
ложением — всякую последовательность не более 30 слов, разделенных одним или несколькими пробе-
лами, оканчивающуюся символом ‘.’, ‘!’ или ‘?’. Написать программу, читающую заданное предложение,
контролирующую его правильность и выполняющую функцию, которая определяет упорядочены ли слова в предложении в лексикографическом порядке по возрастанию.

Само предложение я ввел, проверка правильности есть.

А как написать функцию, которая определяет упорядочены ли слова в предложении в лексикографическом порядке по возрастанию, я понятия не имею. Даже не представляю, как могут быть слова упорядочены в лексикографическом порядке по возрастанию. Как это вообще сделать?
Заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2017, 20:19
Ответы с готовыми решениями:

Поиск нужного слова в словаре, в котором слова расположены в лексикографическом порядке
Напишите задачу поиска нужного слова в словаре, в котором слова расположены в лексикографическом...

Все слова длины 6 в алфавите a, b, c, d, e, f упорядочены в лексикографическом порядке
Все слова длины 6 в алфавите a, b, c, d, e, f упорядочены в лексикографическом порядке Каким по...

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

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

Сформировать новый текст, в котором строки упорядочены в лексикографическом порядке
Всем привет, очень нужна помощь. Помогите сделать это задание. а) Определить количество строк;...

6
Catstail
Модератор
24279 / 12247 / 2208
Регистрация: 12.02.2012
Сообщений: 19,877
21.10.2017, 20:44 2
Цитата Сообщение от Tollerant Посмотреть сообщение
в лексикографическом порядке по возрастанию.
- по-простому это означает "по алфавиту".
1
Tollerant
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 4
21.10.2017, 20:45  [ТС] 3
Т.е. , если взять 2 слова ABC DEF, то это будет правильно?
0
Catstail
Модератор
24279 / 12247 / 2208
Регистрация: 12.02.2012
Сообщений: 19,877
21.10.2017, 20:47 4
Tollerant, да. И "ABC ADC" - тоже. "ADC ABC" - нет. Сравнение строк - strcmp.
0
Tollerant
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 4
21.10.2017, 21:41  [ТС] 5
А как с помощью strcmp определить, упорядочены ли они?

Добавлено через 43 минуты
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#define word 21
#define predl 601
int vvod(char*a)
{
    int i = 0, pr = 0, slovo = 0, obpr = 0;
    char ch = NULL;
    while (1)
    {
        ch = getchar();
        if ((ch == '!') || (ch == '?') || (ch == '.'))
        {
            a[i] = ch;
            break;
        }
        
        if (ch == ' ')
        {
            pr++;
            obpr++;
        }
        else pr = 0;
        if ((ch == ' ') || (ch == ',') || (ch == '-'))
            slovo = 0;
        else
            slovo++;
        if (slovo > word)
        {
            printf("Перебор символов %d\n", word-1);
            return 0;
        }
        if (obpr == 20)
        {
            printf("Перебор слов\n");
            return 0;
        }
        a[i++] = ch;
        
    }
    a[i + 1] = '\0';
    return 1;
}
 
int leks(char *a)
{
    int i = 0, j, k = 0;
    int ib = 0, ie = 0, kb = 0, ke = 0;
 
 
    while (a[i] != '\0')
    {
        while (a[i] == ' ')i++;
        ib = i;
        ie = i;
        while ((a[ie] != ' ') && (a[ie] != '!') && (a[ie] != '?') && (a[ie] != '.'))
            ie++;
        ie--;
 
        
        while (a[k] == ' ')k++;
        kb = k;
        ke = k;
        while ((a[ke] != ' ') && (a[ke] != '!') && (a[ke] != '?') && (a[ke] != '.')) ke++;
        ke--;
        int g;
        for (j = kb, g = ib + 1; j < ke + 1; j++, g++)
            if (a[j] < a[g])
            {
                printf("Да");
                break;
            }
            else
            {
                printf("Нет");
                break;
            }
        i = ie + 1;
        if ((a[i] == '!') || (a[i] == '?') || (a[i] == '.'))
            i++;
    }
}
        
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
    char sent1[predl];
    printf("Введите предложение\n");
    if (vvod(sent1) == 0)
        return;
    leks(sent1);
}
Попытался сделать определение упорядочения, работает правильно через раз, где-то правильно, где-то нет.
0
Catstail
Модератор
24279 / 12247 / 2208
Регистрация: 12.02.2012
Сообщений: 19,877
21.10.2017, 21:53 6
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
#include <stdio.h>
#include <stdlib.h>
 
int isOrdered(char **S, int n)
{
    int i;
    for (i=0; i<n-1; i++)
      if (strcmp(S[i],S[i+1]) > 0) return 0;
    return 1;     
}
int main(int argc, char *argv[])
{
 
  char *A[4]={"abb","ade","bcd","qeq"};
  char *B[5]={"abb","qade","abcd","uqeq","ddd"};
  
  printf("Array A ");
  if (isOrdered(A,4))
     printf("is ordered\n");
  else
     printf("is not ordered\n");
     
  printf("Array B ");
  if (isOrdered(B,5))
     printf("is ordered\n");
  else
     printf("is not ordered\n");
  
  system("PAUSE");  
  return 0;
0
Tollerant
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 4
21.10.2017, 22:09  [ТС] 7
Можете помочь мне с моей функцией leks? Было бы очень хорошо, если бы она работала, как надо.
0
21.10.2017, 22:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2017, 22:09

Сформировать новый текст, в котором строки упорядочены в лексикографическом порядке
1)Определить количество строк; б) сформировать новый текст, в котором строки упорядочены в...

Отсортировать строки числовой матрицы по возрастанию в лексикографическом порядке
Дана матрица A из целых чисел размером MxN. Переставить строки матрицы так, чтобы строки стали...

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


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

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

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