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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2010, 23:32   #1
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
Сообщение последние слово(с++)

Здравствуйте, нужно из строки вывести последние слово, мой код работает, но только не проходит тест когда строка заканчивается на пробел... Вот мой код:

#include <iostream>

using namespace std;

int main()
{
int a;
char ch[1000];
cin.getline(ch,1000);

for (int i=0; i<strlen(ch); i++)
{
if (ch[i]==' ')
a=i;}
for (int i=a+1; i<strlen(ch); i++)
{
if (islower(ch[i]))
ch[i]=toupper(ch[i]);
if(isalpha(ch[i]))
cout << ch[i];
}
cout<<" ";
return 0;
}
jambas92 вне форума Ответить с цитированием
Старый 07.11.2010, 00:16   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

введите в программу еще 1 цикл
Код:
for (int i=strlen(ch)-1;i>0;i--)
{
if (ch[i]!=' ')
 {
 neProb=i;
 break;
 }
}
функция находит последний символ не равный пробелу, с него и начинайте
это засуньте после cin.getline
и замените в цикле
for (int i=0;i<strlen(ch);i++)
на
for (int i=0;i<neProb;i++)

а вообще лучше поиск пробела начинать с конца строки, быстрее будет, если будете обрабатывать громадные файлы
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 07.11.2010 в 00:24.
kaljan775 вне форума Ответить с цитированием
Старый 07.11.2010, 00:25   #3
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

Спасибо за быструю помощь!!!
jambas92 вне форума Ответить с цитированием
Старый 07.11.2010, 00:33   #4
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
Печаль дописать код(с++)

что то компилирую и не выходит
если добавить ваш код то получается
for (int i=strlen(ch)-1;i>0;i--)
{
if (ch[i]!=' ')
{
neProb=i;
break;
}
}

for (int i=0;i<neProb;i++)
{
if (ch[i]==' ')
a=i;}
for (int i=a+1; i<strlen(ch); i++)
{
if (islower(ch[i]))
ch[i]=toupper(ch[i]);
if(isalpha(ch[i]))
cout << ch[i];
}
jambas92 вне форума Ответить с цитированием
Старый 07.11.2010, 00:34   #5
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

char neProb=i; ->???
jambas92 вне форума Ответить с цитированием
Старый 07.11.2010, 00:50   #6
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

int, это же индекс
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 07.11.2010, 01:10   #7
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
Хорошо дописать код(с++)

мммм... все вышло огромное спасибо,только здесь вместо этого
for (int i=strlen(ch)-1;i>0;i--)
нужго ввести
for (int i=strlen(ch)-2;i>0;i--)
jambas92 вне форума Ответить с цитированием
Старый 07.11.2010, 01:13   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

почему, ch[strlen(ch)] - это '\0' конец строки, -1 - или непробельный символ. или пробел, ничего в принципе не изменится
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 07.11.2010, 01:29   #9
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

будет for (int i=strlen(ch)-2;i>0;i--) потому что в конце строки будет пробел и знак конец строки
jambas92 вне форума Ответить с цитированием
Старый 07.11.2010, 01:53   #10
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

ну, можно и так, смысл не изменится
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дле последние новости sergeiqwe PHP 0 11.09.2010 13:29
Сделайте, плиииз, последние проги!!! BeaU Паскаль, Turbo Pascal, PascalABC.NET 5 05.06.2009 23:30
Последние значение цикла MAKEDON Общие вопросы C/C++ 1 02.03.2009 13:46
последНИЕ 3 символа... PAVEL315 Общие вопросы Delphi 6 23.02.2007 11:20