C/C++ - Слово написанное больше всех

Аватара пользователя
Vunderkind

C/C++ - Слово написанное больше всех

Сообщение Vunderkind »

Надо написать функцию которая выводит последнее слово.Первая строка должна содержать одну линию, что является не более 1000 знаков с пробелами и вывод должен быть только слова с большими буквами.Прога не должна быть чувствительна к регистру(т,е если последовательность заканчивается на Can, то выводить CAN, если на can то тоже выводить CAN )

Ввод

Wert works and Buffalo

Вывод

BUFFALO

---------------------------------------------------------------------------------------------

Ввод

Can you can the can with can ?

Вывод

CAN
Аватара пользователя
Vunderkind

Re: C/C++ - Слово написанное больше всех

Сообщение Vunderkind »

Извините Админ,я неправильно написал тему задачи,оно почему то у вас не редактируется
Аватара пользователя
lxa85

Re: C/C++ - Слово написанное больше всех

Сообщение lxa85 »

Vunderkind, какие будут предложения по поиску этого самого последнего слова?

Как оно вообще определяется - последнее слово?

Всмысле буквально, как термин, что оно обозначает?

Последнее слово - это ...

Как только этот термин будет определен, решать задачу станет намного проще.
Аватара пользователя
Vunderkind

Re: C/C++ - Слово написанное больше всех

Сообщение Vunderkind »

Вот код который я написал

#include



using namespace std;



int main()

{

int a;

char ch[1000];

cin.getline(ch,1000);



for (int i=0; i
Аватара пользователя
lxa85

Re: C/C++ - Слово написанное больше всех

Сообщение lxa85 »

Vunderkind, я тебя не зря попросил дать определение "последнему слову".

Пока ты четко не напишешь что ты ищешь и не поймешь суть, ты будешь продолжать "тыкаться носом в стенку".

Если делать "заплатку" к данному коду, то вводи еще проверки.

И да, прокомментируй код.
Аватара пользователя
Vunderkind

Re: C/C++ - Слово написанное больше всех

Сообщение Vunderkind »

Извините,я не правильно взял пример,и нет никакого определения "последнее слова"Вот правильный пример:

Вводим

Apple arm Test (здесь "Test"является последним словам в последовательности)

Выводит

TEST(и выводит слова большими буквами)

Вводим

Enter qwerty goal !(если кончается на символы то все равно выводит посл. слова т.е goal)

Выводит

GOAL
Аватара пользователя
lxa85

Re: C/C++ - Слово написанное больше всех

Сообщение lxa85 »

Так, ладно, пойдем с другой стороны.

Ответь, на вопрос "Что ты делаешь?" или "Что тебе надо сделать?" простыми словами, не касаясь программирования и кодов.

Чтобы пятиклашка тебя понял.



P.S. Сейчас главное не ерепенься(если чего), а правильно отвечай на вопросы. Их тут 5 от силы. После чего свою ошибка тебе станет прозрачна до нЕльзя.
Аватара пользователя
Vunderkind

Re: C/C++ - Слово написанное больше всех

Сообщение Vunderkind »

Хорошо,кажется у меня не получится найти с тобой общий язык.У меня тебе только 1 вопрос, есть ли что-нибудь которое определяет символ?
Аватара пользователя
lxa85

Re: C/C++ - Слово написанное больше всех

Сообщение lxa85 »

по ASCII кодам и по порядковому номеру?

Банальным сравнением с заданным набором?

символ - это все что НЕ символ?
Аватара пользователя
hackroute

Re: C/C++ - Слово написанное больше всех

Сообщение hackroute »

определись что есть слово, затем что есть последнее к примеру:



"Apple arm Test"

Выводит

"TEST"



Вводим

"Enter qwerty goal !"

Выводит

"GOAL"



а вот если так



Вводим

"Enter qwerty goal1 ?"

Выводит

"GOAL" или "GOAL1" или "QWERTY"



Вводим

"Enter qwerty goal fuck!!!me !"

Выводит

"GOAL" или "FUCK!!!ME" или "ME" вот когда определишься сможешь создать проверку на то является ли слово "словом", и соответственно получишь нужный результат, надо получить ординальное значение символа ORD(string) затем сравнить входит ли он в допустимые пределы например "A".."Z" и "a".."z" (их ординальные значения соответственно: 65..90 и 97..122)

если не входит то надо определить что с этим символом делать, надо ли его вырезать из слова или игнорировать слово или еще что, определи задачу еще конкретней тогда появится решение, так же незабудь про проверку на то действительно ли в строке 1000 символов, а вдруг больше ? крит тогда чтоли?

(аж потянуло на программинг, установил сишарп Изображение





это если для каждой строки надо находить последнее слово





Код:

Код: Выделить всё

public static byte Ord(char ch) { return System.Convert.ToByte(ch); }             
public static bool ismychar(char code)          
{bool result = false;              
  if (((Ord(code) >= 65) && (Ord(code) <= 90)) || (((Ord(code) >= 97) && (Ord(code) <= 122))))
  result = true;             
  return result;          
}            
private void button1_Click(object sender, EventArgs e)          
{          
  int i, j;              
  for (i = 0; i< listBox1.Items.Count; i++)              
 {string lastword = "";                  
   string temps = "";                  
   string s = listBox1.Items[i].ToString();
   for (j = 0; j < s.Length; j++)
  {
    if (ismychar(s[j])) { temps = temps + s[j]; }
    else {if (s[j].ToString() == " ")  {if (temps.Length > 0) lastword = temps; temps = "";}}}
    if (temps.Length > 0) lastword = temps;
    if (lastword.Length > 0) { listBox2.Items.Add(lastword.ToUpper());
  };
}

в твоем же алгоритме если пробел был перед вопросом "ффф ?" то конечно он ничего не выведет ведь нету символов после пробела для выведения, надо сохранять последнее найденое слово "temps.Length > 0) lastword = temps;" и обнулять временую переменную для поиска следующего "temps = "";", либо тебе надо обнулять переменную когда после пробела найден первый символ подходящий под условия "буквы слова" если обнаружен пробел это ведь еще не значит что за ним есть слово
Ответить

Вернуться в «Программирование и базы данных»