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

Написать программу, которая находит самое длинное слово, встречающееся в предложении - C++

Восстановить пароль Регистрация
 
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
10.12.2013, 13:52     Написать программу, которая находит самое длинное слово, встречающееся в предложении #1
Задано предложение-строка. Написать программу, которая находит самое длинное слово, встречающееся в предложении.
когда ввожу строку, а в ней слова через пробел, так он читает только первое слово
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 13:52     Написать программу, которая находит самое длинное слово, встречающееся в предложении
Посмотрите здесь:

C++ написать программу, которая считывает текст из файла, находит самое длинное слово и определяет сколько раз оно встретилось в тексте
Написать программу, которая находит самое большое число из текста программы C++
C++ количество букв в слове, количество предложений, самое длинное слово в предложении
C++ Строки. В заданном тексте найти самое длинное слово и самое длинное предложение.
C++ Написать программу, которая находит в массиве самое маленькое нечетное число и показывает его на экран
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
10.12.2013, 13:55     Написать программу, которая находит самое длинное слово, встречающееся в предложении #2
1.
C++
1
2
char s[100];
std::cin.getline(s, sizeof(s));
2.
C++
1
2
3
4
#include <string>
//...
std::string s;
std::getline(std::cin, s);
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
10.12.2013, 14:04  [ТС]     Написать программу, которая находит самое длинное слово, встречающееся в предложении #3
а так будет работать? а то комп дико тормозит(
#include <iostream>
using namespace std;
int main()
{
char s[100];
cin.getline(s, sizeof(s));

cout<<"Vvedite stroku " <<endl;
cin>> s[100];
cout<<s[100] <<endl;

return 0;
}

Добавлено через 3 минуты
Цитата Сообщение от rangerx Посмотреть сообщение
1.
C++
1
2
char s[100];
std::cin.getline(s, sizeof(s));
2.
C++
1
2
3
4
#include <string>
//...
std::string s;
std::getline(std::cin, s);
а так будет работать? а то комп дико тормозит(
#include <iostream>
using namespace std;
int main()
{
char s[100];
cin.getline(s, sizeof(s));

cout<<"Vvedite stroku " <<endl;
cin>> s[100];
cout<<s[100] <<endl;

return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
10.12.2013, 14:13     Написать программу, которая находит самое длинное слово, встречающееся в предложении #4
C++
1
2
3
4
5
6
7
8
// объявляем строку максимальная длина которой 99 символов, +1 символ под '\0'(признак конца строки)
char s[100]; 
 
// вводим строку с клавиатуры
cin.getline(s, sizeof(s));
 
// выводим её на экран
cout << s << endl;
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
10.12.2013, 14:14  [ТС]     Написать программу, которая находит самое длинное слово, встречающееся в предложении #5
спасибо) с этим разобралась а не подскажете как подсчитать самое длинное слово?
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
10.12.2013, 17:09     Написать программу, которая находит самое длинное слово, встречающееся в предложении #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от kornelyk Посмотреть сообщение
а не подскажете как подсчитать самое длинное слово?
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
#include <iostream>
 
using namespace std;
 
struct Token {
  char* p; // указатель на вхождение слова в строку
  int n;   // длина слова
};
 
int main() {
  char s[100];
  cin.getline(s, sizeof(s));
 
  int n = 0;
  char* p = s;
  Token tk = {NULL, 0};
 
  while(true) {
    // перемещаем указатель к следующему слову
    while((*p != '\0') && (*p == ' '))
     ++p;
    // если дошли до конца строки и ничего не нашли, завершаем цикл
    if(*p == '\0')
      break;
    // вычисляем длину текущего слова...
    n = 0;
    while((p[n] != '\0') && (p[n] != ' '))
     ++n;
    // ... и сравниваем её с длиной слова наибольшего на данный момент
    if(tk.n < n) {
      // если она оказалось больше, то текущее слово на данном этапе запоминается как наибольшее
      tk.p = p; tk.n = n;
    }
    // пропускаем текущее слово и продолжаем поиск...
    p += n;
  }
 
  cout << "Result: ";
  for(int i = 0; i < tk.n; ++i)
    cout << tk.p[i];
  cout << '\n';
}
Добавлено через 4 минуты
Естественно, предполагается, что слова разделены пробелами.

Добавлено через 1 час 0 минут
ну и ещё вариант, без использования бесконечного цикла и break
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while(*p != '\0') {
  if(*p == ' ')
   ++p;
  else {
    n = 0;
    while((p[n] != '\0') && (p[n] != ' '))
     ++n;
    if(tk.n < n) {
      tk.p = p; tk.n = n;
    }
    p += n;
  }
}
Yandex
Объявления
10.12.2013, 17:09     Написать программу, которая находит самое длинное слово, встречающееся в предложении
Ответ Создать тему
Опции темы

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