Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 14:26   #1
*Надежда*
Пользователь
 
Регистрация: 20.11.2012
Сообщений: 12
Вопрос Требуется найти в строке самое длинное слово (С++)

Ребята!) Помогите, пожалуйста, написать кусочек программы на С++, который будет искать в строке, введенной пользователем, самое длинное слово и выводить его на экран. Заранее огромное спасибо)
*Надежда* вне форума Ответить с цитированием
Старый 20.11.2012, 14:38   #2
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

ищешь пробел в строке,
вырезаешь слово1
ищешь следующий пробел
вырезаешь слово2
сравниваешь длину слова1 и слова 2
сохраняешь длину наибольшего
и вырезаешь так далее пока не достигнешь нулевого символа
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 20.11.2012, 16:33   #3
*Надежда*
Пользователь
 
Регистрация: 20.11.2012
Сообщений: 12
По умолчанию

Это мне ясно, а как это на С++ записать?
*Надежда* вне форума Ответить с цитированием
Старый 20.11.2012, 17:00   #4
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

Код:
// Vivod_slova.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <strstream>
#include <sstream>
#include <Windows.h>
using namespace std;

int main()
{
	char sl1[20], sl2[20];
	char *str2;
	string str, slovo1, slovo2;
	getline(cin, str);
	str+=" ";
	int kol_sim=0;
	for(int i=0; ; i++)
		if (str[i]==' '){
			str.erase(0,i+1);
			kol_sim=i;
			sl1[i]='\0';
			break; 
		}
		else 
			sl1[i]=str[i];

	int kol_sim2=0;
	for(int i=0;i<=str.length() ; i++)
		if (str[i]==' '){
			str.erase(0,i+1);
			sl2[i]='\0';
			kol_sim2=i;
			i=0;
			if (kol_sim<kol_sim2) {
				for (int i=0; i<=kol_sim2;i++)
					sl1[i]=sl2[i];
					kol_sim=kol_sim2;
			}
		}
		else 
			sl2[i]=str[i];
	cout <<"\n" <<  sl1 << "\n";
	system("pause");
	return 0;
}
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 20.11.2012, 17:00   #5
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

думаю можно и проще, но со строками не работал в с++
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 20.11.2012, 17:16   #6
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

http://www.programmersforum.ru/showthread.php?t=172086
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 20.11.2012, 17:19   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Так в некотором смысле проще:
Код:
bool IsDelimiter(char c){
  static const char* delimiters = " ,.!?;\"()";
  for(char* i=delimiters; *i; ++i) if(*i==c) return true; return false;
}

const char* PrintLongestWord(const char* str){
  char* maxWord = NULL, *cur=str, *lastWord;
  sizet_t maxLength=0, curLength;
  while(true){
    while(IsDelimiter(*cur)) ++cur;
    if(*cur == '\0') break;
    lastWord = cur;
    curLength = 0;
    while(!IsDelimiter(*cur) && *cur!='\0') ++cur, ++curLength;
    if(curLength > maxLength) {
      maxWord = lastWord;
      maxLength = curLength;
    }
  }
  return maxWord;
}

void PrintWord(const char* wordStart){
  for(char* c=maxWord; !IsDelimiter(*c) && *c!='\0'; ++c) printf("%c", *c);
}
Abstraction вне форума Ответить с цитированием
Старый 20.11.2012, 19:16   #8
*Надежда*
Пользователь
 
Регистрация: 20.11.2012
Сообщений: 12
По умолчанию

Спасибо большое
*Надежда* вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# найти самое длинное и самое короткое слово в строке и вывести их Зеленый Чай Помощь студентам 4 06.01.2012 18:40
Найти самое длинное слово в строке (массив) bot.bat Помощь студентам 2 05.11.2011 00:40
найти самое длинное симметричное слово Си++ xVeteRx Помощь студентам 3 10.04.2009 21:25
в текстовом файле в каждой строке наити самое длинное слово Storm Помощь студентам 4 04.06.2008 15:56
С++ Найти самое длинное слово строки k0z7_g0b1in Общие вопросы C/C++ 3 22.04.2007 17:37