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

Упорядочить строку по алфавиту - C++

Восстановить пароль Регистрация
 
Llex333
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 3
24.12.2012, 20:21     Упорядочить строку по алфавиту #1
В общем дана строка,состоящая из слов,разделенных через пробел. Надо упорядочить ее по алфавиту. Написал,но работает неправильно(см. скрин).
Идея такова,что мы разделяем массив на слова,записываем слова в двумерный массив(создав свой тип данных),сравниваем слова в массиве и используем метод пузырька. Вот код:
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
#include "stdafx.h"
#include "iostream"
#include "string.h"
#include "conio.h"
using namespace std;
 
char* E (char* elements,int N)
{
char s[10]=" ";
int cur_el=0;
for (int i=0;i<strlen(elements);i++)
if(elements[i]==' ')
cur_el++;
else if (cur_el==N)
{
int k=strlen(s);
s[k]=elements[i];
s[k+1]='\0';
}
return s;
}
 
 
 
int main()
{
typedef char str [255];
char stroka1 [255];
str stroka [20];
gets_s(stroka1);
for (int i=0;i<20;i++)
{
counter+=(strlen(stroka[i])+1);
strcpy_s((char*) stroka[i],20,(char*) E(stroka1,i));
}
bool t;
do
{
t=true;
for (int i=0;i<19;i++)
if (_stricmp((char*) stroka[i],(char*) stroka[i+1])>0)
{
char* temp=(" ");
strcpy_s((char*) temp,20, (char*) stroka[i+1]);
strcpy_s((char*) stroka[i+1],20,(char*) stroka[i]);
strcpy_s((char*) stroka[i],20,(char*) temp);
t=false;
}
}
while (!t);
for (int i=0;i<20;i++)
printf((char*) stroka[i]);
 
 
_getch();
 
}
Миниатюры
Упорядочить строку по алфавиту  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 20:21     Упорядочить строку по алфавиту
Посмотрите здесь:

Упорядочить слова по алфавиту (строки) C++
C++ Из списка фамилий упорядочить их по алфавиту
Упорядочить строки матрицы по алфавиту C++
Упорядочить данный массив слов по алфавиту C++
Упорядочить данный массив англ. слов по алфавиту C++
C++ упорядочить по алфавиту
Строки данного файла упорядочить по алфавиту C++
Записи упорядочить по алфавиту C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Llex333
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 3
24.12.2012, 20:29  [ТС]     Упорядочить строку по алфавиту #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
#include "stdafx.h"
#include "iostream"
#include "string.h"
#include "conio.h"
using namespace std;
 
char* E (char* elements,int N)
{
char s[10]=" ";
int cur_el=0;
for (int i=0;i<strlen(elements);i++)
if(elements[i]==' ')
cur_el++;
else if (cur_el==N)
{
int k=strlen(s);
s[k]=elements[i];
s[k+1]='\0';
}
return s;
}
 
 
 
int main()
{
typedef char str [255];
char stroka1 [255];
str stroka [20];
gets_s(stroka1);
for (int i=0;i<20;i++)
strcpy_s((char*) stroka[i],20,(char*) E(stroka1,i));
bool t;
do
{
t=true;
for (int i=0;i<19;i++)
if (_stricmp((char*) stroka[i],(char*) stroka[i+1])>0)
{
char* temp=(" ");
strcpy_s((char*) temp,20, (char*) stroka[i+1]);
strcpy_s((char*) stroka[i+1],20,(char*) stroka[i]);
strcpy_s((char*) stroka[i],20,(char*) temp);
t=false;
}
}
while (!t);
for (int i=0;i<20;i++)
printf((char*) stroka[i]);
 
 
_getch();
 
}
Llex333
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 3
25.12.2012, 20:50  [ТС]     Упорядочить строку по алфавиту #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
#include "stdafx.h"
#include "iostream"
#include "string.h"
#include "conio.h"
using namespace std;
 
char* E (char* elements,int N)
{
char s[10]="";
int cur_el=0;
for (int i=0;i<strlen(elements);i++)
if(elements[i]==' ')
cur_el++;
else if (cur_el==N)
{
int k=strlen(s);
s[k]=elements[i];
s[k+1]='\0';
}
return s;
}
 
 
 
int main()
{
    int c=0;
char stroka1 [255];
struct mystruct{
    char mystr[255];
};
mystruct stroka[20];
 
gets(stroka1);
for (int i=0;i<strlen(stroka1);i++)
    if (stroka1[i]==' ')
        c++;
 
for (int i=0;i<c+1;i++)
{
    strcpy(stroka[i].mystr,E(stroka1,i));
}
 
for ( int i=0;i<c;i++)
    for (int j=0;j<c;j++)
        if (stricmp(stroka[j].mystr,stroka[j+1].mystr)>0)
        {
            strcpy(stroka1,"");
            strcpy(stroka1,stroka[j+1].mystr);
            strcpy( stroka[j+1].mystr, stroka[j].mystr);
            strcpy( stroka[j].mystr, stroka1);
        }
for (int i=0;i<c+1;i++)
 cout<<stroka[i].mystr<<" ";
 
_getch();
 
}
Yandex
Объявления
25.12.2012, 20:50     Упорядочить строку по алфавиту
Ответ Создать тему
Опции темы

Текущее время: 12:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru