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

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

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

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

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

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