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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод с десятичного в двоичный числа в прямой и обратный код http://www.cyberforum.ru/cpp-beginners/thread1304919.html
Перевод с десятичного в двоичный числа в прямой и обратный код.
C++ Ищу опытного программиста 3D игр для бесплатных консультаций Ну суть отражена в заголовке.Мне не нужен чей-то фриланс,просто хочу найти умного человека,которому иногда можно будет задавать умные вопросы=) http://www.cyberforum.ru/cpp-beginners/thread1304902.html
Модульное программирование и классы C++ (проблема слияния) C++
Добрый день! Есть задание сделать алгоритм нахождения минимального пути из точек. Задание кое как сделал в мейн.цпп, все работало прекрасно, но преподавателю нужно чтобы я его сделал в виде модулей....
C++ Даны кординаты вершин двоих треугольников. Определить, какой из них имеет большую площадь
Даны кординаты вершин двоих треугольников. Определить, какой из них имеет большую площину.
C++ Хранение данных на внешних носителях http://www.cyberforum.ru/cpp-beginners/thread1304889.html
Постановка задачи 1.Используя ввод-вывод в стиле С создать файл и записать в него структурированные данные. 2.Вывести созданный файл на экран. 3.Удалить из файла данные в соответствии с...
C++ Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии) Проверил работу программы на маленькой картинке(744 байт). Все работает. С несколько бОльшими файлами(512КБ) нет. Суть задачи в том, чтобы считать бинарный файл(например *.exe) в поток, сохранить... подробнее

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

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

19.11.2014, 13:29. Просмотров 269. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru