Консультация № 183620
14.06.2011, 15:09
53.02 руб.
0 7 1
Здравствуйте! У меня возникли сложности с таким вопросом:

1. Написать аналог функции IsDelimiter. Не использовать функцию Pos.
2. (больших или маленьких). Посчитать количество букв a в последнем слове данной последовательности. т.е. как я понимаю две строки Abcdaa aAbcaaefa получается во второй строке 5 букв "а" регистр не важен

желательно на C:

Заранее спасибо!

Обсуждение

давно
Профессор
230118
3054
14.06.2011, 15:23
общий
IsDelimiter из какой библиотеки?
Неизвестный
14.06.2011, 15:26
общий
без разницы ) главное Не использовать функцию Pos
давно
Профессор
230118
3054
14.06.2011, 15:37
общий
Такой, какая описана в
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_IsDelimiter.html
?
Неизвестный
14.06.2011, 15:42
общий
Адресаты:
похоже вот эта
C++
Boolean IsDelimiter(const AnsiString Delimiters, const AnsiString S, int Index);
давно
Профессор
230118
3054
14.06.2011, 18:24
общий
bool IsDelimiter (const char *Delimiters, char *str, int Index)
{
const char *p=Delimiters;
if(Index<1) return false;
char c=str[Index-1];//Index is the index of the byte in question, where 1 is the first byte of the string, 2 is the second byte, and so on.
while(*p++)
{
if(*p==c)
return true;
}
return false;

}
давно
Академик
320937
2216
14.06.2011, 20:23
общий
это ответ
Здравствуйте, Polotenchikko!
Код:
/* Посчитать количество букв a в последнем слове данной последовательности.
строка Abcdaa aAbcaaefa во втором стлове 5 букв "а" регистр не важен */
/* G++/Code::Blocks */
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
enum {n=80};
char s[n];
int i;
int cnt=0;
int in_word=0;

gets(s);

for (i=0; s[i]!='\0'; i++)
{
if (s[i]==' ')
in_word = 0;
else
{
if (!in_word)
{
in_word = 1;
cnt=0;
}
if (s[i]=='A' || s[i]=='a')
cnt++;
}
}

printf("%d\n", cnt);
system("pause");
return 0;
}

Удачи!
Неизвестный
14.06.2011, 22:04
общий
спасибо большое все получилось!
Форма ответа