singlepost

помогите программу доделать пожалуйста в С++ << На главную или назад  

В общем здача такая: в произвольно тексте, содержащем не более 10 строк , в каждой из которых не более 80 символов, удалить из слова среднюю букву, если слово нечетной длины. Полученный текст напечатать.
вот что у меня пока получилось:

#include<stdio.h>
#include<string.h>
#include<conio.h>
#define YES 1
#define NO 0

void main()
{
const int m=10;
char *string[m],
d;
char raz[]=",.;:? \n";
int n, i, j, beg;
int inword=NO;
i=0;
string[i]=new char[80];
while (gets (string[i]!=NULL)
{
i++;
string[i]=new char[80];
}
int k=i;
printf ("\n");
for (j=0; j<=n; j++)
if (strchr(raz, string[i][j]))
{
if (inword==YES)
{

вот.. а удалить среднюю букву в слове, состоящем из неченого кол-ва букв, у меня не получается…. помогите пожалуйста!!!!

57 ответов в теме “помогите программу доделать пожалуйста в С++”

  1. 57
    Алексей Орлов ответил:

    Я писал как меня учили с первых курсов и нам вдалбливали что типа стринг как в паскале не существует и что работа ведется как с массивами и указателями. Причем на лекциях долбили на практике долбили в книгах читал на практике мучался вот мнение и сложилось.

  2. 56
    Алексей Орлов ответил:

    По условиям совместной разработки был посажен на кодевижуал а на аврстудии осваивал камни. До иар руки не дошли и нужды большой небыло хотя она вроде и дает самый быстрый код на скока мне известно. Но при работе в команде нужно писать на том что выбирает начальство и колеги тем паче если над проектом группа работает.

  3. 55
    Алексей Орлов ответил:

    Да и реально эту тему обсуждать надоело. Онаж не массив или стринг называется. Лучшеб у кого время есть девушке код накидали и кинули. Сам не раньше конца недели соберусь. И пусть каждый делает как ему проще и привычнее.

  4. 54
    zubr kabbi ответил:

    все пакеты iar embedded workbench которые компилят C++ (в том числе и под avr) поддерживают string

  5. 53
    Алексей Орлов ответил:

    Никакой магии нет. Контролер это тот же процессор только работа в основнос на порты ориентированна а то что в консольной сихе выводиться на консоль там в порт RS232 а компилятор для этого использует стандартные процедуры ввода/вывода только оптимизация у их компиляторов гораздо более сильная так как там оперативки не сотни и тысячи метров а от 256до 4096 в 8-и разрядных и там с каждым тактом проца считаться пиходиться.

  6. 52
    Алексей Орлов ответил:

    Лан. Может реально прекратим дискуссию, а то далеко от темы топика ушли. Я прришёл к выводу что тут работают какие то двойные стандарты что далеко не радует. Но мне часто приходиться код переносить с одной платформы на другую поэтому такое мнение и устаялось.

  7. 51
    Алексей Орлов ответил:

    Тебе спасибо за новую инфу, а моя позиция в этом деле не поменялась. Но как говориться век живи век учись.

  8. 50
    Алексей Орлов ответил:

    Если подходить с точки зрения ООП то любой тип являеться примитывным классом имеющим свои меьтоды но это уже игра терминалогии. А компиляторы AVRStudio, CodeVisual и для пиков это очень серьёзные профессиональные среды которые раз в полгода обновляються.

  9. 49
    Алексей Орлов ответил:

    И они заявляют полное соблюдение стандарта

  10. 48
    Алексей Орлов ответил:

    И вот чтобы путаницы при переносе кода на другие платформы небыло и придерживаюсь такой позиции. Кстати за конструкцию std::string s; спасибо. На самом деле не знал да и нужды большой небыло.

  11. 47
    Сергей лучков ответил:

    заявлять можно что угодно, если я открываю страуструпа, ansi iso , а компилятор не понимает что-то, что дано в этих книгах, то компилятор можно смело отправлять на помойку.
    а программирование микроконтроллеров это вообще отдельная, объятая магией тема

  12. 46
    Сергей лучков ответил:

    string.h устаревшй вариант,сейчас вроде как без .h все.
    в вашем случае нужно учитывать пространство имен.
    #include<string>
    int main()
    {
    std::string s;
    return 0;
    }
    если не скомпилит, тогда не знаю уже….

  13. 45
    Алексей Орлов ответил:

    Только из за этого и не рекомендую этим типом пользоваться так как не все платформы его знают. Яж не отрицаю что он есть и его использують но заявлять что он есть во ВСЕХ компиляторах С и С++ не стоит так как это далеко от истинны. А вот методы с массивами и указателями пашуа АБСОЛЮТНО везде поэтому и переносимость кода с ними лучше пусть и в ущерб простоте и наглядности. Я на делфях сам только через его делаю. Да и как аргумент все апи функции именно с укзателями работают.

  14. 44
    Алексей Орлов ответил:

    Да и спор этот глупый по моему.

  15. 43
    Сергей лучков ответил:

    string не тип , а класс.этот класс описан в стандарте и поддерживается _всеми_ компиляторами. если компилятор его не понимает, то это либо не компилятор С++, либо реализация какого-то студента в качестве диплома\курсовой.

  16. 42
    Алексей Орлов ответил:

    Я по привычке h ставлю так как на разных платформах работаю и некоторые её требуют обязательно.
    Конструкция std::string s; откомпилилась но моё мнение по поводу этого типа относительно С++ не поменялосьтак как компилятор для AVR и PIC её не принял.

  17. 41
    Сергей лучков ответил:

    мб #include <string> ?

  18. 40
    Алексей Орлов ответил:

    И что вы на это скажете //physlab.pomorsu.ru//FreeResources/Image/2.JPG

  19. 39
    Сергей лучков ответил:

    не подключен заголовочный файл вероятно…

  20. 38
    Алексей Орлов ответил:

    Вот вам тело инклуда strings а выше для string приводил

    #if !defined(_STRINGS_H_)
    # define _STRINGS_H_ 1
    # include <string.h>
    #endif

  21. 37
    Алексей Орлов ответил:

    Как видно он string.h подхватывает

  22. 36
    Алексей Орлов ответил:

    //physlab.pomorsu.ru//FreeResources/Image/2.JPG

  23. 35
    Алексей Орлов ответил:

    Чего тут ему не хватает?

  24. 34
    Алексей Орлов ответил:

    И из опыта программмирования под микроконтролеры (AVR и PIC) из С++ компиляторы string тоже не знают.

  25. 33
    Алексей Орлов ответил:

    Пардон //physlab.pomorsu.ru//FreeResources/Image/1.JPG у меня g++ как рази выставлен. Так что во всех вышележащих постах вместо gcc надо g++ читать. Зарапортовался немного так как дни напряжённые и на работе завал.

  26. 32
    Алексей Орлов ответил:

    А GNU объединяет в себе C и C++ компиляторы. Лан спор развивать не охота. Кому удобнее нусть юзает стринг кому нет пусть массивы и указатели а я останусь пока при своём мнении.

  27. 31
    Сергей лучков ответил:

    странно однако. я же кидал ссыль на стандарт, вот еще одна если пдф лень тянуть… //www.cplusplus.com/reference/string/string/

  28. 30
    Сергей лучков ответил:

    //imglink.ru/pictures/02-03-10/a1bcf16d11bf5f38...

  29. 29
    Сергей лучков ответил:

    gcc- компилятор С, но не С++. используйте g++.

  30. 28
    Алексей Орлов ответил:

    Как пример попробовал переменную сего класса обявитьб и вот что мне выдал компилятор при компиляции //physlab.pomorsu.ru/FreeResources/Image/string... компилятор стандартный gcc.

  31. 27
    Алексей Орлов ответил:

    Может и прозрею. Меня по крайней мере так учили как говорил и в работе с подтверждением своих же слов сталкивался не однократно. Но жизнь течёт и всё меняется может и тут что поменялось.

  32. 26
    Сергей лучков ответил:

    Алексей Орлов
    //openassist.googlecode . com/files/C%2B%2B%20Standard%20-%20ANSI%20ISO%20IEC%2014882%202003.pdf

    перечитайте, может прозреете…

  33. 25
    Максим Рыбаков ответил:

    gcc – компилер языка Си
    но и им можно скомпилить, добавив флаг -lstdc++.

  34. 24
    Колян Никитин ответил:

    Проще посчитать кол-во символов в слове и делить на 2, если выходит интежер, то дэлет средний символ. Аналогично и с нечетными, все просто

  35. 23
    zubr kabbi ответил:

    Я думал стандарт описан в Страуструпе, и string там есть… Это часть стандартной библиотеки шаблонов (STL), по крайней мере мне так казалось…

  36. 22
    Алексей Орлов ответил:

    Учим матсчасть и читаем спецификацию на gcc а не на конкретную среду разработки.

  37. 21
    Алексей Орлов ответил:

    И нне зря во всех нормальных вузовских учебникахпо C++ приучают работать как с массивами или указателями так как они не привязываються к конкретной среде. А по поводу борланда тот ваще особняком так как он наследует многое от любимой мной делфи.

  38. 20
    Алексей Орлов ответил:

    Ещё раз повторяю что стандартный CNU (gcc) компилятор такого типа не знает и всё что базируеться на ём String не порймёт (в том числе и компиляторы для линукса и микроконтролеров)даже если посмотреть на методы определённые к инклуде String.h там всё через указатели так как это стандарт а в перечисленных выше средах и компиляторрах тип стринг есть их надстройка и при переносе кода на стандартный gcc без дополнение сторонним инклудом где этот тип описанн пахать не будет. Проверенно многкратно. Сам на на борланде, Qt, C#, VC и GNU пишу. Есть такая тенденция что многие разработчики компиляторов и сред вводят этот кмасс но он не определён стандртом.

    Как пример вот тело инклуда Strings.h определённог стандартом:

    #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_NOTHROWmemcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE;
    _CRTIMP void* __cdecl __MINGW_NOTHROWmemcpy (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*);

  39. 19
    Алексей Орлов ответил:

    _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__ >= 0×0700.*/
    _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 (co

  40. 18
    Алексей Орлов ответил:

    #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__ >= 0×0700
    _CRTIMPwchar_t* __cdecl __MINGW_NOTHROW _wcserror(int);
    _CRTIMPwchar_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
    }
    #endif

    #endif /* Not RC_INVOKED */

    #endif /* Not _STRING_H_ */

  41. 17
    Алексей Орлов ответил:

    Как не трудно заметить все методы работавют с указателями и вертают указатели

  42. 16
    Максим Рыбаков ответил:

    оффтоп:
    класс string – часть стандарта. не зря этот класс находится в пространстве имен std.
    как доказательство: у меня этот класс работает и на компиляторах MS, Borland, и на MinGW, и на g++.

  43. 15
    Алексей Орлов ответил:

    По поводу последнего поста, пардон. Задачу не совсем верно понял. Тот способ пахать не будет так как он удаляет средний символ из строки а не слова. Тока щас задание внимательно прочел. Сори.

  44. 14
    Алексей Орлов ответил:

    Определяешь через unsigned l = strlеn число символов в строке если выполняеться условие то крутишь фор по n от l/2-1 до l – 2 с телом str[n] = str[n+1] после отработки тела пишешь str[l-1]=0 чтоб строчку закрыть. По моему это самый простой вариант. А строчки проще всего с файла читать.

  45. 13
    Алексей Орлов ответил:

    Сами фигню порете батенька. Он введен как клас только у мелкомягких и в Qt в GNU компиляторе его не существует в природе, а по сему использование его конечно упрощает жизнь в разы но привязывает код к определенным средам. Я сам на wхDеvC++ недавно крупный проект ваял в котором все построенно на работе с текстом и из за сего факта пришлось с бубном шаманить. А автор не указал какой компилятор юзает поэтому и написал что робит во всех. А в чистом C++ работа со строками в основном ведеться через указатели chаr* str или через массив chаr str[МАХ_РАTH]. Учим матчасть. Кстати билдер тоже вроде стринг имеют.

  46. 12
    Алексей Орлов ответил:

    Алексей Злобин по спецификации С++ String нет в природе а со строками батрачат именно как с массивом. А этот клас присутствует только в VC если вам не известно.

  47. 11
    Валерий Лаптев ответил:

    Алексею Орлову.
    Фигню-с порете, батенька. тип string является стандартным и определен в стандартном пространстве имен std< что Злобин и прописал. И этот тип есть ВО ВСЕХ реализациях С++. А где нет, то – не стандарт.
    со string много удобнее работать, чем с массивами char

  48. 10
    Леонид Максимов ответил:

    вам, может, и тривиально. а что делать, если длина строки не известна, число строк не известно, а общий объем текста больше пятнадцати гигабайт? :) )

  49. 9
    Дарья Корчикова ответил:

    спасибо,

  50. 8
    Александр Лищенер ответил:

    берете символ.
    если символ – буква, прибавляете ее к текущей_строке_буфера
    прибавляете счетчик
    если не буква – обнуляете
    если счетчик нечетный, после половины длины выбрасываем символ.

    все же тривиально)

  51. 7
    Анна Бакшевникова ответил:

    Есть функция isalpha(), она определяет, является ли символ буквой. Если посимвольно проверять строку этой функцией, то когда очередной символ окажется не буквой, – это конец слова. Так можно определить число букв.
    А чтобы удалить букву – просто сдвигать байты.

  52. 6
    Дарья Корчикова ответил:

    да нет, просто делаю по учебнику, а там так показно.

  53. 5
    Алексей Злобин ответил:

    std::string религия не позволяет использовать?

  54. 4
    Денис Лисов ответил:

    Массивы выделяйте на 81 байт, иначе строка может не влезть.
    Лучше работайте с каждой строкой отдельно – считали, обработали, выдали.
    Берете для преобразованной строки отдельный массив. И копируете старую строку в новую. По очереди, слева направо. Разделители переписываете сразу, если слово – считаете длину и переписываете либо полностью, либо с пропуском буквы, если нечетной.

  55. 3
    Дарья Корчикова ответил:

    не ну это я понимаю, я код не могу составить

  56. 2
    Константин Конашенков ответил:

    И ?
    1. определите длину слова.
    2. нечетн. – ищите среднюю букву.
    3. и свигаете.

    Написал бы кусок кода. но знаю Java, а не си++

  57. 1
    Константин Конашенков ответил:

    Ну найти среднюю букву, и сдвинуть все буквы переписывая (6->5, 7->6).
    На сколько я помню строка в с++ это набор символов, кажись так.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.