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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
serg2006
0 / 0 / 0
Регистрация: 18.01.2009
Сообщений: 3
#1

Задача на удаление слов на "а" из текста - C++

18.01.2009, 18:35. Просмотров 1496. Ответов 6
Метки нет (Все метки)

Срочно!!! Помогите доработать программу, которая должна проанализировать три небольших предложения составленные из слов разделённых пробелами и вывести на экран новый текст без слов начинающихся на букву "а". Сами предложения должны быть прописаны в самой программе, т.е. текст уже должен быть в тексте программы.
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>
#include<stdlib.h>
 void main( )
 {
 char s[ ]="album for arts foto.";
 {
 char **a,*w;
 int N=80;
 int l,r,k,m,i;
 a=(char**) malloc(m*sizeof(char*));
 w = (char*) malloc(N);
for (m=0; s[m] !='.';)
m=m+1;
r=0;
l=0;
{
  while((s[l]== ' ') && (l<=m))
  l=l+1;
  r=l;
  {
while((s[r+1]!= ' ')&& (r+1<=m))
r=r+1;
*w=s[l+(r+1)];
if (w[l]!= 'a')
printf("%s",w);
l=r+1;
}
}
}
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2009, 18:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача на удаление слов на "а" из текста (C++):

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов - C++
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt; using namespace std; int main()...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64" - C++
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа при...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Задача на тему "Строки" (вывести на экран только предложения, состоящие из заданного количества слов) - C++
написать программу, которая считывает текст из файла и вывыдит на экран только предложения состоящие из задоного количества слов int...

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

Удалить из текста все слова, оканчивающиеся группой букв "ing" и "ed" - C++
Помогите пожалуйста с задачей на массив слов: Дан текст. Удалить все слова, оканчивающиеся группой букв ing и ed.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YurA_280784
Заблокирован
23.01.2009, 11:15 #2
Так это вывод строки без букв а
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>  
 
void main()
{
    char s[ ]="album for arts foto.";
    printf("Input string \r\n\t%s\r\n",s);
 
    printf("String after removing a\r\n\t");
    int i = 0;
    while(s[i] != '.')
    {
        if(s[i] != 'a')
            printf("%c",s[i]);
        i++;
    }
    printf("\r\n");
}
Добавлено через 1 минуту 22 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>  
 
void main()
{
    char s[ ]="album for arts foto.";
    printf("Input string \r\n\t%s\r\n",s);
 
    printf("String after removing a\r\n\t");
    int i = 0;
    while(s[i] != '.')
    {
        if(s[i] != 'a')
            printf("%c",s[i]);
        else
            while(s[i] != ' ')
                i++;
        i++;
    }
    printf("\r\n");
}
Тоже, но без слов на а(подразумевается что между словами стоит пробел)

Добавлено через 1 минуту 2 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>  
 
void main()
{
    char s[ ]="album for arts foto.";
    printf("Input string \r\n\t%s\r\n",s);
 
    printf("String after removing a\r\n\t");
    int i = 0;
    while(s[i] != '.')
    {
        if(s[i] != 'a')
            printf("%c",s[i]);
        else
            while(s[i] != ' ')
                i++;
        i++;
    }
    printf("\r\n");
}
Добавлено через 1 минуту 1 секунду
Упс без слов второй раз киданул
Если шо не забываем про СПС!...
1
plemiash
0 / 0 / 0
Регистрация: 13.01.2009
Сообщений: 17
24.01.2009, 22:41 #3
а как можно сделать....что бы прога не "выводила без "а" "....а удалила из массива эти слова сдвинув строки вместе

Добавлено через 6 минут 4 секунды
и(или) как удалить из строки все повторяющиеся буквы "а" и вывести массив без этих букв сдвинув его(пробелы можно не трогать).
0
YurA_280784
Заблокирован
26.01.2009, 11:13 #4
Это можно сделать если переприсваивать элементы строки, для этого сгодяться функции strchr(const char *str, char ch) - поиск первого символа ch в строке str(поиск слева направо)

короче буд гдет так (правда я пишу только для первого слова на 'а', как для всех предлагаю самому подумать)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int sLen      = strlen(str);
char *chBuf = strchr(s,'a');
int pos = -1;
if(chBuf)//Если слов на 'a' нет то chBuf == NULL, тогда strlen выдаст ошибку    
    pos = sLen - strlen(chBuf);//Узнаём позицию а гдеж слово на 'a' расположено
while(chBuf)
{
     if(chBuf[0] == ' ')//Пока не станет равным пробелу, ну или др табулятору
         break;
     *chBuf++;//Сдвигаем указатель
}
 
int bfLen = 0;
if(chBuf)
   bfLen = strlen(chBuf);
int add   = sLen - bfLen - pos;
int i;
if(0 <= pos)
{
   for(i = pos;i < sLen - add; i++)
        str[i] = str[i + add];
   str[sLen - add] = '\0';//Остальную часть строки отбрасываем
}
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.01.2009, 14:04 #5
C++
1
*chBuf++;//Сдвигаем указатель
а зачем здесь *
0
YurA_280784
Заблокирован
26.01.2009, 16:00 #6
Да признаю строку можно просто ++ сдвигать...
Здесь ты прав accept
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2009, 12:32 #7
цикл можно заменить
Код
    while(*chBuf && *chBuf++ != ' ')
        ;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2009, 12:32
Привет! Вот еще темы с ответами:

Подсчитать количество слов "KSM" и "SKS" в строке - C++
Доброго времени суток, господа. Не знаю что делать с поставленном мне задачей -- подсчитать количество слов &quot;KSM&quot; и &quot;SKS&quot; в строке char...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, "АННА", "ШАЛАШ" - C++
Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, &quot;АННА&quot;,...


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

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

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