0 / 0 / 0
Регистрация: 07.07.2014
Сообщений: 6
1

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A

08.07.2014, 19:45. Показов 1788. Ответов 5
Метки нет (Все метки)

Даны строки A и B. Если в A есть повторяющиеся символы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и удалить латинские буквы из A; в остальных случаях упорядочить символы B в порядке, обратном к алфавитному, удалив повторяющиеся символы, и продублировать в A символы, не входящие в B.

Добавлено через 1 час 29 минут
есть идеи как это делать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2014, 19:45
Ответы с готовыми решениями:

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A
"Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить...

Если в A есть латинские буквы, то упорядочить символы B в алфавитном порядке; в остальных случаях продублировать русские
Задание: Если в A есть латинские буквы, то упорядочить символы B в алфавитном порядке; в остальных...

Строки: если не все символы A входят в B, то упорядочить символы B в алфавитном порядке
Задание Если не все символы A входят в B, то упорядочить символы B в алфавитном порядке; в...

Если в строке массива есть одинаковые символы, то упорядочить символы строки в алфавитном порядке
Дан массив строк. Если в строке массива есть одинаковые символы, то упорядочить символы строки в...

5
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
08.07.2014, 20:13 2
Есть, есть. Только я не буду. Потому что у меня велосипедамотивации нет. Задача простая, но объемная. А я люблю, когда наоборот.
1
4 / 4 / 0
Регистрация: 23.09.2013
Сообщений: 29
08.07.2014, 21:35 3
Разбить на несколько подзадач.

Первая допустим: проверить повторяющиеся символы в А. Идешь по всем символам. a[0],a[1],a[2] и т.д. проверяешь их со всеми другими. С самим сабой тока не проверяй. a[0] == a[1] ? есть повтор : нет повтора.
0
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
09.07.2014, 09:29 4
Цитата Сообщение от Женя Т Посмотреть сообщение
Разбить на несколько подзадач.
Да, это основная ошибка ТС. Это задание надо было разбить на два, а лучше три отдельных. Быстрее бы помогли.

Цитата Сообщение от Женя Т Посмотреть сообщение
Первая допустим: проверить повторяющиеся символы в А. Идешь по всем символам. a[0],a[1],a[2] и т.д. проверяешь их со всеми другими. С самим сабой тока не проверяй. a[0] == a[1] ? есть повтор : нет повтора.
Какой кошмар! Вы осознаете, что придется сделать (n - 1)! проверок, где n - длина строки? Так гораздо лучше:

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
#include "greatest.h"
 
// tested code begins
 
#include <stdbool.h>
 
bool struniq(const char* str)
{
    static bool present[256];
    int i;
    for( i = 1; i < 256; ++i ) {
        present[i] = false;
    }
    while( i = (unsigned char) *str++ ) {
        if( present[i] ) { return false; }
        present[i] = true;
    }
    return true;
}
 
// tested code ends
 
TEST empty_string()
{
    const char* string = "";
    ASSERT(struniq(string));
    PASS();
}
 
TEST one_char()
{
    const char* string = "\255";
    ASSERT(struniq(string));
    PASS();
}
 
TEST two_different_chars()
{
    const char* string = "ab";
    ASSERT(struniq(string));
    PASS();
}
 
TEST two_equal_chars()
{
    const char* string = "aa";
    ASSERT_FALSE(struniq(string));
    PASS();
}
 
TEST very_long_string()
{
    const char* string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    ASSERT(struniq(string));
    PASS();
}
 
SUITE(test_struniq)
{
    RUN_TEST(empty_string);
    RUN_TEST(one_char);
    RUN_TEST(two_different_chars);
    RUN_TEST(two_equal_chars);
    RUN_TEST(very_long_string);
}
 
GREATEST_MAIN_DEFS();
 
int main(int argc, char **argv) {
    GREATEST_MAIN_BEGIN();      /* command-line arguments, initialization. */
    RUN_SUITE(test_struniq);
    GREATEST_MAIN_END();        /* display results */
}
1
0 / 0 / 0
Регистрация: 07.07.2014
Сообщений: 6
09.07.2014, 16:58  [ТС] 5
помогите исправить,почему у меня дублируются символы?
C
1
2
3
4
5
6
7
8
9
10
11
  //дублирование в А символы не входящие в B.  
      lena = strlen(a);
      for (i=0; i<=lena-1; i++)
      {
          if (strchr(b, a[i]) != 0) 
          {
          lena = strlen(a);
          for (j=lena; j>=i; j--)
          a[j+1] = a[j];
          }
      }
Добавлено через 22 минуты
все уже разобрался
0
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
09.07.2014, 20:53 6
А можно делать изменения не в той же самой строке, а в новой? То есть надо нам, например, удалить латинские символы из A, мы копируем все символы (кроме латинских) из A в NEW_A. Это очень сильно упростило бы дело.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2014, 20:53
Помогаю со студенческими работами здесь

Упорядочить в алфавитном порядке буквы заданной строки
Упорядочить в алфавитном порядке буквы заданной строки.

Упорядочить в алфавитном порядке буквы заданной строки
Упорядочить в алфавитном порядке буквы заданной строки

Символами строки являются большие и малые латинские буквы. Удалить из состава строки последовательности 'abcd', в составе которых могут быть как боль
Символами строки являются большие и малые латинские буквы. Удалить из состава строки...

Удалить латинские буквы из строки
вот задание. строки A и B. Если в A есть повторяющиеся символы, а в B нет повторяющихся символов,...


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

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

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