Аватар для deoleg
0 / 0 / 0
Регистрация: 04.01.2010
Сообщений: 93

Удалить из текста все повествовательные предложения

28.11.2010, 00:42. Показов 1344. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с задачей. Где я ошибся? Я только учусь) Вот текст задачи: Дан текст удалить из него все повествовательные предложения.

Вот то, что я нарешал):

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
#include <stdio.h>
#include <conio.h>
char *udalenie (char str[])
{
int a=0; char mas[100];
for(int i=0; i<=strlen(str); i++)
    {
    if(str[i]=='!' || str[i]=='?')
        {
        while(a<i)
            {
            mas[a]=str[a];
            a++;
            }
        }
    else if(str[i]=='.')
        {
        a=i+1;
        }
    }
return mas;
}
 
void main(void)
{
clrscr();
char    str[100], mas[100];
gets (str);
udalenie (str);
for(int i=0; i<=strlen(mas); i++)
    printf("%c", mas[i]);
getch();
}
Заранее спасибо) Если можно, не просто дать решение, расписать по возможности, чтобы понять.. )) спс.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2010, 00:42
Ответы с готовыми решениями:

Удалить из строки все буквы, равные последней букве предложения
надо что бы он прочитав последнею букву в предложение удалял все такие же буквы в самом предложение кроме нее самой! #include...

Напечатать все предложения текста не начинаются на букву "А"
Ввести текст, состоящий из нескольких предложений. Каждое предложение сохраняется как элемент массива. Напечатать все предложения текста...

Напечатать все предложения текста, не начинающиеся на букву "А", предварительно преобразовав их
Доброго времени суток! Нужно ввести текст, состоящий из нескольких предложений. Каждое предложение сохраняется как элемент массива....

4
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 134
28.11.2010, 01:26
Что компилятор выдает?
0
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
28.11.2010, 01:41
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
38
39
40
41
42
43
#include <stdio.h>
#include <conio.h>
#define MAX 100
void main()
 {   char line[MAX]={};
     char new_line[MAX]={};
     int index=0;
     const char* p_line=new_line;
     int i,a,b;
     a=b=0;
     printf("Please input your string:\n");
     gets(line);
     for(i=0;i<MAX;++i)
     {
         if(line[i]=='.')
             index=i;
         if(line[i]=='!'||line[i]=='?')
         {
             if(a==0)
             {
                 for(a=index;a<i+1;++a)
             {
                 new_line[b]=line[a];
                 ++b;
             }
 
             }
             else
             {
             for(a=index+1;a<i+1;++a)
             {
                 new_line[b]=line[a];
                 ++b;
             }
 
             index=i+1;
         }
         }
 
     }
     printf("%s", p_line);
     getch();
 }
Добавлено через 8 минут
Вот как-то так.. Из ошибок в вашем решении:
Массив mas в функции main и массив mas в функции udalenie не имеют между собой ничего общего, это не один и тот же массив, а два разных массива. неправильно построена и используется функция udalenie.... и т.д..
1
 Аватар для deoleg
0 / 0 / 0
Регистрация: 04.01.2010
Сообщений: 93
28.11.2010, 17:36  [ТС]
Я посмотрел твой код. Результат не подходит. Твой код на строку "123.123!123?123." Выдает результат: ".123!123!123?"... Это не верно. Нашел ошибку в своем коде. Теперь все работает.

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
char *udalenie ( char str[], char mas[])
{
int a=0, temp=0;
for(int i=0; i<=strlen(str); i++)
    {
    if(str[i]=='!' || str[i]=='?')
        {
        while(a<=i)
            {
            mas[temp]=str[a];
            temp++;
            a++;
            }
        }
    else if(str[i]=='.')
        {
        a=i+1;
        }
    }
return mas;
}
 
void main( void )
{
clrscr();
char    str[100], mas[100];
gets (str);
udalenie (str, mas);
for(int i=0; i<=strlen(mas); i++)
    printf("%c", mas[i]);
getch();
}
Добавлено через 16 минут
Лучше так:

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
char *udalenie ( char str[], char mas[])
{
int a=0, temp=0;
for(int i=0; i<=strlen(str); i++)
    {
    if(str[i]=='!' || str[i]=='?')
        {
        while(a<=i)
            {
            mas[temp]=str[a];
            temp++;
            a++;
            }
        }
    else if(str[i]=='.')
        {
        a=i+1;
        }
    }
return mas;
}
 
void main( void )
{
clrscr();
char    str[100], mas[100]={0};
gets (str);
udalenie (str, mas);
for (int i=0; i<=strlen(mas); i++)
    printf("%c", mas[i]);
getch();
}
0
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
28.11.2010, 20:17
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Да, невнимательно я сделал.. вот правильный вариант моего решения:
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
#include <stdio.h>
#include <conio.h>
#define MAX 100
void main()
 {   char line[MAX]={};
     char new_line[MAX]={};
     int index=0;
     const char* p_line=new_line;
     int i,a,b;
     a=b=0;
     printf("Please input your string:\n");
     gets(line);
     for(i=0;i<MAX;++i)
     {
         if(line[i]=='.')
             index=i+1;
         if(line[i]=='!'||line[i]=='?')
         {
             for(a=index;a<i+1;++a)
             {
                 new_line[b]=line[a];
                 ++b;
             }
 
             index=i+1;
         }
 
     }
     printf("%s", p_line);
     getch();
 }
В вашем решении мне непонятно зачем функция udalenie возвращает char*, когда вся ее работа сводится к изменению поданного в аргументе массива..
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2010, 20:17
Помогаю со студенческими работами здесь

Удалить из текста все двузначные числа
помогите чем сможете , за все буду благодарен Добавлено через 11 минут вот начало программы , дальше не могу сообразить как удалить...

Удалить из заданного текста все цифры
Программа которая удаляет из заданного текста все цифры)))

Удалить из текста все гласные буквы
3. Задан некоторый текст. a. удалить из него все гласные буквы. b. Заменить все символы «.» на слово «тчк Нужно сделать а как...

Преобразование текста: удалить все символы "*" и повторить все остальные дважды
Дан текст. Преобразовать его таким образом, чтобы все символы &quot;*&quot; были удалены, а все символы, отличные от &quot;*&quot; были повторены...

Удалить из текста все слова, содержащие цифры
б) Удалить из текста все слова, содержащие цифры.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования. . . .
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
Максимальная производительность C#: Векторизация (SIMD)
stackOverflow 20.04.2025
Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .
Максимальная производительность C#: Процессорный кэш
stackOverflow 20.04.2025
Знакомство с внутренним устройством процессорного кэша — ключевой шаг в написании по-настоящему быстрого кода на C#. Этот слой архитектуры компьютера часто ускользает от внимания разработчиков, но. . .
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru