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

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

Войти
Регистрация
Восстановить пароль
 
Капитан Кузьма
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 1
#1

Сортировка строк по возрастанию и убыванию длин слов - C++

19.11.2014, 13:29. Просмотров 270. Ответов 0
Метки нет (Все метки)

Написал код, в котором принимаются две строки. Первая сортируется по возрастанию длин слов, вторая по убыванию. В результате нужно получить строку, в которой на нечётных местах слова первой строки, на чётных - второй. Если в одной из строк заканчиваются слова, использовать её заново.
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// Lab_1.cpp : Defines1 the1 entry point for the1 console1 application.
//
 
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#pragma warning(disable : 4996)
using namespace std;
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
int n1 = 0, n2 = 0;
char line1[40];
char line2[40];
char buf[41];
char buf2[41];
bool flag = 1;
int e1, e2;
printf("Lab 1. Samoylenko Semen 6213. Variant - 17\n");
printf("\nEnter first line:");//первая строка
for (int i = 0; i < 40; i++)
{
if (line1[i] == '\n')
{
e1 = i - 1;
break;
}
if (flag == 0)
{
line1[i] = '\0';
e1 = i;
break;
}
printf("\nEnter %d symbol- ", i+1);
line1[i] = getchar();
printf("\nContinue? (1-Yes, 0-No) - ");
cin >> flag;
getchar();
}
char* p;
char* line11 = (char*)malloc(sizeof(char)*41);
strcpy(line11, "");
for (int leng = 1; leng < e1; leng++)//сортировка по возрастанию
{
strcpy(buf, line1);
p = strtok(buf, " .,;-");
while (p != NULL)
{
if (strlen(p) == leng)
{
strcat(line11, p);
strcat(line11, " ");
n1++;
}
p = strtok(NULL, " .,;-");
}
}
flag = 1;
printf("\nEnter second line:");//вторая строка
for (int i = 0; i < 40; i++)
{
if (line2[i] == '\n')
{
e2 = i - 1;
break;
}
if (flag == 0)
{
line2[i] = '\0';
e2 = i;
break;
}
printf("\nEnter %d symbol- ", i + 1);
line2[i] = getchar();
printf("\nContinue? (1-Yes, 0-No) - ");
cin >> flag;
getchar();
}
char* line22 = (char*)malloc(sizeof(char)* 41);
strcpy (line22, "");
for (int leng = e2; leng > 0; leng--)//сортировка по убыванию
{
strcpy(buf, line2);
p = strtok(buf, " .,;-");
while (p != NULL)
{
if (strlen(p) == leng)
{
strcat(line22, p);
strcat(line22, " ");
n2++;
}
p = strtok(NULL, " .,;-");
}
}
char* p2;
char* result = (char*)malloc(sizeof(char)* 81);
strcpy(result, "");
strcpy(buf, line11);
strcpy(buf2, line22);
p = strtok(buf, " .,;-");
p2 = strtok(buf2, " ,.;-");
while (n1 > 0 || n2 > 0)// построение результирующей строки
{
while (p != NULL && p2 != NULL)
{
strcat(result, p);
strcat(result, " ");
p = strtok(NULL, " .,;-");
n1--;
strcat(result, p2);
strcat(result, " ");
p2 = strtok(NULL, " ,.;-");
n2--;
}
if (n1 < 1)
{
strcpy(buf, line11);
p = strtok(buf, " .,;-");
}
if (n2 < 1)
{
strcpy(buf2, line22);
p2 = strtok(buf2, " ,.;-");
}
}
printf("\nEntered first line: %s", line1);
printf("\nSorted first line: %s\n", line11);
printf("\nEnterd second line: %s", line2);
printf("\nSorted second line: %s\n", line22);
printf("\nResult line: %s\n",result);
system("PAUSE");
return 0;
}
Ошибка заключается в том, что при формировании результирующей строки, p= strtok (NULL, " .,;-") и p2=strtok(NULL, " .,;-") работают некорректно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 13:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка строк по возрастанию и убыванию длин слов (C++):

Сортировка слов в строке по возрастанию их длин - C++
Всем привет. Вобщем такое дело. Программа сортирует слова по убыванию длины в слове. Как сделать обратный эффект?(т.е. сортировка слов по...

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

Упорядочить слова в предложении по возрастанию длин слов - C++
Добрый вечер. Есть код на С++, необходимо реализовать дополнительное задание - пусть строка представляет предложение, в конце которого...

Отсортировать N-ую строку файла fin.txt по возрастанию длин слов в строке и записать ее в fout.txt - C++
не могу понять c++ , поможет кто разобраться? на паскале всё получается, а сейчас решил C++ изучить Вот задачка: В текстовом файле...

Быстрая сортировка. Сложности с сортировкой по возрастанию и убыванию - C++
Сложность в то, что не корректно работает быстрая сортировка по возрастанию и убыванию. В консоли приходится несколько раз выбирать способ...

Целочисленный одномерный массив, сортировка по убыванию и возрастанию - C++
Написать программу, позволяющую сортировать введенный пользовате-лем целочисленный одномерный массив по убыванию или по возраста-нию (в...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2014, 13:29
Привет! Вот еще темы с ответами:

Сортировка массива по возрастанию или по убыванию, в зависимости от параметра - C++
Дан массив чисел размерностью 10 элементов. Написать программу, которая сортирует массив по возрастанию или по убыванию, в зависимости от...

Сортировка первой половины массива по возрастанию, а второй по убыванию - C++
Здравствуйте, помогите пожалуйста. Дан массив А, состоящий из 20 целых чисел. Отсортируйте первую половину массива по возрастанию, а...

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

Сортировка четных столбцов матрицы по убыванию элементов, а нечетных - по возрастанию - C++
Дана матрица, размерностью nxn, содержащая целые числа. Отсортировать каждый столбец матрицы с номером 2i по убыванию элементов, а с...


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

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

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