В общем здача такая: в произвольно тексте, содержащем не более 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)
{
вот.. а удалить среднюю букву в слове, состоящем из неченого кол-ва букв, у меня не получается…. помогите пожалуйста!!!!
3 марта 2010 в 1:01
Я писал как меня учили с первых курсов и нам вдалбливали что типа стринг как в паскале не существует и что работа ведется как с массивами и указателями. Причем на лекциях долбили на практике долбили в книгах читал на практике мучался вот мнение и сложилось.
3 марта 2010 в 1:00
По условиям совместной разработки был посажен на кодевижуал а на аврстудии осваивал камни. До иар руки не дошли и нужды большой небыло хотя она вроде и дает самый быстрый код на скока мне известно. Но при работе в команде нужно писать на том что выбирает начальство и колеги тем паче если над проектом группа работает.
3 марта 2010 в 1:00
Да и реально эту тему обсуждать надоело. Онаж не массив или стринг называется. Лучшеб у кого время есть девушке код накидали и кинули. Сам не раньше конца недели соберусь. И пусть каждый делает как ему проще и привычнее.
2 марта 2010 в 22:04
все пакеты iar embedded workbench которые компилят C++ (в том числе и под avr) поддерживают string
2 марта 2010 в 22:00
Никакой магии нет. Контролер это тот же процессор только работа в основнос на порты ориентированна а то что в консольной сихе выводиться на консоль там в порт RS232 а компилятор для этого использует стандартные процедуры ввода/вывода только оптимизация у их компиляторов гораздо более сильная так как там оперативки не сотни и тысячи метров а от 256до 4096 в 8-и разрядных и там с каждым тактом проца считаться пиходиться.
2 марта 2010 в 22:00
Лан. Может реально прекратим дискуссию, а то далеко от темы топика ушли. Я прришёл к выводу что тут работают какие то двойные стандарты что далеко не радует. Но мне часто приходиться код переносить с одной платформы на другую поэтому такое мнение и устаялось.
2 марта 2010 в 22:00
Тебе спасибо за новую инфу, а моя позиция в этом деле не поменялась. Но как говориться век живи век учись.
2 марта 2010 в 21:04
Если подходить с точки зрения ООП то любой тип являеться примитывным классом имеющим свои меьтоды но это уже игра терминалогии. А компиляторы AVRStudio, CodeVisual и для пиков это очень серьёзные профессиональные среды которые раз в полгода обновляються.
2 марта 2010 в 21:04
И они заявляют полное соблюдение стандарта
2 марта 2010 в 21:04
И вот чтобы путаницы при переносе кода на другие платформы небыло и придерживаюсь такой позиции. Кстати за конструкцию std::string s; спасибо. На самом деле не знал да и нужды большой небыло.
2 марта 2010 в 21:04
заявлять можно что угодно, если я открываю страуструпа, ansi iso , а компилятор не понимает что-то, что дано в этих книгах, то компилятор можно смело отправлять на помойку.
а программирование микроконтроллеров это вообще отдельная, объятая магией тема
2 марта 2010 в 21:03
string.h устаревшй вариант,сейчас вроде как без .h все.
в вашем случае нужно учитывать пространство имен.
#include<string>
int main()
{
std::string s;
return 0;
}
если не скомпилит, тогда не знаю уже….
2 марта 2010 в 21:03
Только из за этого и не рекомендую этим типом пользоваться так как не все платформы его знают. Яж не отрицаю что он есть и его использують но заявлять что он есть во ВСЕХ компиляторах С и С++ не стоит так как это далеко от истинны. А вот методы с массивами и указателями пашуа АБСОЛЮТНО везде поэтому и переносимость кода с ними лучше пусть и в ущерб простоте и наглядности. Я на делфях сам только через его делаю. Да и как аргумент все апи функции именно с укзателями работают.
2 марта 2010 в 21:03
Да и спор этот глупый по моему.
2 марта 2010 в 21:03
string не тип , а класс.этот класс описан в стандарте и поддерживается _всеми_ компиляторами. если компилятор его не понимает, то это либо не компилятор С++, либо реализация какого-то студента в качестве диплома\курсовой.
2 марта 2010 в 21:03
Я по привычке h ставлю так как на разных платформах работаю и некоторые её требуют обязательно.
Конструкция std::string s; откомпилилась но моё мнение по поводу этого типа относительно С++ не поменялосьтак как компилятор для AVR и PIC её не принял.
2 марта 2010 в 21:02
мб #include <string> ?
2 марта 2010 в 21:02
И что вы на это скажете //physlab.pomorsu.ru//FreeResources/Image/2.JPG
2 марта 2010 в 21:02
не подключен заголовочный файл вероятно…
2 марта 2010 в 21:02
Вот вам тело инклуда strings а выше для string приводил
#if !defined(_STRINGS_H_)
# define _STRINGS_H_ 1
# include <string.h>
#endif
2 марта 2010 в 21:02
Как видно он string.h подхватывает
2 марта 2010 в 21:02
//physlab.pomorsu.ru//FreeResources/Image/2.JPG
2 марта 2010 в 21:02
Чего тут ему не хватает?
2 марта 2010 в 21:02
И из опыта программмирования под микроконтролеры (AVR и PIC) из С++ компиляторы string тоже не знают.
2 марта 2010 в 21:01
Пардон //physlab.pomorsu.ru//FreeResources/Image/1.JPG у меня g++ как рази выставлен. Так что во всех вышележащих постах вместо gcc надо g++ читать. Зарапортовался немного так как дни напряжённые и на работе завал.
2 марта 2010 в 21:01
А GNU объединяет в себе C и C++ компиляторы. Лан спор развивать не охота. Кому удобнее нусть юзает стринг кому нет пусть массивы и указатели а я останусь пока при своём мнении.
2 марта 2010 в 21:01
странно однако. я же кидал ссыль на стандарт, вот еще одна если пдф лень тянуть… //www.cplusplus.com/reference/string/string/
2 марта 2010 в 20:04
//imglink.ru/pictures/02-03-10/a1bcf16d11bf5f38...
2 марта 2010 в 20:03
gcc- компилятор С, но не С++. используйте g++.
2 марта 2010 в 20:01
Как пример попробовал переменную сего класса обявитьб и вот что мне выдал компилятор при компиляции //physlab.pomorsu.ru/FreeResources/Image/string... компилятор стандартный gcc.
2 марта 2010 в 20:00
Может и прозрею. Меня по крайней мере так учили как говорил и в работе с подтверждением своих же слов сталкивался не однократно. Но жизнь течёт и всё меняется может и тут что поменялось.
2 марта 2010 в 18:03
Алексей Орлов
//openassist.googlecode . com/files/C%2B%2B%20Standard%20-%20ANSI%20ISO%20IEC%2014882%202003.pdf
перечитайте, может прозреете…
2 марта 2010 в 18:01
gcc – компилер языка Си
но и им можно скомпилить, добавив флаг -lstdc++.
2 марта 2010 в 16:00
Проще посчитать кол-во символов в слове и делить на 2, если выходит интежер, то дэлет средний символ. Аналогично и с нечетными, все просто
2 марта 2010 в 15:05
Я думал стандарт описан в Страуструпе, и string там есть… Это часть стандартной библиотеки шаблонов (STL), по крайней мере мне так казалось…
2 марта 2010 в 15:02
Учим матсчасть и читаем спецификацию на gcc а не на конкретную среду разработки.
2 марта 2010 в 15:02
И нне зря во всех нормальных вузовских учебникахпо C++ приучают работать как с массивами или указателями так как они не привязываються к конкретной среде. А по поводу борланда тот ваще особняком так как он наследует многое от любимой мной делфи.
2 марта 2010 в 15:01
Ещё раз повторяю что стандартный 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*);
2 марта 2010 в 15:01
_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
2 марта 2010 в 15:01
#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_ */
2 марта 2010 в 15:01
Как не трудно заметить все методы работавют с указателями и вертают указатели
2 марта 2010 в 13:04
оффтоп:
класс string – часть стандарта. не зря этот класс находится в пространстве имен std.
как доказательство: у меня этот класс работает и на компиляторах MS, Borland, и на MinGW, и на g++.
2 марта 2010 в 13:00
По поводу последнего поста, пардон. Задачу не совсем верно понял. Тот способ пахать не будет так как он удаляет средний символ из строки а не слова. Тока щас задание внимательно прочел. Сори.
2 марта 2010 в 12:05
Определяешь через unsigned l = strlеn число символов в строке если выполняеться условие то крутишь фор по n от l/2-1 до l – 2 с телом str[n] = str[n+1] после отработки тела пишешь str[l-1]=0 чтоб строчку закрыть. По моему это самый простой вариант. А строчки проще всего с файла читать.
2 марта 2010 в 12:03
Сами фигню порете батенька. Он введен как клас только у мелкомягких и в Qt в GNU компиляторе его не существует в природе, а по сему использование его конечно упрощает жизнь в разы но привязывает код к определенным средам. Я сам на wхDеvC++ недавно крупный проект ваял в котором все построенно на работе с текстом и из за сего факта пришлось с бубном шаманить. А автор не указал какой компилятор юзает поэтому и написал что робит во всех. А в чистом C++ работа со строками в основном ведеться через указатели chаr* str или через массив chаr str[МАХ_РАTH]. Учим матчасть. Кстати билдер тоже вроде стринг имеют.
2 марта 2010 в 0:03
Алексей Злобин по спецификации С++ String нет в природе а со строками батрачат именно как с массивом. А этот клас присутствует только в VC если вам не известно.
2 марта 2010 в 0:03
Алексею Орлову.
Фигню-с порете, батенька. тип string является стандартным и определен в стандартном пространстве имен std< что Злобин и прописал. И этот тип есть ВО ВСЕХ реализациях С++. А где нет, то – не стандарт.
со string много удобнее работать, чем с массивами char
2 марта 2010 в 0:00
вам, может, и тривиально. а что делать, если длина строки не известна, число строк не известно, а общий объем текста больше пятнадцати гигабайт? )
1 марта 2010 в 22:01
спасибо,
1 марта 2010 в 22:01
берете символ.
если символ – буква, прибавляете ее к текущей_строке_буфера
прибавляете счетчик
если не буква – обнуляете
если счетчик нечетный, после половины длины выбрасываем символ.
все же тривиально)
1 марта 2010 в 22:00
Есть функция isalpha(), она определяет, является ли символ буквой. Если посимвольно проверять строку этой функцией, то когда очередной символ окажется не буквой, – это конец слова. Так можно определить число букв.
А чтобы удалить букву – просто сдвигать байты.
1 марта 2010 в 21:02
да нет, просто делаю по учебнику, а там так показно.
1 марта 2010 в 21:00
std::string религия не позволяет использовать?
1 марта 2010 в 20:05
Массивы выделяйте на 81 байт, иначе строка может не влезть.
Лучше работайте с каждой строкой отдельно – считали, обработали, выдали.
Берете для преобразованной строки отдельный массив. И копируете старую строку в новую. По очереди, слева направо. Разделители переписываете сразу, если слово – считаете длину и переписываете либо полностью, либо с пропуском буквы, если нечетной.
1 марта 2010 в 20:02
не ну это я понимаю, я код не могу составить
1 марта 2010 в 20:02
И ?
1. определите длину слова.
2. нечетн. – ищите среднюю букву.
3. и свигаете.
Написал бы кусок кода. но знаю Java, а не си++
1 марта 2010 в 19:03
Ну найти среднюю букву, и сдвинуть все буквы переписывая (6->5, 7->6).
На сколько я помню строка в с++ это набор символов, кажись так.