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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2010, 23:32   #1
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию печать третьего слова в строке

подскажите как вывести на печать третье слово в строке, получается только последнее

Код:
program slovo;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type str30=string[30];
var
s:str30;
begin
writeln('vvedite stroku');
readln(s);
begin
While pos(' ',s)<> 0 do Delete(s,1,pos(' ',s));
end;
writeln(s);
readln
end.
shelest вне форума Ответить с цитированием
Старый 19.02.2010, 23:44   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Циклом записывай в строку, после второго пробела(или запятой), слово.

Последний раз редактировалось Базиля; 19.02.2010 в 23:46.
Базиля вне форума Ответить с цитированием
Старый 20.02.2010, 00:16   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

2Базиля, а если перед первым словом стоит пробел или между словами много пробелов? Тогда ваш вариант не сработает
А что если так:
цикл по всей строке, если символ не равен пробелу(то есть мы нашли слово), увеличиваем счетчик слов, далее пока не встретим следующий пробел(конец слова) увеличиваем индекс символа

на Си это будет выглядеть примерно так

Код:
#include <stdio.h>
#include <string.h>

int main(void)
{
     char str[] = "  abcd bcde    efg  ";
     int i, countWord=0;
     char* tmp="";
     for(i=0; i<strlen(str); i++)  {
            if(str[i] != ' '){
               if(countWord==3)  {
                      while(str[i] != ' ') printf("%c", str[i++]);
                      break;
               }
                countWord++;
                while(str[i] != ' ') i++;
            }
     }
     
     return 0;
}
писал код прямо тут, но уверен, что будет работать
NiCola999 вне форума Ответить с цитированием
Старый 20.02.2010, 00:32   #4
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

к продолжению
Цитата:
Базиля
Если пробел, смотрим на второй знак, если пробел дальше..и так до слова) используй регулярные выражения...
dampirik вне форума Ответить с цитированием
Старый 20.02.2010, 10:50   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
получается только последнее
Код:
While pos(' ',s)<> 0 do Delete(s,1,pos(' ',s));
прежде чем удалять считай сколько слов ты уже удалил
k:=0;
While pos(' ',s)<> 0 do begin Delete(s,1,pos(' ',s)); k:=k+1; end;

P.S. это только подсказка почему, а как додумай сам

подсказка оператор break вызывает завершение цикла
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.02.2010 в 10:54.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена символов на слова в строке Shihmars Общие вопросы C/C++ 3 24.01.2010 18:51
Си. Слова в строке savra Помощь студентам 3 18.12.2009 16:52
удалить повторяющиеся слова в строке Андрей.12 Помощь студентам 0 15.12.2009 18:51
Минимальная длинна слова в строке Anarki Общие вопросы C/C++ 7 24.09.2009 20:39