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

Найти самое длинное и самое короткое слово в предложении - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.60
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
24.02.2010, 23:47     Найти самое длинное и самое короткое слово в предложении #1
Составить и отладить программу, которая выполняет следующие действия. В заданном тексте из нескольких предложений найти самое длинное и самое короткое слово. Если они принадлежат одному и тому же предложению, заменить их в тексте звездочками.


помогите....хоть объясните как делать(((
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2010, 23:47     Найти самое длинное и самое короткое слово в предложении
Посмотрите здесь:

C++ Заменить самое длинное слово на самое короткое и наоборот
C++ Найти в тексте самое длинное слово и самое длинное предложение
C++ В заданном предложении поменять местами самое длинное и самое короткое слова
Как найти самое длинное (короткое) слово? C++
Сформировать новую строку, расположив в ее начале самое короткое слово, затем самое длинное, и все остальные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 00:20     Найти самое длинное и самое короткое слово в предложении #2
сначала на словах расскажу ))

для обработки текста можно создать двумерный массив типа string. Каждая строка массива - отдельное предложение. А столбцы - слова этого предложения. то есть элемент (i,j) - j-ое слово i-ого предложения.
Для того чтобы текст разбить на предложения надо последовательно в цикле считывать символы с клавы (или из файла), как только пробел - записываем в текущую строку массива на текущее место считанное слово, и увеличиваем счетчик j (столбца) для текущего i (строки). И так далее до точки. Как только считали точку - переходим на новую строку массива и повторяем процесс. И так далее до введенного Enter ('\n') (или конца файла, если считывали из файла)- то есть до конца ввода текста.
А затем уже по каждой строке массива вычисляешь длину каждого слова (есть спец. функция, а можно и самой в цикле). И сравниваешь с уже вычисленными и запоминаешь номер строки массива (для того чтобы узнать - из одного они предложения или нет) и номер столбца(чтобы заново слова не искать при необходимости замены на *) как для самого большого, так и для самого маленького слова. в общем, все равно как найти минимальный и максимальный элемент в двумерном массиве. ну и если запомненные номера предложений (то есть номера строки массива) искомых слов совпали - то меняешь их на звездочки.
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 17:43  [ТС]     Найти самое длинное и самое короткое слово в предложении #3
liebe, оххххх...как все сложно(((у вас нет никакого примера похожего,а то трудно наинать с нуля....а так огромное спасибо....я теперь поняла что делать...осталось только понять КАК))
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 17:56     Найти самое длинное и самое короткое слово в предложении #4
Цитата Сообщение от ta_4to Посмотреть сообщение
liebe, оххххх...как все сложно(((у вас нет никакого примера похожего,а то трудно наинать с нуля....а так огромное спасибо....я теперь поняла что делать...осталось только понять КАК))
примера нет, но могу написать ))) только вопрос, тебе (давай на ты ) надо именно символьный массив или можно строковый? и обязательно прям с ним все прогу работать или можно для галочки? (есть просто покороче вариант)
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 18:01  [ТС]     Найти самое длинное и самое короткое слово в предложении #5
liebe,
если не трудно то помоги плиз)ну задание заключается в том чтоб работать со строками....и типа постараться не использовать стандартных функций которые определяют длину слова и что там еще.....
хорошо давай на ты))
Sined
 Аватар для Sined
9 / 7 / 2
Регистрация: 30.08.2008
Сообщений: 120
25.02.2010, 18:27     Найти самое длинное и самое короткое слово в предложении #6
ta_4to а списки можно использовать вместо массива?
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 18:39  [ТС]     Найти самое длинное и самое короткое слово в предложении #7
Sined, неа(
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 19:47     Найти самое длинное и самое короткое слово в предложении #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вроде работает )) но так как нет полного текста задания, то сама придумала че делать в конце, и если есть несколько слов с одинаковой мин.длиной (макс. длиной) - выбираю первые встретившееся. В строке s1 - разделительные символы между словами, в s2 - между преложениями.если че - добавь нужные. А вообще не плохо бы увидеть весь текст задания
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
#include <iostream>
#include <sstream>
 
using namespace std;
int main()
{
    char ch,mas[1000];
    string s1=".!?", s2=" ,;-:";
    int i,max=0,min=1000,flag2,flag1,num_ch, current_len=0, num_sent=0, end_maxw,end_minw, num_sentmax,num_sentmin;
 
num_ch=-1;
while (cin.get(ch)) 
{ 
    num_ch++; mas[num_ch]=ch;
    
    flag1=0;
    for (i=0;i<s1.length();i++)
       if (ch==s1[i]) flag1=1;
 
    flag2=0; 
    for (i=0;i<s2.length();i++)
        if (ch==s2[i]) flag2=1;
 
    if ((flag1==0)&&(flag2==0)&&(ch!='\n')) current_len++;
    else if (current_len>0){
                        if (current_len>max) {max = current_len;  end_maxw = num_ch-1; num_sentmax = num_sent;}
                        if (current_len<min) {min = current_len;  end_minw = num_ch-1; num_sentmin = num_sent;}
                        current_len=0;
                        }
    if (flag1==1) num_sent++;
    if (ch=='\n') break;
} 
 
if (num_sentmax==num_sentmin) 
{
    for (i=end_maxw;i>end_maxw-max;i--)
        mas[i]='*';
    for (i=end_minw;i>end_minw-min;i--)
        mas[i]='*';
}
cout<<"min_dlina="<<min<<endl;
cout<<"max_dlina="<<max<<endl;
for (i=0;i<=num_ch;i++)
    cout<<mas[i];
 
return 0;}
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 19:58  [ТС]     Найти самое длинное и самое короткое слово в предложении #9
Требования к реализации:
1) Начальные данные вводятся с клавиатуры с организацией необходимого диалога с пользователем, используя элементарный форматированный ввод-вывод.
2) Использование указателей для доступа к элементам обработки.
3) Преобразование строк происходит в той же области памяти, если это не оговорено в условии задания.
4) Использование встроенных функций работы со строками.
5) Если не оговорено отдельно, слова в предложениях могут отделяться любыми знаками препинания, количество пробелов не ограничено.
6) Тестирование программы провести на вариантах входной информации, которые предусматривают разные ситуации в пределах ограничений в постановке задачи. Анализ результатов необходимо провести самостоятельно до демонстрации программы преподавателю и зафиксировать тесты в тетради.
7) Программа должна сопровождаться комментарием, которой заключает в себе: П.И.Б., шифр группы, полное условие задания, примечания (если необходимо).
8) При наличии любых ограничений на входную информацию, или на алгоритм, они должны быть отмеченные в комментарии после условия задания.

Оригинал
Вимоги до реалізації:
1) Початкові дані вводяться з клавіатури з організацією необхідного діалогу з користувачем, використовуючи елементарне форматоване введення-виведення.
2) Використання покажчиків для доступу до елементів обробки.
3) Перетворення рядків відбувається у тій самій області пам’яті, якщо це не оговорено в умові завдання.
4) Використання вбудованих функцій роботи з рядками.
5) Якщо не оговорено окремо, слова у реченнях можуть відокремлюватись будь-якими розді-ловими знаками, кількість прогалин не обмежена.
6) Тестування програми провести на варіантах вхідної інформації, які передбачають різні си-туації у границях обмежень у постановці задачі. Аналіз результатів необхідно провести са-мостійно до демонстрації програми викладачу та зафіксувати тести у зошиті.
7) Програма повинна супроводжуватися коментарем, якій містить в собі: П.І.Б., шифр групи, повну умову завдання, примітки (якщо необхідно).
8) При наявності будь-яких обмежень на вхідну інформацію, або на алгоритм, вони повинні бути зазначені в коментарі після умови завдання.


вот типа требования...но они на укр языке)))
спасибки большое)) сейчас буду смотреть...

Добавлено через 4 минуты
а у меня выдает ошибку на
#include <sstream>
у меня ВС++3.11...
а как такой инклуд записать в С?
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 20:11     Найти самое длинное и самое короткое слово в предложении #10
убери его - он не нужен, на всяк пож написала
..извини, я украинский не знаю (
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 20:16  [ТС]     Найти самое длинное и самое короткое слово в предложении #11
Требования к реализации: 1) Начальные данные вводятся из клавиатуры с организацией необходимого диалога с пользователем, используя элементарное форматированное введение-выведение. 2) Использование указателей для доступа к элементам обработки. 3) Превращение строк происходит в той же области памяти, если это не оговорено в условии задания. 4) Использование встроенных функций работы со строками. 5) Если не оговорено отдельно, слова в предложениях могут отделяться любыми розделительными знаками
у меня теперь 5 ошибок пишет....

Цитата Сообщение от liebe Посмотреть сообщение
string s1=".!?", s2=" ,;-:";
тут

Цитата Сообщение от liebe Посмотреть сообщение
for (i=0;i<s1.length();i++)
и тут

Цитата Сообщение от liebe Посмотреть сообщение
for (i=0;i<s2.length();i++)
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 22:36     Найти самое длинное и самое короткое слово в предложении #12
даже не знаю...у меня не выдает никаких ошибок... придется ждать помощи от других...а расширение какое?
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 22:39  [ТС]     Найти самое длинное и самое короткое слово в предложении #13
.срр
ага надеюсь помогут)) спасибки тебя большое))
интересно в чем же проблема....просто пишет что необьявленны "string","s1","s2"
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 22:44     Найти самое длинное и самое короткое слово в предложении #14
сейчас он не знает что такое "string" - думает что это имя переменной, а тип не указан..тоже самое для s1,s2 ну и соответственно все что с этим классом связано тоже не знает
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 22:54  [ТС]     Найти самое длинное и самое короткое слово в предложении #15
liebe, та я поняла что он не знаю что это такое..просто я так поняла нужно правильно обьявить тип стринг и ве ошибки исчезнут)верно?
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 23:52     Найти самое длинное и самое короткое слово в предложении #16
да )) только я не знаю как это сделать в ВС++ 3.11...я делала в 6-ом ВС - там все работает

Добавлено через 44 минуты
попробуй переписать
C++
1
2
3
 char *s1,*s2; // вместо string s1=".!?", s2=" ,;-:";
 s1=".!?"; 
 s2=" ,;-:";
а в цикле вместо s1.length() написать strlen(s1) (тоже самое для s2)
C++
1
2
3
...
for (i=0;i<strlen(s1);i++)
...
все остальное без изменений.надеюсь поможет
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
25.02.2010, 23:59  [ТС]     Найти самое длинное и самое короткое слово в предложении #17
Цитата Сообщение от liebe Посмотреть сообщение
strlen
не читает..может какой то инклуд надо подключить?
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
26.02.2010, 00:08     Найти самое длинное и самое короткое слово в предложении #18
у меня только это перед int main()
C++
1
2
3
#include <iostream>
using namespace std;
...
может stdlib.h поможет..
а вообще эта функция определения длины строки. Эти строки (s1 и s1) - константы, ты можешь сама посчитать сколько там символов (то есть узнать длину) и написать точную цифру...
ta_4to
 Аватар для ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
26.02.2010, 00:18  [ТС]     Найти самое длинное и самое короткое слово в предложении #19
ниче не помогает((( интересно в чем причина....пишет что тип функция не корректна...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2010, 00:26     Найти самое длинное и самое короткое слово в предложении
Еще ссылки по теме:

C++ Ввести строку, содержащую несколько слов. Определить самое длинное и самое короткое слово
Найти самое длинное слово в предложении и напечатать его в обратном виде C++
Определить самое длинное и короткое слово C++

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

Или воспользуйтесь поиском по форуму:
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
26.02.2010, 00:26     Найти самое длинное и самое короткое слово в предложении #20
нда...а у меня и так, и так съел...
посчитай сама длину в цикле - не парься ))) или точную цифру напиши прям в цикле )) потом может кто еще все-таки заглянет сюда и посоветует, а так тяжело пальцем в небо тыкать не имея ВС 3.11

вообще говоря, у тебя в задании написано в пункте 4 использовать встренные функции работы со строками...эти два цикла for нужны были для того чтобы узнать пренадлежит ли введенный символ строке (то есть является ли он разделительным)- для этого есть спец. фукнция, можешь ее использовать (правда я не помню какая, посмотри где-нить )
Yandex
Объявления
26.02.2010, 00:26     Найти самое длинное и самое короткое слово в предложении
Ответ Создать тему
Опции темы

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