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

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

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

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

29.11.2011, 17:37. Просмотров 4650. Ответов 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 минут
помогите пожалуйста...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести все слова, в которых есть буква "a" (C++):

Найти все и вывести все слова в которых есть буква "к" - C++
дана строка (ввод с клавы) найти все и вывести все слова в которых есть буква &quot;к&quot;!!!!!!!!!!!!!!!!!!!!!!(разделители между словами точка или...

Удалить из текста все слова в которых буква "а" встречается более двух раз - C++
Все слова, в которых буква &quot;а&quot; встречается более 2-х раз, удалить из текста. Вывести полученную строку на экран, Если такой буквы нет,...

Написать программу,которая находит все слова,в которых буква "а" встречается больше чем один раз. - C++
Есть строка,которая состоит из слов,разделенных любым количеством промежутков.Написать программу,которая находит все слова,в которых буква...

Найти все слова, в которых есть двойные согласные, и заменить их символом "*" - C++
дан текст(на англ. яз). найти все слова, в которых есть двойные согласные и заменить их *.

Удалить столбцы символьной матрицы, в которых есть буква "А" - C++
И удалить все столбцы в которых есть буква &quot;А&quot;

Выяснить, есть ли в заданной строке слова, которые содержат все буквы слова "read" - C++
Помогите, пожалуйста, с кодом на с++. Задание было такое: Дано строку символов. Выяснить, есть ли в ней слова, которые содержат все...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.11.2011, 21:39 #46
Цитата Сообщение от Thinker Посмотреть сообщение
моя вина, что не сказал, что set - множество символов, то есть там нет одинаковых символов.
Давайте-ка точнее set - без повторовю А найти надо что? Общее количество совпадений? Или просто определить встречается ли каждый из символов в строке хотя бы один раз?
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.11.2011, 21:40 #47
Цитата Сообщение от alkagolik Посмотреть сообщение
так это же ничего не меняет. вы наверное запутались.
Если символ c входит в строку set, то другого такого же символа c в set уже нет, я об этом
0
alkagolik
Заблокирован
29.11.2011, 21:41 #48
ну видимо я запутался
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.11.2011, 21:42 #49
Цитата Сообщение от fasked Посмотреть сообщение
Давайте-ка точнее set - без повторовю А найти надо что? Общее количество совпадений? Или просто определить встречается ли каждый из символов в строке хотя бы один раз?
set это строка без повторяющихся символов, s - произвольная строка. Требуется подсчитать количество символов из строки s, содержащихся в set. Например, set = "123". s = "321abc11". Ответ 5
0
alkagolik
Заблокирован
29.11.2011, 21:45 #50
Цитата Сообщение от Thinker Посмотреть сообщение
Ваша цель - подсчитать количество символов строки s, входящих в строку set.
или все таки вы?

Добавлено через 2 минуты
Thinker, решение ссылка + ссылка = решение
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.11.2011, 21:47 #51
Цитата Сообщение от alkagolik Посмотреть сообщение
или все таки вы?
Нет, я же придумал задачу У нас вопрос не сколько различных символов из s принадлежит set (это другая задача, тоже интересная), а сколько в строке s символов, которые принадлежат set, например, усли set="01...9", то мы считаем количество цифр в строке и т.д.
0
alkagolik
Заблокирован
29.11.2011, 21:48 #52
Цитата Сообщение от Thinker Посмотреть сообщение
а сколько в строке s символов, которые принадлежат set, например, усли set="01...9", то мы считаем количество цифр в строке и т.д.
так я вам уже несколько раз показал решение и конечно strchr тут неуместно.
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.11.2011, 21:52 #53
Цитата Сообщение от alkagolik Посмотреть сообщение
так я вам уже несколько раз показал решение и конечно strchr тут неуместно.
Хорошо, ваш алгоритм к строкам set = "123", s = "321abc1122" какой ответ дает?
0
alkagolik
Заблокирован
29.11.2011, 21:57 #54
Цитата Сообщение от Thinker Посмотреть сообщение
Хорошо, ваш алгоритм к строкам set = "123", s = "321abc1122" какой ответ дает?
Код
deadman@gnomik:~$ cat file.c 
#include <stdio.h>

int f(char *s, char x)
{
    int a = 0;
    while (*s)
    {
        if ( *s == x)
            ++a;
        ++s;
    }
    return a;
}

int main(void)
{
    char *s = "321abc1122"; // 9
    char *set = "123";
    int count = 0;

    while(*set)
    {
        count += f(s, *set);
        ++set;
    }
    printf("%i\n", count);

    return 0;
}deadman@gnomik:~$ gcc file.c 
deadman@gnomik:~$ ./a.out 
7
deadman@gnomik:~$
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.11.2011, 21:57 #55
Thinker, мы говорим о символах в сферическом вакууме или символах char? Если про char, то можно предложить отсортировать строку set, и уже далее использовать бинарный поиск. Получится O(lg(n) * m).
C
1
2
3
4
for (p = s; *p; ++p) {
   if (bsearch(set, *p)) // найти символ 'p' в строке 'q'
      ++count;
}
А под конкретные данные (множества set) можно много чего придумать.
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.11.2011, 22:00 #56
alkagolik, хорошо, спасибо, только сложность алгоритма O(mn).
fasked, о типе char. с бинарным поиском сложность алгоритма будет http://www.cyberforum.ru/cgi-bin/latex.cgi?O(n\cdot \log_2 m), уже лучше
0
alkagolik
Заблокирован
29.11.2011, 23:33 #57
самообман. При расчете сложности не учитана сложность сортировки. Реально задача реализуется сравнением каждого байта массива s. Можно конечно (и нужно) оптимизировать под наиболее вероятные случаи, но сути это не меняет.
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.11.2011, 23:45 #58
Цитата Сообщение от Thinker Посмотреть сообщение
уже лучше
Как вариант упаковывать все по 4 или 8 байт, что уменьшит сложность в 8 или 4 раза, но это опять же константа и брать ее во внимание неразумно.
Цитата Сообщение от alkagolik Посмотреть сообщение
При расчете сложности не учитана сложность сортировки.
Строка set очень коротка, поэтому сортировка пройдет почти незаметно. Впрочем, бинарный поиск по ней тоже не сильно будет отличаться от линейного.
0
alkagolik
Заблокирован
30.11.2011, 00:13 #59
Цитата Сообщение от fasked Посмотреть сообщение
Как вариант упаковывать все по 4 или 8 байт
кодировать? можно немного подробней?
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 00:55 #60
Цитата Сообщение от alkagolik Посмотреть сообщение
можно немного подробней?
В общем-то формировать из 4 символов один int. Потом как-нибудь хитро это "заксорить" с искомым символом и проверить на наличие нулей. Я думаю, что в strchr именно так и сделано, но разбираться, если честно, лень Это прибавит скорости машинной, но не алгоритмической. Поэтому неинтересно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 00:55
Привет! Вот еще темы с ответами:

Есть ли в строке слова, которые содержат все буквы слова "read" - C++
Помогите пожалуйста с заданием на си. Дано строку символов. Выяснить, есть ли в ней слова, которые содержат все буквы слова &quot;read&quot;. Если...

Вывести слова из предложения, в которых есть буква, встречающийся четыре и более раз - C++
Задачка по С++. С клавиатуры ввести предложения. Напечатать те слова из введенного предложения, в которых есть хотя бы одна буква...

Выдать строки, в которых есть слова с тремя буквами "у" - C++
Задача: Выдать строки, в которых есть слова с тремя буквами &quot;у&quot;. Уважаемые форумчане и прогеры высокого левела, помогите! Я сам не...

Ввести с клавиатуры строку, заменить в ней все буква "а" на букву "b" - C++
Здравствуйте) Вот возникла такая проблема.... не умею работать с указателями еще(( Помогите написать задачку: &quot;используя указатели,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.11.2011, 00:55
Ответ Создать тему
Опции темы

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