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

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

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

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

19.11.2014, 13:29. Просмотров 264. Ответов 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, " .,;-") работают некорректно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 13:29     Сортировка строк по возрастанию и убыванию длин слов
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Сортировка элементов первой половины одномерного массива по убыванию, а второй – по возрастанию - C++
Добрый Вечер!!!Пожалуйста помогите решить задачу на Шаблоны Функций: Разработайте программу, в которой реализована сортировка элементов...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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