IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Задача на Си, работа со строками
сообщение
Сообщение #1


Гость






Здравствуйте.
Помогите выполнить задачу на С, компилятор Visual C

Дана строка состоящая из слов, разделённых пробелами, слова могут содержать заглавные буквы. Надо найти все такие слова которые состоят из тех же букв, что и первое слово (могут быть и другие быквы, но главное, чтобы присутствовали все буквы из первого). Заглавные буквы различаются со строчными ... вот так.
Прошу помочь в реализации
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Друзья, ну помогите пожалуйста. Выполните как можите и как понимаете это условие.
С уважением.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Вот. gcc не ругается. Вижуала нету. Пробуй компилить.

#include <stdio.h>

typedef __int64 CMask;

CMask ReadWordMask(char **s)
{
CMask res = 0;
for (; **s != ' ' && **s != 0; ++*s)
res |= (((CMask)1) << (**s - 'A'));
return res;
}

char s[1 << 20];
char *c, *c1;
CMask first = -1;

int main()
{
gets(s);

for (c1 = s, c = s; *c != 0; c = c1)
if (*c1 == ' ')
++c1;
else if (first == -1)
first = ReadWordMask(&c1);
else if ((ReadWordMask(&c1) & first) == first)
{
char t = *c1;
*c1 = 0;
printf("%s\n", c);
*c1 = t;
}

return 0;
}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Еще вриант ...

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int IsInclude(char *sub, char *s){
while ((*sub) && (strchr(s, *sub))) sub++;
return *sub == 0 ? 1 : 0;
}

char *s = new char[255], *first = new char[255], *p, *temp;
int i;

int main (void){

gets(s);
p = s;

while ((*p) && (*p == ' ')) p++;
for (i = 0; *p, *p != ' '; *(first + i++) = *p, p++);
*(first + i) = '\0';

while ( *p ) {
while ((*p) && (*p == ' ')) p++;
if ( *p ){
char *back = p;
while ((*p) && (*p != ' ')) p++;
temp = new char[p - back + 1];
memcpy(temp, back, p - back);
if (IsInclude(first, temp) == 1) puts(temp);
free(temp);
}
}
free(s);
free(first);
return 0;
}


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.10.2020 18:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name