Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
253 / 20 / 5
Регистрация: 30.10.2008
Сообщений: 68
1

Вывести слово данной строки, предшествующее первому из слов, содержащих букву 'a'

08.12.2008, 18:21. Просмотров 1102. Ответов 4
Метки нет (Все метки)

Задача: вывести слово данной строки, предшествующее первому из слов, содержащих букву 'a'

уже 3ий день не получается, не знаю что делать, у меня или бесконечный цикл получается или программа ничего не делает =)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2008, 18:21
Ответы с готовыми решениями:

Найти слово, предшествующее первому вхождению w в s1 (Составить блок-схему)
Даны две строки s1 и s2. Пусть w – первое из слов строки s1, которое есть и в строке s2. Найти...

Код не правильно работает (вывести значение предшествующее первому введенному максимальному(признак конца ввода - 0)
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <math.h> int main() { ...

Сформировать строку из слов исходной строки, содержащих заданную букву (dll-библиотека) - Assembler
Разработать dll-библиотеку на языке ассемблера с функциями обработки строк. Сформировать строку из...

Из второй строки вывести слово, содержащее хотя бы одну гласную букву из заданного слова первой строки
Даны две строки s1 и s2. Для слова w строки s1 вывести слово строки s2, которая содержит хотя бы...

4
Супер-модератор
8737 / 2447 / 139
Регистрация: 07.03.2007
Сообщений: 11,681
08.12.2008, 18:36 2
ну покажи свое творчество
0
253 / 20 / 5
Регистрация: 30.10.2008
Сообщений: 68
08.12.2008, 19:34  [ТС] 3
ну вот одна из моих бредовых идей, только не смейтесь

Код
program str;
uses crt;
var s,s1,s2:string;
    i,l,a,n:byte;
    f:boolean;
begin
writeln('input string');
readln(s);
l:=length(s);
a:=0;
n:=0;
i:=1;
while s[i]=' ' do
  inc(i);
while a=0 do
  begin
    s1:='';
    while (s[i]<>' ') and (i<=l) do
      begin
        s1:=s1+s[i];
        if (s[i]='a') and (n>0) then inc(a);
        inc(i);
      end;
    s2:=s1;
    i:=i+2;
    inc(n);
  end;
write(s2);
end.
не выходит из цикла while a=0, не могу понять почему
0
Супер-модератор
8737 / 2447 / 139
Регистрация: 07.03.2007
Сообщений: 11,681
09.12.2008, 10:37 4
в паскале не силен, может не все варианты учел, проверь, потом скажешь, что там у меня ч творчеством
Код
program str;
uses crt;
var s,s1,s2:string;
    i,l,a,n:byte;
    f:boolean;
begin
writeln('input string');
readln(s);
l:=length(s);
i:=2;
if(s[1] = 'a') then writeln('Empty') else begin
while i < l do
  begin
    if(s[i] = 'a') and (s[i - 1] = ' ') and (i <> 2) then
      break
    else
     inc(i);
  end;
a:=i - 2;
if(i <> l) then begin
  while a <> 0 do
    begin
      if (s[a] = ' ') then
        break
      else
       s1:= s[a] + s1;
      dec(a);
    end;
  writeln(s1);
end
else writeln ('Empty');
end;
readkey;
end.
0
253 / 20 / 5
Регистрация: 30.10.2008
Сообщений: 68
09.12.2008, 16:34  [ТС] 5
так, разобрался сам, вчера много думал, не мог уснуть и тд. и вот что придумал:

Код
program str;
uses crt;
var s,s1,s2:string;
    i,l,n:byte;
    a,f:boolean;

procedure read_word(s:string; var s1:string; var i:byte); {процедура считывает из строки s слово начиная с позиции i, и сохраняет его в строку s1}
  var l:byte;
  begin
    l:=length(s);
    s1:='';
    while (s[i]<>' ') and (i<=l) do
      begin
        s1:=s1+s[i];
        inc(i);
      end;
  end;

procedure skip_spaces(s:string; var i:byte); {процедура пропускает пробелы и устанавливает указатель i на следующую после последнего пробела позицию}
  begin
    while s[i]=' ' do
      inc(i);
  end;

function search_char(s1:string):boolean; {функция ищет в слове букву 'a'}
  var i,l:byte;
  begin
    search_char:=false;
    l:=length(s1);
    for i:=1 to l do
        if s1[i]='a' then search_char:=true;
  end;

begin
writeln('input string');
readln(s);
l:=length(s);
i:=1;
a:=false;
n:=0;
s1:=''; s2:='';
skip_spaces(s,i); 
if i>l then {если в строке одни пробелы, то завершение программы}
   write('err')
else
  begin
    while (i<=l) and (a=false) do
      begin
        skip_spaces(s,i);
        read_word(s,s1,i);
        inc(n); {счетчик слов}
        f:=search_char(s1);
        if (n>=2) and (f=true) then
          begin
            a:=true;
            write(s2);
          end;
        s2:=s1;
        s1:='';
        inc(i);
      end;
  end;
end.
может пригодится кому...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2008, 16:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти в предложении количество слов, начинающихся на ту же букву что и второе слово и вывести их на экран
Язык С++

При выводе выдаёт иеролифы. задача заключается в том, чтобы пользователь вводит слово и нужно вывести первую букву, всё слово и последнюю букву. TASM
.model small .stack 200h .data sInput db 13,10, &quot;Vvedite ctroky...

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

Определить число, предшествующее первому из введенных максимальных значений
С клавиатуры вводятся целые числа. Признак конца ввода – ноль. Определить число, предшествующее...

Строки. Из данной строки выделить подстроку символов, предшествующих первому пробелу. Определить, является ли она числом
Дана строка символов s1s2…sm, в которой могут встречаться цифры, пробелы, буква Е и знаки +, -....

Строки. Вывести на экран количество слов, которые начинаются на гласную букву
Написать прогу. Спросить у пользователя слова через запятую, в конце точка. Вывести на экран...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.