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

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

Войти
Регистрация
Восстановить пароль
 
novi4ek_
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 8
03.12.2009, 10:32     строки, именно строки #1
Дан текст, определить, сколько в нем предложений. Вывести на экран самое длинное.

Напишите пожалуйста код,хоть полу рабочий,просто я со строками полный ноль. на С
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2009, 10:32     строки, именно строки
Посмотрите здесь:

C++ Скопировать второе слово каждой строки в начало следующей строки
C++ Как первые два символа строки переставить в конец этой строки?
1) Структура 2) строки нужно Именно на Си, а не на Си++ C++
C++ Указать номер строки, максимально удаленной от первой строки заданной матрицы
C++ Поменять первый элемент строки с максимальным элементом этой строки
C++ Переставить строки матрицы по возрастанию максимальных элементов каждой строки
Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 C++
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки
Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A C++
Прибавить ко всем элементам каждой строки максимальное значение этой строки C++
C++ Вычислить длину введенной строки и вывести символы строки с четными индексами
Функция разделения строки в массив отдельных частей этой строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
03.12.2009, 10:51     строки, именно строки #2
используй функцию strtok для разбивки строки с учётом разделителей
(код писать не буду, ибо спать хочу ((: )
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
строки, именно строки  
Gravity
 Аватар для Gravity
556 / 550 / 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;
}
novi4ek_
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 8
10.12.2009, 15:42  [ТС]     строки, именно строки #5
Всем спасибо! Хороший форум и хорошие форумчане)
Yandex
Объявления
10.12.2009, 15:42     строки, именно строки
Ответ Создать тему

Метки
Строки
Опции темы

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