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

задачка на сортировку - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Taiger
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 41
06.06.2012, 12:24     задачка на сортировку #1
есть файл input.txt.

\фио \возраст \табелный
иванов 30 30
петров 20 45
сидоров 20 10
перепупкин 25 15
нужно чтобы
отсортировтаь список работающих по убыванию возраста, для одинакового возраста отсортировать по возрастанию табельного номера.
С приминением процедур и функций
Решение в out.txt
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 12:24     задачка на сортировку
Посмотрите здесь:

C++ сортировку массива
Объясните сортировку C++
C++ Выполнить сортировку
Задачка на сортировку массива C++
Задача на сортировку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.06.2012, 17:08     задачка на сортировку #21
вложить много? Тогда на посту. codesite@yandex.ru.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Taiger
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 41
06.06.2012, 17:18  [ТС]     задачка на сортировку #22
улетело
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.06.2012, 17:22     задачка на сортировку #23
давай и include "strings.h"
Taiger
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 41
06.06.2012, 17:27  [ТС]     задачка на сортировку #24
там
#if !definded(_STRINGS_H_)
# define _STRINGS_H_ 1
# include <string.h>
#endif
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.06.2012, 17:28     задачка на сортировку #25
ищи в проекте string s, правой кнопкой по string, find declaration. Идай весть файл, на какой передёт.
Taiger
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 41
06.06.2012, 20:27  [ТС]     задачка на сортировку #26
и еше есть стринг
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
#ifndef _SSP_STRING_H
#define _SSP_STRING_H 1
 
#include <ssp.h>
#include_next <string.h>
 
#if __SSP_FORTIFY_LEVEL > 0
 
#undef memcpy
#undef memmove
#undef memset
#undef strcat
#undef strcpy
#undef strncat
#undef strncpy
#undef mempcpy
#undef stpcpy
#undef bcopy
#undef bzero
 
#define memcpy(dest, src, len) \
  ((__ssp_bos0 (dest) != (size_t) -1)                   \
   ? __builtin___memcpy_chk (dest, src, len, __ssp_bos0 (dest))     \
   : __memcpy_ichk (dest, src, len))
static inline __attribute__((__always_inline__)) void *
__memcpy_ichk (void *__restrict__ __dest, const void *__restrict__ __src,
           size_t __len)
{
  return __builtin___memcpy_chk (__dest, __src, __len, __ssp_bos0 (__dest));
}
 
 
#define memmove(dest, src, len) \
  ((__ssp_bos0 (dest) != (size_t) -1)                   \
   ? __builtin___memmove_chk (dest, src, len, __ssp_bos0 (dest))        \
   : __memmove_ichk (dest, src, len))
static inline __attribute__((__always_inline__)) void *
__memmove_ichk (void *__dest, const void *__src, size_t __len)
{
  return __builtin___memmove_chk (__dest, __src, __len, __ssp_bos0 (__dest));
}
 
 
#define mempcpy(dest, src, len) \
  ((__ssp_bos0 (dest) != (size_t) -1)                   \
   ? __builtin___mempcpy_chk (dest, src, len, __ssp_bos0 (dest))    \
   : __mempcpy_ichk (dest, src, len))
static inline __attribute__((__always_inline__)) void *
__mempcpy_ichk (void *__restrict__ __dest, const void *__restrict__ __src,
        size_t __len)
{
  return __builtin___mempcpy_chk (__dest, __src, __len, __ssp_bos0 (__dest));
}
 
 
#define memset(dest, ch, len) \
  ((__ssp_bos0 (dest) != (size_t) -1)                   \
   ? __builtin___memset_chk (dest, ch, len, __ssp_bos0 (dest))      \
   : __memset_ichk (dest, ch, len))
static inline __attribute__((__always_inline__)) void *
__memset_ichk (void *__dest, int __ch, size_t __len)
{
  return __builtin___memset_chk (__dest, __ch, __len, __ssp_bos0 (__dest));
}
 
#define bcopy(src, dest, len) ((void) \
 ((__ssp_bos0 (dest) != (size_t) -1)                    \
   ? __builtin___memmove_chk (dest, src, len, __ssp_bos0 (dest))    \
   : __memmove_ichk (dest, src, len)))
#define bzero(dest, len) ((void) \
  ((__ssp_bos0 (dest) != (size_t) -1)                   \
   ? __builtin___memset_chk (dest, '\0', len, __ssp_bos0 (dest))    \
   : __memset_ichk (dest, '\0', len)))
 
 
#define strcpy(dest, src) \
  ((__ssp_bos (dest) != (size_t) -1)                    \
   ? __builtin___strcpy_chk (dest, src, __ssp_bos (dest))       \
   : __strcpy_ichk (dest, src))
static inline __attribute__((__always_inline__)) char *
__strcpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src)
{
  return __builtin___strcpy_chk (__dest, __src, __ssp_bos (__dest));
}
 
 
#define stpcpy(dest, src) \
  ((__ssp_bos (dest) != (size_t) -1)                    \
   ? __builtin___stpcpy_chk (dest, src, __ssp_bos (dest))       \
   : __stpcpy_ichk (dest, src))
static inline __attribute__((__always_inline__)) char *
__stpcpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src)
{
  return __builtin___stpcpy_chk (__dest, __src, __ssp_bos (__dest));
}
 
 
#define strncpy(dest, src, len) \
  ((__ssp_bos (dest) != (size_t) -1)                    \
   ? __builtin___strncpy_chk (dest, src, len, __ssp_bos (dest))     \
   : __strncpy_ichk (dest, src, len))
static inline __attribute__((__always_inline__)) char *
__strncpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src,
        size_t __len)
{
  return __builtin___strncpy_chk (__dest, __src, __len, __ssp_bos (__dest));
}
 
 
#define strcat(dest, src) \
  ((__ssp_bos (dest) != (size_t) -1)                    \
   ? __builtin___strcat_chk (dest, src, __ssp_bos (dest))       \
   : __strcat_ichk (dest, src))
static inline __attribute__((__always_inline__)) char *
__strcat_ichk (char *__restrict__ __dest, const char *__restrict__ __src)
{
  return __builtin___strcat_chk (__dest, __src, __ssp_bos (__dest));
}
 
 
#define strncat(dest, src, len) \
  ((__ssp_bos (dest) != (size_t) -1)                    \
   ? __builtin___strncat_chk (dest, src, len, __ssp_bos (dest))     \
   : __strncat_ichk (dest, src, len))
static inline __attribute__((__always_inline__)) char *
__strncat_ichk (char *__restrict__ __dest, const char *__restrict__ __src,
        size_t __len)
{
  return __builtin___strncat_chk (__dest, __src, __len, __ssp_bos (__dest));
}
 
#endif /* __SSP_FORTIFY_LEVEL > 0 */
#endif /* _SSP_STRING_H */
 
[size="1"][color="grey"][I]Добавлено через 8 минут[/I][/color][/size]
#ifndef _STRING_H_
#define _STRING_H_
 
/* All the headers include this file. */
#include <_mingw.h>
 
/*
 * Define size_t, wchar_t and NULL
 */
#define __need_size_t
#define __need_wchar_t
#define __need_NULL
#ifndef RC_INVOKED
#include <stddef.h>
#endif  /* Not RC_INVOKED */
 
#ifndef RC_INVOKED
 
#ifdef __cplusplus
extern "C" {
#endif
 
/*
 * Prototypes of the ANSI Standard C library string functions.
 */
_CRTIMP void* __cdecl __MINGW_NOTHROW   memchr (const void*, int, size_t) __MINGW_ATTRIB_PURE;
_CRTIMP int __cdecl __MINGW_NOTHROW     memcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE;
_CRTIMP void* __cdecl __MINGW_NOTHROW   memcpy (void*, const void*, size_t);
_CRTIMP void* __cdecl __MINGW_NOTHROW   memmove (void*, const void*, size_t);
_CRTIMP void* __cdecl __MINGW_NOTHROW   memset (void*, int, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strcat (char*, const char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strchr (const char*, int)  __MINGW_ATTRIB_PURE;
_CRTIMP int __cdecl __MINGW_NOTHROW strcmp (const char*, const char*)  __MINGW_ATTRIB_PURE;
_CRTIMP int __cdecl __MINGW_NOTHROW strcoll (const char*, const char*); /* Compare using locale */
_CRTIMP char* __cdecl __MINGW_NOTHROW   strcpy (char*, const char*);
_CRTIMP size_t __cdecl __MINGW_NOTHROW  strcspn (const char*, const char*)  __MINGW_ATTRIB_PURE;
_CRTIMP char* __cdecl __MINGW_NOTHROW   strerror (int); /* NOTE: NOT an old name wrapper. */
 
_CRTIMP size_t __cdecl __MINGW_NOTHROW  strlen (const char*)  __MINGW_ATTRIB_PURE;
_CRTIMP char* __cdecl __MINGW_NOTHROW   strncat (char*, const char*, size_t);
_CRTIMP int __cdecl __MINGW_NOTHROW strncmp (const char*, const char*, size_t)  __MINGW_ATTRIB_PURE;
_CRTIMP char* __cdecl __MINGW_NOTHROW   strncpy (char*, const char*, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strpbrk (const char*, const char*)  __MINGW_ATTRIB_PURE;
_CRTIMP char* __cdecl __MINGW_NOTHROW   strrchr (const char*, int)  __MINGW_ATTRIB_PURE;
_CRTIMP size_t __cdecl __MINGW_NOTHROW  strspn (const char*, const char*)  __MINGW_ATTRIB_PURE;
_CRTIMP char* __cdecl __MINGW_NOTHROW   strstr (const char*, const char*)  __MINGW_ATTRIB_PURE;
_CRTIMP char* __cdecl __MINGW_NOTHROW   strtok (char*, const char*);
_CRTIMP size_t __cdecl __MINGW_NOTHROW  strxfrm (char*, const char*, size_t);
 
#ifndef __STRICT_ANSI__
/*
 * Extra non-ANSI functions provided by the CRTDLL library
 */
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strerror (const char *);
_CRTIMP void* __cdecl __MINGW_NOTHROW   _memccpy (void*, const void*, int, size_t);
_CRTIMP int __cdecl __MINGW_NOTHROW     _memicmp (const void*, const void*, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strdup (const char*) __MINGW_ATTRIB_MALLOC;
_CRTIMP int __cdecl __MINGW_NOTHROW _strcmpi (const char*, const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW _stricmp (const char*, const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW _stricoll (const char*, const char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strlwr (char*);
_CRTIMP int __cdecl __MINGW_NOTHROW _strnicmp (const char*, const char*, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strnset (char*, int, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strrev (char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strset (char*, int);
_CRTIMP char* __cdecl __MINGW_NOTHROW   _strupr (char*);
_CRTIMP void __cdecl __MINGW_NOTHROW    _swab (const char*, char*, size_t);
 
#ifdef __MSVCRT__
_CRTIMP int __cdecl __MINGW_NOTHROW  _strncoll(const char*, const char*, size_t);
_CRTIMP int __cdecl __MINGW_NOTHROW  _strnicoll(const char*, const char*, size_t);
#endif
 
#ifndef _NO_OLDNAMES
/*
 * Non-underscored versions of non-ANSI functions. They live in liboldnames.a
 * and provide a little extra portability. Also a few extra UNIX-isms like
 * strcasecmp.
 */
_CRTIMP void* __cdecl __MINGW_NOTHROW   memccpy (void*, const void*, int, size_t);
_CRTIMP int __cdecl __MINGW_NOTHROW memicmp (const void*, const void*, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strdup (const char*) __MINGW_ATTRIB_MALLOC;
_CRTIMP int __cdecl __MINGW_NOTHROW strcmpi (const char*, const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW stricmp (const char*, const char*);
int __cdecl __MINGW_NOTHROW strcasecmp (const char*, const char *);
#ifndef __NO_INLINE__
__CRT_INLINE int __cdecl __MINGW_NOTHROW
strcasecmp (const char * __sz1, const char * __sz2)
  {return _stricmp (__sz1, __sz2);}
#endif
_CRTIMP int __cdecl __MINGW_NOTHROW stricoll (const char*, const char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strlwr (char*);
_CRTIMP int __cdecl __MINGW_NOTHROW strnicmp (const char*, const char*, size_t);
int  __cdecl __MINGW_NOTHROW strncasecmp (const char *, const char *, size_t);
#ifndef __NO_INLINE__
__CRT_INLINE int __cdecl __MINGW_NOTHROW
strncasecmp (const char * __sz1, const char * __sz2, size_t __sizeMaxCompare)
  {return _strnicmp (__sz1, __sz2, __sizeMaxCompare);}
#endif
_CRTIMP char* __cdecl __MINGW_NOTHROW   strnset (char*, int, size_t);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strrev (char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strset (char*, int);
_CRTIMP char* __cdecl __MINGW_NOTHROW   strupr (char*);
#ifndef _UWIN
_CRTIMP void __cdecl __MINGW_NOTHROW    swab (const char*, char*, size_t);
#endif /* _UWIN */
#endif /* _NO_OLDNAMES */
 
#endif  /* Not __STRICT_ANSI__ */
 
#ifndef _WSTRING_DEFINED
/*
 * Unicode versions of the standard calls.
 * Also in wchar.h, where they belong according to ISO standard.
 */
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcscat (wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcschr (const wchar_t*, wchar_t);
_CRTIMP int __cdecl __MINGW_NOTHROW wcscmp (const wchar_t*, const wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW wcscoll (const wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcscpy (wchar_t*, const wchar_t*);
_CRTIMP size_t __cdecl __MINGW_NOTHROW  wcscspn (const wchar_t*, const wchar_t*);
/* Note:  _wcserror requires __MSVCRT_VERSION__ >= 0x0700.  */
_CRTIMP size_t __cdecl __MINGW_NOTHROW  wcslen (const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsncat (wchar_t*, const wchar_t*, size_t);
_CRTIMP int __cdecl __MINGW_NOTHROW wcsncmp(const wchar_t*, const wchar_t*, size_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsncpy(wchar_t*, const wchar_t*, size_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcspbrk(const wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsrchr(const wchar_t*, wchar_t);
_CRTIMP size_t __cdecl __MINGW_NOTHROW  wcsspn(const wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsstr(const wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcstok(wchar_t*, const wchar_t*);
_CRTIMP size_t __cdecl __MINGW_NOTHROW  wcsxfrm(wchar_t*, const wchar_t*, size_t);
 
#ifndef __STRICT_ANSI__
/*
 * Unicode versions of non-ANSI string functions provided by CRTDLL.
 */
 
/* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
#define     _wcscmpi    _wcsicmp
 
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsdup (const wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wcsicmp (const wchar_t*, const wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wcsicoll (const wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcslwr (wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wcsnicmp (const wchar_t*, const wchar_t*, size_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsnset (wchar_t*, wchar_t, size_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsrev (wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsset (wchar_t*, wchar_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsupr (wchar_t*);
 
#ifdef __MSVCRT__
_CRTIMP int __cdecl __MINGW_NOTHROW  _wcsncoll(const wchar_t*, const wchar_t*, size_t);
_CRTIMP int   __cdecl __MINGW_NOTHROW _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
#if __MSVCRT_VERSION__ >= 0x0700
_CRTIMP  wchar_t* __cdecl __MINGW_NOTHROW _wcserror(int);
_CRTIMP  wchar_t* __cdecl __MINGW_NOTHROW __wcserror(const wchar_t*);
#endif
#endif
 
#ifndef _NO_OLDNAMES
/* NOTE: There is no _wcscmpi, but this is for compatibility. */
int __cdecl __MINGW_NOTHROW wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2);
#ifndef __NO_INLINE__
__CRT_INLINE int __cdecl __MINGW_NOTHROW
wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2)
  {return _wcsicmp (__ws1, __ws2);}
#endif
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsdup (const wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW wcsicmp (const wchar_t*, const wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW wcsicoll (const wchar_t*, const wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcslwr (wchar_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW wcsnicmp (const wchar_t*, const wchar_t*, size_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsnset (wchar_t*, wchar_t, size_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsrev (wchar_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsset (wchar_t*, wchar_t);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsupr (wchar_t*);
#endif  /* Not _NO_OLDNAMES */
 
#endif  /* Not strict ANSI */
 
#define _WSTRING_DEFINED
#endif  /* _WSTRING_DEFINED */
 
#ifdef __cplusplus
Добавлено через 40 минут
У вас то она запускается без каприз?

Добавлено через 2 часа 9 минут
оставим до завтра.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.06.2012, 07:10     задачка на сортировку #27
У меня на том компе дисплей сломан, протестить не могу.
Taiger
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 41
07.06.2012, 15:52  [ТС]     задачка на сортировку #28
А на этом запускается?

Добавлено через 45 секунд
К завтра бы добить к вечеру.

Добавлено через 4 часа 45 минут
а не мозет заклбчатся проблемма в русском языке что он не понимает его?
может напистать транслитом?
Taiger
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 41
08.06.2012, 17:13  [ТС]     задачка на сортировку #29
При компиляции на с++ билдер 6
начинает ругатся на struct TPersonsList;
{
[C++ Error] Unit1.cpp(13): E2040 Declaration terminated incorrectly

В какой тогда лутше компилить?
В дев++ ругается на фалик стрин. и утыкается в строчки if (s=="табельный номер\tФИО\tвозраст")
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 12:58     задачка на сортировку #30
std::string вместо string. клава неисправна.

Добавлено через 21 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
struct TPersonsList;
{
*TPerson Data;
*TPerson *next;
};
C++
1
2
3
4
5
struct TPersonsList
{
*TPerson Data;
*TPersonsList *next;
};
Добавлено через 20 минут
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#include <iostream.h>
#include <fstream.h>
#include <string.h>
struct TPerson
{
 string FIO;
 unsigend int age;
 unsigend int namber;
};
 
struct TPersonsList
{
 TPerson Data;
 TPersonsList *next;
};
 
TPersonsList *list=nullptr;
 
bool FormatAnalize(std::string s, int *Positions)
{
 if (s=="ФИО\tвозраст\tтабельный номер")
 {
  Positions[0]=0;
  Positions[1]=1;
  Positions[2]=2;
  return true;
 }
 if (s=="ФИО\tтабельный номер"\tвозраст)
 {
  Positions[0]=0;
  Positions[1]=2;
  Positions[2]=1;
  return true;
 }
 if (s=="возраст\tФИО\tтабельный номер")
 {
  Positions[0]=1;
  Positions[1]=0;
  Positions[2]=2;
  return true;
 }
 if (s=="возраст\tтабельный номер"\tФИО)
 {
  Positions[0]=2;
  Positions[1]=0;
  Positions[2]=1;
  return true;
 }
 if (s=="табельный номер\tФИО\tвозраст")
 {
  Positions[0]=1;
  Positions[1]=2;
  Positions[2]=0;
  return true;
 }
 if (s=="табельный номер\tвозраст\tФИО")
 {
  Positions[0]=2;
  Positions[1]=1;
  Positions[2]=0;
  return true;
 }
 return false;
}
 
void GetSubs(sting s, string *subs)
{
 unsigend int ic, isub, L;
 char c;
 subs[0]="";
 subs[1]="";
 subs[2]="";
 for (L=s.length(), ic=1, isub=0; ic<=L; ++ic)
 {
  c=s[ic];
  if (c=='\t')
  {
   ++isub;
  }
  else
  {
   subs[isub]=subs[isub]+c;
  }
 } 
}
 
unsigend int MyIntToStr(sritn s)
{
 unsigend int r, i, L;
 char c;
 r=0;
 for (i=1, L=s.length(); i<=L; ++i)
 {
  c=s[i];
  r*=10;
  switch (c)
  {
   case '1': r+=1;
   case '2': r+=2;
   case '3': r+=3;
   case '4': r+=4;
   case '5': r+=5;
   case '6': r+=6;
   case '7': r+=7;
   case '8': r+=8;
   case '9': r+=9;
  }
 }
 return r;
}
 
void free(TPersonsList *&list)
{
 TPersonsList *b;
 while (list!=nullptr)
 {
  b=list;
  delete list;
  list=b;
 }
}
 
void load(std::strigng &FileName, TPersonsList *&list)
{
 std::srting buffer;
 std::string subs[3];
 std::ifsteam file;
 int Positions[3];
 list *p;
 file.open(&FileName);
 file>>s;
 if (!FormatAnalize(s, Positions))
 {
  return;
 }
 while (!EOF(file))
 {
  file>>s;
  if (list==nullptr)
  {
   list=new TPersonsList;
   p=list;
  }
  else
  {
   p->next=new TPersonsList;
   p=p->next;
  }
  p->next=nullptr;
  GetSubs(s, subs);
  p->Data.FIO=subs[0];
  p->Data.age=MyIntToStr(subs[1]);
  p->Data.number=MyIntToStr(subs[2]);
 }
 file.close(); 
}
 
void sort(TPersonsList *list)
{
 TPersonsList *i;
 TPersonsList *j;
 TPersonsList *m;
 TPerson t;
 if (list==nullptr)
 {
  return;
 }
 for (i=list; i->next!=nullptr; i=i->next)
 {
  for (j=i->next, m=i; j!=nullptr; j=j->next)
  {
   if ((m->Data->age<j->age)||((m->Data->age==j->age)&&(m->Data->number>j->Data->number)))
   {
    m=j;
   }
  }
  if (m!=i)
  {
   t=*i->Data;
   *i->Data=*m->Data;
   *m->Data=t;
  }
 }
}
 
void save(std::strigng &FileName, TPersonsList *list)
{
 TPersonsList *p;
 std::ofsteam file;
 file->open(FileName);
 file<<"ФИО\tвозраст<<таблеьный номер";
 for (p=list; p!=nullptr; p=p->next)
 {
  file<<"\n\r"<<p->Data.FIO<<'\t'<<p->Data.age<<'\t'<<p-.Data.number;
 }
 file.close();
}
 
int main()
{
 std::string InputFileName;
 std::string OutputFileName;
 do
 {
  std::cin>>InputFileName;
  std::cin>>OutputFileName;
  if ((InputFileName!="")&&(OutputFileName!=""))
  {
   load (InputFileName, list);
   sort(list);
   save(InputFileName, list);
   free(list);
  }
 } while ((InputFileName!="")&&(OutputFileName!=""));
 return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Taiger Посмотреть сообщение
А на этом запускается?
На этом нет компилятора.

Добавлено через 2 минуты
Цитата Сообщение от Taiger Посмотреть сообщение
а не мозет заклбчатся проблемма в русском языке что он не понимает его?
может напистать транслитом?
Тогда и файл должен иметь транслитовый заголовок. Но в стринговых значениях, включая нультерминальные по char *, допускаются абсолютно любые символы. Даже японские иероглифы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2012, 14:47     задачка на сортировку
Еще ссылки по теме:

Задача на сортировку C++
Сортировку вставками меняем на сортировку слиянием C++
Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом C++

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.06.2012, 14:47     задачка на сортировку #31
Это скомпилилось:
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#include <iostream>
#include <fstream>
#include <string.h>
 
struct TPerson
{
 string FIO;
 unsigend int age;
 unsigend int namber;
};
 
struct TPersonsList;
{
 TPerson Data;
 TPerson *next;
};
 
TPersonsList *list=nullptr;
 
bool FormatAnalize(std::string s, int *Positions)
{
 if (s=="ФИО\tвозраст\tтабельный номер")
 {
  Positions[0]=0;
  Positions[1]=1;
  Positions[2]=2;
  return true;
 }
 if (s=="ФИО\tтабельный номер"\tвозраст)
 {
  Positions[0]=0;
  Positions[1]=2;
  Positions[2]=1;
  return true;
 }
 if (s=="возраст\tФИО\tтабельный номер")
 {
  Positions[0]=1;
  Positions[1]=0;
  Positions[2]=2;
  return true;
 }
 if (s=="возраст\tтабельный номер"\tФИО)
 {
  Positions[0]=2;
  Positions[1]=0;
  Positions[2]=1;
  return true;
 }
 if (s=="табельный номер\tФИО\tвозраст")
 {
  Positions[0]=1;
  Positions[1]=2;
  Positions[2]=0;
  return true;
 }
 if (s=="табельный номер\tвозраст\tФИО")
 {
  Positions[0]=2;
  Positions[1]=1;
  Positions[2]=0;
  return true;
 }
 return false;
}
 
void GetSubs(std::sting s, std::string *subs)
{
 unsigend int ic, isub, L;
 char c;
 subs[0]="";
 subs[1]="";
 subs[2]="";
 for (L=s.length(), ic=1, isub=0; ic<=L; ++ic)
 {
  c=s[ic];
  if (c=='\t')
  {
   ++isub;
  }
  else
  {
   subs[isub]=subs[isub]+c;
  }
 }
}
 
unsigend int MyIntToStr(std::sritn s)
{
 unsigend int r, i, L;
 char c;
 r=0;
 for (i=1, L=s.length(); i<=L; ++i)
 {
  c=s[i];
  r*=10;
  switch (c)
  {
   case '1': r+=1;
   case '2': r+=2;
   case '3': r+=3;
   case '4': r+=4;
   case '5': r+=5;
   case '6': r+=6;
   case '7': r+=7;
   case '8': r+=8;
   case '9': r+=9;
  }
 }
 return r;
}
 
void free(TPersonsList *&list)
{
 TPersonsList *b;
 while (list!=nullptr)
 {
  b=list;
  delete list;
  list=b;
 }
}
 
void load(strigng &FileName, TPersonsList *&list)
{
 std::srting buffer;
 std::string subs[3];
 std::ifsteam file;
 int Positions[3];
 list *p;
 file.open(&FileName);
 file>>s;
 if (!FormatAnalize(s, Positions))
 {
  return;
 }
 while (!EOF(file))
 {
  file>>s;
  if (list==nullptr)
  {
   list=new TPersonsList;
   p=list;
  }
  else
  {
   p->next=new TPersonsList;
   p=p->next;
  }
  p->next=nullptr;
  GetSubs(s, subs);
  p->Data.FIO=subs[0];
  p->Data.age=MyIntToStr(subs[1]);
  p->Data.number=MyIntToStr(subs[2]);
 }
 file.close();
}
 
void sort(TPersonsList *list)
{
 TPersonsList *i;
 TPersonsList *j;
 TPersonsList *m;
 TPerson t;
 if (list==nullptr)
 {
  return;
 }
 for (i=list; i->next!=nullptr; i=i->next)
 {
  for (j=i->next, m=i; j!=nullptr; j=j->next)
  {
   if ((m->Data->age<j->age)||((m->Data->age==j->age)&&(m->Data->number>j->Data->number)))
   {
    m=j;
   }
  }
  if (m!=i)
  {
   t=*i->Data;
   *i->Data=*m->Data;
   *m->Data=t;
  }
 }
}
 
void save(strigng &FileName, TPersonsList *list)
{
 TPersonsList *p;
 std::ofsteam file;
 file->open(FileName);
 file<<"ФИО\tвозраст\tтабельный номер";
 for (p=list; p!=nullptr; p=p->next)
 {
  file<<"\n\r"<<p->Data.FIO<<'\t'<<p->Data.age<<'\t'<<p-.Data.number;
 }
 file.close();
}
 
int main()
{
 std::string InputFileName, OutputFileName;
 do
 {
  std::cin>>InputFileName;
  std::cin>>OutputFileName;
  if ((InputFileName!="")&&(OutputFileName!=""))
  {
   load (InputFileName, list);
   sort(list);
   save(InputFileName, list);
   free(list);
  }
 } while ((InputFileName!="")&&(OutputFileName!=""));
 return 0;
}
Добавлено через 16 минут
Нет, кажется не то кинул.

Добавлено через 25 минут
Вот это уже точно компилится.
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#include <iostream>
#include <fstream>
#include <string.h>
 
struct TPerson
{
 std::string FIO;
 unsigned int age;
 unsigned int number;
};
 
struct TPersonsList
{
 TPerson Data;
 TPersonsList *next;
};
 
TPersonsList *list=NULL;
 
bool FormatAnalize(std::string s, int *Positions)
{
 if (s=="ФИО\tвозраст\tтабельный номер")
 {
  Positions[0]=0;
  Positions[1]=1;
  Positions[2]=2;
  return true;
 }
 if (s=="ФИО\tтабельный номер\tвозраст")
 {
  Positions[0]=0;
  Positions[1]=2;
  Positions[2]=1;
  return true;
 }
 if (s=="возраст\tФИО\tтабельный номер")
 {
  Positions[0]=1;
  Positions[1]=0;
  Positions[2]=2;
  return true;
 }
 if (s=="возраст\tтабельный номер\tФИО")
 {
  Positions[0]=2;
  Positions[1]=0;
  Positions[2]=1;
  return true;
 }
 if (s=="табельный номер\tФИО\tвозраст")
 {
  Positions[0]=1;
  Positions[1]=2;
  Positions[2]=0;
  return true;
 }
 if (s=="табельный номер\tвозраст\tФИО")
 {
  Positions[0]=2;
  Positions[1]=1;
  Positions[2]=0;
  return true;
 }
 return false;
}
 
void GetSubs (std::string s, std::string *subs)
{
 unsigned int ic, isub, L;
 char c;
 subs[0]="";
 subs[1]="";
 subs[2]="";
 for (L=s.length(), ic=1, isub=0; ic<=L; ++ic)
 {
  c=s[ic];
  if (c=='\t')
  {
   ++isub;
  }
  else
  {
   subs[isub]=subs[isub]+c;
  }
 }
}
 
unsigned int MyStrToInt(std::string s)
{
 unsigned int r, i, L;
 char c;
 r=0;
 for (i=1, L=s.length(); i<=L; ++i)
 {
  c=s[i];
  r*=10;
  switch (c)
  {
   case '1': r+=1;
   case '2': r+=2;
   case '3': r+=3;
   case '4': r+=4;
   case '5': r+=5;
   case '6': r+=6;
   case '7': r+=7;
   case '8': r+=8;
   case '9': r+=9;
  }
 }
 return r;
}
 
void free(TPersonsList *&list)
{
 TPersonsList *b;
 while (list!=NULL)
 {
  b=list;
  delete list;
  list=b;
 }
}
 
void load(char *FileName, TPersonsList *&list)
{
 std::string buffer;
 std::string subs[3];
 std::ifstream file;
 int Positions[3];
 TPersonsList *p;
 file.open(FileName);
 file>>buffer;
 if (!FormatAnalize(buffer, Positions))
 {
  return;
 }
 while (!file.eof())
 {
  file>>buffer;
  if (list==NULL)
  {
   list=new TPersonsList;
   p=list;
  }
  else
  {
   p->next=new TPersonsList;
   p=p->next;
  }
  p->next=NULL;
  GetSubs(buffer, subs);
  p->Data.FIO=subs[0];
  p->Data.age=MyStrToInt(subs[1]);
  p->Data.number=MyStrToInt(subs[2]);
 }
 file.close();
}
 
void sort(TPersonsList *list)
{
 TPersonsList *i;
 TPersonsList *j;
 TPersonsList *m;
 TPerson t;
 if (list==NULL)
 {
  return;
 }
 for (i=list; i->next!=NULL; i=i->next)
 {
  for (j=i->next, m=i; j!=NULL; j=j->next)
  {
   if ((m->Data.age<j->Data.age)||((m->Data.age==j->Data.age)&&(m->Data.number>j->Data.number)))
   {
    m=j;
   }
  }
  if (m!=i)
  {
   t=i->Data;
   i->Data=m->Data;
   m->Data=t;
  }
 }
}
 
void save(char *FileName, TPersonsList *list)
{
 TPersonsList *p;
 std::ofstream file;
 file.open(FileName);
 file<<"ФИО\tвозраст\tтабельный номер";
 for (p=list; p!=NULL; p=p->next)
 {
  file<<"\n\r"<<p->Data.FIO<<'\t'<<p->Data.age<<'\t'<<p->Data.number;
 }
 file.close();
}
 
char *StringToPChar(std::string s)
{
 char *r;
 char *p;
 unsigned int i;
 unsigned int L;
 L=s.length();
 r=new char [L+1];
 for (i=1, p=r; i<=L; ++p, ++i)
 {
  *p=s[i];
 }
 *p='\0';
 return r;
}
 
int main()
{
 std::string InputFileName;
 std::string OutputFileName;
 char *pInputFileName;
 char *pOutputFileName;
 do
 {
  std::cin>>InputFileName;
  std::cin>>OutputFileName;
  if ((InputFileName!="")&&(OutputFileName!=""))
  {
   pInputFileName=StringToPChar(InputFileName);
   pOutputFileName=StringToPChar(OutputFileName);
   load (pInputFileName, list);
   sort(list);
   save(StringToPChar(InputFileName), list);
   free(list);
   delete [] pInputFileName;
   delete [] pOutputFileName;
 
  }
 } while ((InputFileName!="")&&(OutputFileName!=""));
 return 0;
}
Yandex
Объявления
11.06.2012, 14:47     задачка на сортировку
Ответ Создать тему
Опции темы

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