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

Вывести все слова, в которых есть буква "a" - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.97
mister pOO
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 33
29.11.2011, 17:37     Вывести все слова, в которых есть буква "a" #1
не могу найти ошибку
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
int i=0,j=0,a=0,schet=0;
char s[50],s1[50];
     cin.getline(s,50);
             while(i<50)
{
                        if((isspace(s[i])) && (isalnum(s[i-1])))
{    
     j=i-1;schet=0;
             while((!isspace(s[j])) || (s[j]=='\n'))
{    
     j--;
                        if(s[j]=='a')
     schet++;
     }
             for(j;j<i+1;j++)
{
                        if(schet>=1)
     s1[j]=s[j];
}
 
}
    i++;
}cout<<s1<<endl;
getch();
нужно вывести все слова в которых есть буква a

Добавлено через 2 часа 30 минут
помогите пожалуйста...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 17:37     Вывести все слова, в которых есть буква "a"
Посмотрите здесь:

Найти все и вывести все слова в которых есть буква "к" C++
C++ Написать программу,которая находит все слова,в которых буква "а" встречается больше чем один раз.
Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
Выдать строки, в которых есть слова с тремя буквами "у" C++
Вывести слова из предложения, в которых есть буква, встречающийся четыре и более раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.11.2011, 01:35     Вывести все слова, в которых есть буква "a" #61
Цитата Сообщение от fasked Посмотреть сообщение
но разбираться, если честно, лень
та же беда
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 16:26     Вывести все слова, в которых есть буква "a" #62
Цитата Сообщение от alkagolik Посмотреть сообщение
самообман. При расчете сложности не учитана сложность сортировки. Реально задача реализуется сравнением каждого байта массива s. Можно конечно (и нужно) оптимизировать под наиболее вероятные случаи, но сути это не меняет.
Все учитано, мы же рассматриваем O-большое. При этом сложность подсчитана для среднего случая. Итак, мы остановились пока на алгоритме сложностью O(nlog(m))

Добавлено через 8 часов 56 минут
fasked,alkagolik, ну так что, выкладывать алгоритм сложностью m+n?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.11.2011, 16:30     Вывести все слова, в которых есть буква "a" #63
Цитата Сообщение от Thinker Посмотреть сообщение
ну так что, выкладывать алгоритм сложностью m+n?
Давно пора
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 16:30     Вывести все слова, в которых есть буква "a" #64
Итак, сложность данного алгоритма m+n:
C
1
2
3
4
5
6
7
8
9
10
int Count(char *s, char *set)
{
    int i, count = 0, set_flag[256] = {0};
    for(i = 0; set[i]; i++)
         set_flag[set[i]] = 1;
    for(i = 0; s[i]; i++)
        if (set_flag[s[i]])
            count++;
    return count;
}
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.11.2011, 16:52     Вывести все слова, в которых есть буква "a" #65
Thinker, думал об этом, но отбросил мысль до вопроса "о сферических символах" Для остальных типов данных не подойдет.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 16:54     Вывести все слова, в которых есть буква "a" #66
Цитата Сообщение от fasked Посмотреть сообщение
Для остальных типов данных не подойдет.
А нам и не нужны другие типы данных в данной задаче А метод хорош и очень быстр! Можно сделать с арифметикой указателей, но принцип тот же остается
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.11.2011, 17:09     Вывести все слова, в которых есть буква "a" #67
Thinker, и раз уж на то пошло, то массив флагов можно объявить как char set_flag[256]. 4 байта не нужно для хранения одного бита. Минимум что мы можем предоставить это 1 байт. Молодец
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 17:20     Вывести все слова, в которых есть буква "a" #68
alkagolik, ну int или char это переделать легко, главное скорость удалась
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.11.2011, 17:24     Вывести все слова, в которых есть буква "a" #69
Мне в таком случае больше по душе такая реализация, без сравнений:
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
#include <stdio.h>
 
size_t *make_histo(char *s, size_t *histo)
{   
    while (*s)
        ++histo[*s++];
        
    return histo;
}
 
size_t count(char *set, size_t *histo)
{
   size_t cnt = 0;
   
   while (*set) {
      cnt += histo[*set++];
   }
   
   return cnt;
}
 
int main() {
   size_t histo[256] = { 0 };
   size_t cnt = 0;
   
   cnt = count("da", make_histo("abcdefabcdefabcdef", histo));
   printf("%u ", cnt);
   
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 17:39     Вывести все слова, в которых есть буква "a"
Еще ссылки по теме:

C++ Вывести все значения n, при которых все числа заданной последовательности будут не меньше "a"
Есть ли в строке слова, которые содержат все буквы слова "read" C++
C++ Выяснить, есть ли в заданной строке слова, которые содержат все буквы слова "read"

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 17:39     Вывести все слова, в которых есть буква "a" #70
fasked, согласен, и в моем алгоритме тоже можно написать count += set_flag[s[i]] и работать адресной с арифметикой, но моя цель была показать направление в сторону быстрого алгоритма. За счет узкого диапазона значений и удалось так сделать
Yandex
Объявления
30.11.2011, 17:39     Вывести все слова, в которых есть буква "a"
Ответ Создать тему
Опции темы

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