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

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

Войти
Регистрация
Восстановить пароль
 
jakis
1 / 1 / 0
Регистрация: 22.01.2012
Сообщений: 18
#1

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

09.07.2014, 11:54. Просмотров 676. Ответов 2
Метки нет (Все метки)

"Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и удалить латинские буквы из A; в остальных случаях продублировать русские буквы в A и удалить повторяющиеся символы из B." Такая вот задача...
Пользую dev c++ 5.4.2.
Дело вот в чем: ввожу в качестве первой строки такой набор: 1hы, а в качестве второй строки: 23hh34. В итоге должен выдать... "Преобразованная строка А:1ыы" и "Преобразованная строка В:24". Однако выдаёт: "Преобразованная строка А:1ыыmmm" и "Преобразованная строка В: [вообще пусто]". Помогите пожалуйста!

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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<cstring>
main()
{
    int la,lb,cha,cha2,cha3,chb,chb2,chva,chva2,e,i,j;
    char A[100],B[100],v;
    printf("Введите строку A:");
    gets(A);
    la=strlen(A);
    printf("Введите строку B:");
    gets(B);
    lb=strlen(B);
    printf("Строка A:%s",A);
    printf("\nСтрока B:%s",B);
    printf("\nДлина строки А:%d",la);
    printf("\nДлина строки В:%d",lb);
    char vA[]="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
    char vA2[]="ЙЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁйцукенгшщзхъфывапролджэячсмитьбю";
    for(cha=0;cha<=la-1;cha++)
    {
        for(chva=0;chva<=52;chva++)
        {
            if(A[cha]==vA[chva])
            {
                la=strlen(A);
                for(cha2=cha;cha2<=la;cha2++)
                {
                    A[cha2]=A[cha2+1];
                }
            }
        }
    }
    la=strlen(A);
    for(cha=la-1;cha>0;cha--)
    {
        for(chva2=0;chva2<=66;chva2++)
        {
            if(A[cha]==vA2[chva2])
            {
                la=strlen(A);
                for(cha2=la;cha2>=cha;cha2--)
                {
                    A[cha2+1]=A[cha2];
                }
            }
        }
    }
    printf("\nПреобразованная строка А:%s",A);
    e=0;
    for(chb=0;chb<=lb-1;chb++)
    {
        for(i=1;i<=lb;i++)
        {
            if(B[chb]=B[i])
            {
                for(j=i;j<=lb;j++)
                {
                    B[j]=B[j+1];
                    e=1;
                }
            }
        }
    }
    lb=strlen(B);
    if(e==0)
    {
        for(i=0;i<=lb;i++)
        {
            for(j=1;j<=lb;j++)
            {
                if(B[i-1]<B[i])
                {
                    v=B[i-1];
                    B[i-1]=B[i];
                    B[i]=v;
                }
            }
        }
    }
    printf("\nПреобразованная строка В:%s",B); 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 11:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A (C++):

Напечатать все символы строки в алфавитном порядке - C++
Дана строка символов, напечатать все символы, входящие в строку в алфавитном порядке. Если в исходной строке символ встречается несколько...

Дана строка символов. Расставить введенные латинские символы в алфавитном порядке. - C++
Помогите с решением пожалуйста.

Выбрать из строки все буквы и отсортировать их в алфавитном порядке - C++
выбрать из строки все буквы и отсортировать их в алфавитном порядке.

Выберите из строки все буквы от Q (q) до Z (z) и отсортируйте их в алфавитном порядке - C++
Всем доброго времени суток. Задачка: С клавиатуры вводится строка. Выберите из нее все буквы от Q (q) до Z (z) (строчные преобразуйте...

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

Вывести в алфавитном порядке все латинские буквы, встречающиеся в строке (Pascal -> C++) - C++
Переведите из паскаля в с++, пожалуйста! Задание:Задана строка символов. Вывести в алфавитном порядке все латинские буквы,...

2
Alex5
1056 / 720 / 108
Регистрация: 12.04.2010
Сообщений: 1,847
09.07.2014, 13:32 #2
Цитата Сообщение от jakis Посмотреть сообщение
Если в A есть латинские буквы, а в B нет повторяющихся символов, то ... удалить латинские буквы из A
Перед тем, как удаляются латинские символы из A, у Вас ещё не проверена строка B.
Цитата Сообщение от jakis Посмотреть сообщение
C++
1
2
3
4
5
6
        for(chva=0;chva<=52;chva++)
        {
            if(A[cha]==vA[chva])
            {
                la=strlen(A);
                for(cha2=cha;cha2<=la;cha2++)
Т.к. нумерация начинается с нуля, номер последнего элемента == (длина-1).
0
jakis
1 / 1 / 0
Регистрация: 22.01.2012
Сообщений: 18
10.07.2014, 13:13  [ТС] #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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<cstring>
main()
{
    int i,j,k,e,lb;
    char A[80],B[80],min;
    printf("Введите строку А:");
    gets(A);
    printf("Введите строку В:");
    gets(B);
    char VerifA1[]="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrQqSsTtUuVvWwXxYyZz";
    char VerifA2[]="АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";
    /*Проверка строки А на наличие латинских символов*/
    e=0;
    for(i=strlen(A)-1;i>=0;i--)
    {
        if(strchr(VerifA1,A[i])!=NULL)
        {
            e=1;
        }
    }
    /*Проверка строки В на повторяющиеся символы*/
    i=0;
    int e1=0;
    while(i<=strlen(B)-1)
    {
        for(j=strlen(B)-1;j>i;j--)
        {
            if(B[i]==B[j])
            {
                e=1;
            }
        }
    }
    /*Решение в первом случае*/
    if(e==1 && e1==1)
    {
        for(i=strlen(A)-1;i>=0;i--)
        {
            if(strchr(VerifA1,A[i])!=NULL)
            {
                for(j=i;j<strlen(A);j++)
                {
                    A[j]=A[j+1];
                }
            }
        }
        i=0;
        while(i<=strlen(B)-1)
        {
            for(j=strlen(B)-1;j>i;j--)
            {
                if(B[i]==B[j])
                {
                    for(k=j;k<strlen(B);k++)
                    {
                        B[k]=B[k+1];
                    }
                }
            }
            i++;
        }
    }
    else
    /*Решение во втором случае*/
    {
        if(strchr(VerifA2,A[i])!=NULL)
        {
            for(j=strlen(A);j>=i;j--)
            {
                A[j+1]=A[j];
            }
        }
        for(i=0;i<=strlen(B)-2;i++)
        {
            min=B[i];
            k=i;
            for(j=i+1;j<=strlen(B)-1;j++)
            {
                if(B[j]<min)
                {
                    min=B[j];
                    k=j;
                }
            }
            B[k]=B[i];
            B[i]=min;
        }
    }
    printf("Преобразованная строка А:");
    puts(A);
    printf("Преобразованная строка В:");
    puts(B);
}
Проблема в том, что программа после введения значений тупо виснет

Добавлено через 8 минут
1. Нашел одну, в 33 строке
не так:
Цитата Сообщение от jakis Посмотреть сообщение
e=1;
,
а так:
Цитата Сообщение от jakis Посмотреть сообщение
e1=1;
.

Но программа все равно циклится на втором пункте, там, где "Проверка строки В на повторяющиеся символы"

Добавлено через 6 минут
Я понял, в 35 после "}" нужно было вписать "i++;"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 13:13
Привет! Вот еще темы с ответами:

Строчные буквы строки преобразуйте в прописные и отсортируйте в алфавитном порядке - C++
с клавиатуры вводится строка. выберите из нее все буквы А(а) до I(i) . строчные преобразуйте в прописные и отсортируйте в алфавитном порядке

Выдать на экран слова из строки в алфавитном порядке и с заглавной буквы - C++
Всем привет, не представляю как вообще сделать. Задача: В строке имеется несколько слов, разделенные одним или несколькими пробелами....

Строчные буквы строки преобразуйте в прописные и отсортируйте в алфавитном порядке - C++
с клавиатуры вводится строка. выберите из нее все буквы от А(а) до I(i)(строчные преобразуйте прописные) и отсортируйте их в алфавитном...

Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены и переписать новый текст в файл D - C++
23. Задан текстовый файл С, состоящий из произвольной последовательности буквенных символов. Упорядочить символы в алфавитном порядке, при...


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

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

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