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

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

Войти
Регистрация
Восстановить пароль
 
Арагон
1 / 1 / 0
Регистрация: 29.10.2012
Сообщений: 45
#1

В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А. - C++

07.12.2012, 17:31. Просмотров 946. Ответов 7
Метки нет (Все метки)

В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А. Помогите пожалуйста) Если можно с комментами...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 17:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А. (C++):

Строки (В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А) - C++
В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А.

В произвольном тексте найти и отпечатать все слова длиной 5 символов - C++
Собственно, задача. Если можно, хотелось бы минимум мудрённого кода - простейшие операторы. Ну или с комментариями. Добавлено через 1...

Выделить в строке s1 все слова,начинающиеся с гласной буквы - C++
5)Примечание: СЛОВО-это группа символов не содержащих пробелов ПРЕДЛОЖЕНИЕ-это совокупность слов,разделенных пробелом и заканчивающаяся...

В заданном тексте удалить слова, начинающиеся с заданной буквы - C++
В заданном тексте удалить слова, начинающиеся с заданной буквой. При написании программы нельзя пользоваться стандартными функциями...

В заданном пользователем тексте удалить слова, начинающиеся с указанной буквы - C++
Помогите решить задачу. В заданном пользователем тексте удалить слова, начинающиеся с указанной буквы. нельзя пользоваться стандартными...

В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы. dev c++ - C++
ввод текса в самой программе, а не в текстовом документе. помогите пожалуйста

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
tolord
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 5
07.12.2012, 18:05 #2
Считай текст, затем пусти цикл от начала до конца. Как только упираешься в символ в символ 'a' или 'A', начинаешь записывать это в отдельный массив чаров, пока не упрешься в символ, отличный от буквы, либо в конец текста, то есть находящийся вне диапазона ('а' - 'я' или 'А' - 'Я'), на этом заканчиваешь, выводишь массив чаров на экран, затем идешь дальше по введенному тексту, пока он не закончится.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
07.12.2012, 18:09 #3
С помощью функции strtok, разбиваешь строку на слова, если слова первый символ слова A, выводишь на экран, всё.
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
07.12.2012, 18:18 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
 
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    std::copy_if(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(),
        std::ostream_iterator<std::string> (std::cout, "\n"),
        [](const std::string &s) { return s[0] == 'A'; } );
}
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
07.12.2012, 18:44 #5
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
31
32
33
34
35
36
37
/* Програма актуальна для английского алфавита (ASCII) */
#include <stdio.h>
#define SIZE 65535 // максимальная длина вводимых символов на одну строку
#define OUT 0
#define IN 1
 
int main( void )
{
    int i, j, c, limit, state;
    char text[SIZE];
    
    limit = SIZE - 1;
    for( i = 0; limit > 0 && (c = getc(stdin)) != EOF && c != '\n'; --limit )
    text[i++] = c;
    if( c == '\n' )
    text[i++] = '\n';
    text[i] = '\0'; // запишем символ конца файла
    /* Отсортируем массив */
    i = j = 0;
    state = IN;
    while( text[i] ) {
    if( text[i] == ' ' || text[i] == '\t' )
        state = OUT;
    else if( state == OUT && text[i] == 'A') {
        while( text[i] != '\0' && text[i] != '\n' && text[i] != '\t' && text[i] != ' ' )
        text[j++] = text[i++];
        text[j++] = ' ';
        state = IN;
    }
    ++i;
    }
    if( text[i] = '\n')
    text[j++] = text[i];
    text[j] = '\0';
    printf( "%s", text ); // отобразим результат
    return 0;
}
Добавлено через 8 минут
Цитата Сообщение от tolord Посмотреть сообщение
читай текст, затем пусти цикл от начала до конца. Как только упираешься в символ в символ 'a' или 'A', начинаешь записывать это в отдельный массив чаров, пока не упрешься в символ, отличный от буквы, либо в конец текста, то есть находящийся вне диапазона ('а' - 'я' или 'А' - 'Я'), на этом заканчиваешь, выводишь массив чаров на экран, затем идешь дальше по введенному тексту, пока он не закончится.
Создавать новый массив вовсе необязательно, хотя, возможно это будет немного легче...
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
07.12.2012, 18:49 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream> 
 
int main() 
{ 
    char str[] = "dasdasdas sdsadasd aaaaaaaaa aaaaaaaaaa aaaaaaaasgd asdsa as asdqwqwe qweqwe"; 
    char* ptr; 
 
    ptr = strtok(str, " "); 
 
    while(ptr!=NULL) 
    { 
        if(ptr[0] == 'a') 
            std::cout << ptr << " "; 
        ptr = strtok(NULL, " "); 
    }  
    std::cout << std::endl;
}
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
07.12.2012, 21:08 #7
Со strtok() будет попроще
Арагон
1 / 1 / 0
Регистрация: 29.10.2012
Сообщений: 45
23.12.2012, 14:58  [ТС] #8
Помогите написать комментарии. И такой вот вопрос как выделить слова в результате выполненной программы.
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{
clrscr();
char s[100],word[50];
int i=0, bw, ew, len;
gets(s); len=strlen(s);
while (i<len)
{
 while((s[i]==' ')&&(i<len)) i++;
 bw=i;
 while((s[i]!=' ')&&(i<len)) i++;
 ew=i;
 if(s[bw]=='A')
 {
  printf("Slova s bukvoy A:\n");
  if (ew-bw>0)
   {strncpy(word, &s[bw], ew-bw);
    word[ew-bw]=0;}
  else
   {strncpy(word, &s[bw], ew-bw+1);
    word[ew-bw+1]=0;}
  printf("%s\n", word);
 }
}
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 14:58
Привет! Вот еще темы с ответами:

Определить, есть ли в тексте слова, начинающиеся и заканчивающиеся с буквы "А" - C++
Дан текст, состоящий не менее чем из пяти слов. Определить, есть ли в нем слова, начинающиеся и заканчивающиеся с буквы &quot;А&quot;, а также...

Определить, есть ли в тексте слова, начинающиеся и заканчивающиеся с буквы "А", и их количество - C++
Дан текст, состоящий не менее чем из пяти слов. Определить, есть ли в нем слова, начинающиеся и заканчивающиеся с буквы &quot;А&quot;, а также...

В тексте выделить все слова, что начинаються с буквы "к" - C++
В тексте выделить все слова, что начинаються с буквы &quot;к&quot;.

В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов - C++
Так получилось, что тема массивов в этом году была урезана, и поэтому я еле-еле нацарапываю код для циферных массивов. Помогите с задачей,...


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

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

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