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

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

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

строки, именно строки - C++

03.12.2009, 10:32. Просмотров 563. Ответов 4

Дан текст, определить, сколько в нем предложений. Вывести на экран самое длинное.

Напишите пожалуйста код,хоть полу рабочий,просто я со строками полный ноль. на С
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2009, 10:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос строки, именно строки (C++):

1) Структура 2) строки нужно Именно на Си, а не на Си++ - C++
1) Даны стоимости двух товаров в рублях и копейках. Найти суммарную стоимость покупки и рассчитать сдачу. 2) Удалить все символы в...

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки - C++
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: "Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней - C++
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

Как первые два символа строки переставить в конец этой строки? - C++
Собственно вопрос

4
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
03.12.2009, 10:51 #2
используй функцию strtok для разбивки строки с учётом разделителей
(код писать не буду, ибо спать хочу ((: )
0
-=ЮрА=-
Заблокирован
Автор FAQ
03.12.2009, 12:37 #3
Вот рабочий код на С
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <windows.h>
#include <stdio.h>
 
char * str = (char *)malloc(sizeof(char));
//Организуем ввод текстового блока 
//до того как будет введен символ ch_end
char * enter_text(char * str, char ch_end);
 
int  * nWords = (int *)malloc(sizeof(int));
 
void main()
{
    int nSentences = 0;
    printf("\tEnter text block\r\n");
    str = enter_text(str, '\n');
    //Заменяем все знаки ! ? на точки
    //Далее при анализе под предложением 
    //понимаем совокупность символов с точкой вконце
    int sLen = strlen(str);
    for(int i = 0; i < sLen; i++)
    {
        if(str[i] == '!' || str[i] == '?' )
            str[i] = '.';
    }
    char * chBuf = strchr(str,'.');
    if(chBuf)
    {
        i = 0;
        nWords[nSentences] = strlen(str) - strlen(chBuf);
        chBuf = strchr(chBuf + 1,'.');
        nSentences++;
        nWords = (int *)realloc(
                (void *)nWords,(nSentences + 1)*sizeof(int));
        while(chBuf)
        {
            nWords[nSentences] = strlen(str) - strlen(chBuf) - nWords[nSentences - 1];
            if(nWords[i] < nWords[nSentences])
                i = nSentences;
            chBuf = strchr(chBuf + 1,'.');
            nSentences++;
            nWords = (int *)realloc(
                    (void *)nWords,(nSentences + 1)*sizeof(int));
        }
        printf("Text consist from %d sentences\r\n",nSentences);
        printf("Sentence with max word amount %d\r\n",i + 1);
    }
    else
        printf("Text doesn't contain any sentences");
    printf("Press NUM1 to enter new text\r\n");
    scanf("%d",&i);
    if(i == 1)
        main();
}
 
char * enter_text(char * str, char ch_end)
{
    if(str)
    {
        int i = 0;
        while((str[i] = getchar()) != ch_end)
        {
            i++;
            str = (char *)realloc((void *)str,sizeof(char)*(i + 1));
        }
    }
    return str;
}
1
Миниатюры
строки, именно строки  
Gravity
563 / 557 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.12.2009, 14:21 #4
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 <string.h> 
 
int
main(void)
{
    int nsent, maxsent;
    char s[4096], sent[4096], *p;
    char *delim = ".?!";
    
    printf("Введите текст: ");
    if(fgets(s, sizeof(s), stdin) == NULL || *s == '\n')
        return 1;
    
    if(p = strrchr(s, '\n'))
        *p = '\0';
    
    nsent = maxsent = 0;
    for(p = s; p = strtok(p, delim); p = NULL) {
        nsent++;
        if(strlen(p) > maxsent) {
            maxsent = strlen(p);
            strcpy(sent, p);
        }
    }
    printf("В тексте %d предложений(ия)(ие).\n"
           "Самое длинное предложение: %s\n", nsent, sent);
 
    return 0;
}
1
novi4ek_
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 8
10.12.2009, 15:42  [ТС] #5
Всем спасибо! Хороший форум и хорошие форумчане)
0
10.12.2009, 15:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2009, 15:42
Привет! Вот еще темы с ответами:

Найти среднее арифметическое каждой строки матрицы и отсортировать строки по возрастанию - C++
Дана квадратная матрица. Найти среднее арифметическое каждой строки и отсортировать строки по возрастанию этих характеристик

Прибавить ко всем элементам каждой строки максимальное значение этой строки - C++
добрый вечер! Помогите пожалуйста доработать код! Изменить текущий массив, прибавив ко всем элементам каждой строки максимальное...

Указать номер строки, максимально удаленной от первой строки заданной матрицы - C++
Задание: Расстояние между k-й и 1-й строками квадратной матрицы А опеределяется как r = сумма от j=1 до N от (abs(akj)*abs(a1j)). Указать...

Как считать строки из файла, если там больше одной строки? - C++
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets ...


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

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

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