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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.97
mister pOO
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 33
#1

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

29.11.2011, 17:37. Просмотров 4541. Ответов 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
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++
C++ Написать программу,которая находит все слова,в которых буква "а" встречается больше чем один раз.
Удалить столбцы символьной матрицы, в которых есть буква "А" C++
C++ Выяснить, есть ли в заданной строке слова, которые содержат все буквы слова "read"
Есть ли в строке слова, которые содержат все буквы слова "read" C++
Вывести слова из предложения, в которых есть буква, встречающийся четыре и более раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
30.11.2011, 01:35     Вывести все слова, в которых есть буква "a" #61
Цитата Сообщение от fasked Посмотреть сообщение
но разбираться, если честно, лень
та же беда
Thinker
Эксперт C++
4221 / 2195 / 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
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 16:30     Вывести все слова, в которых есть буква "a" #63
Цитата Сообщение от Thinker Посмотреть сообщение
ну так что, выкладывать алгоритм сложностью m+n?
Давно пора
Thinker
Эксперт C++
4221 / 2195 / 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
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 16:52     Вывести все слова, в которых есть буква "a" #65
Thinker, думал об этом, но отбросил мысль до вопроса "о сферических символах" Для остальных типов данных не подойдет.
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 16:54     Вывести все слова, в которых есть буква "a" #66
Цитата Сообщение от fasked Посмотреть сообщение
Для остальных типов данных не подойдет.
А нам и не нужны другие типы данных в данной задаче А метод хорош и очень быстр! Можно сделать с арифметикой указателей, но принцип тот же остается
alkagolik
Заблокирован
30.11.2011, 17:09     Вывести все слова, в которых есть буква "a" #67
Thinker, и раз уж на то пошло, то массив флагов можно объявить как char set_flag[256]. 4 байта не нужно для хранения одного бита. Минимум что мы можем предоставить это 1 байт. Молодец
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 17:20     Вывести все слова, в которых есть буква "a" #68
alkagolik, ну int или char это переделать легко, главное скорость удалась
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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++
C++ Вывести все значения n, при которых все числа заданной последовательности будут не меньше "a"
Записать из строки все буква "А" "а" в файл C++
Что здесь неправильно? (Вывести все слова строки в которых первая буква входит в него ещё раз) C++
C++ Проверить, встрачается ли в заданном тексте буква "а" чаще, чем буква "b"

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4221 / 2195 / 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"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru