Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
-7 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 51
1

Удалить букву из слова.

13.05.2011, 19:01. Показов 6133. Ответов 9

Author24 — интернет-сервис помощи студентам
Здравствуйте, прошу помочь с выпопленением задания>
Напечатать все слова, удалив из них все буквы «о» стоящие на нечетных местах
Заранее спасибо!
 Комментарий модератора 
Здесь опубликована только половина условия задачи. Постановка задания строится из двух частей: что дано и что надо получить. В каком виде представлены входные и выходные данные? Первой части: "что дано" - нет. Слова могут быть заданы по-разному: в виде массива слов, в виде строки, могут быть прочитаны с консоли или прочитаны из файла. Это надо уточнить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2011, 19:01
Ответы с готовыми решениями:

Удалить букву из слова
Доброго времени суток. Нужна помощь по созданию проекта: Удалить из каждого слова букву (букву и...

Из каждой очередной пары букв слова строки удалить вторую букву
Из каждой очередной пары букв слова строки удалить вторую букву . Тип списка: циклический ...

Создать список из слов, поменяв каждую букву слова на букву, стоящую на расстоянии тринадцати букв в алфавите
Помогите со списками. Не понимаю как написать программу подобного рода. Создать свой список из букв...

Перенести первую букву в конец слова. Все остальные слова удалить
Дана строка. Словом текста считается любая последовательность букв латинского алфавита; между...

9
58 / 57 / 28
Регистрация: 17.01.2011
Сообщений: 181
13.05.2011, 20:03 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
var s:string;
i:integer;
begin
s:='Sator arepo tenet opera rotas';
i:=1;
while i<length(s) do
begin
if (s[i]='o') or (s[i]='O') then delete(s,i,1);
inc(s,2);
end;
end;
---
Mawrat: Это немного не то. Видимо, имеется в виду чётность/нечётность позиции в пределах слова, а не в пределах всей строки.
1
-7 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 51
15.05.2011, 10:08  [ТС] 3
Цитата Сообщение от sanchosss Посмотреть сообщение
Напечатать все слова, удалив из них все буквы «о» стоящие на нечетных местах
Заранее спасибо!
в виде строки
именно это, спасибо, осталось дождаться помощи.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
15.05.2011, 11:59 4
Если надо распечатать все слова по отдельности, удаляя в них на нечётных позициях буквы "О, о", тогда так:
Применено множество ['О', 'о', 'O', 'o'], которое содержит русские и английские буквы "О".
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//Выделение слов из текста и удаление из них тех букв "О, о",
//которые расположены в слове на нечётных позициях.
procedure TForm1.Button3Click(Sender: TObject);
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, sW : String;
  i, j, Pos1, Len, LenW : Integer;
begin
  Memo2.Clear;
  //Исходный текст.
  S := Memo1.Text;
  Len := Length(S);
 
  //Обработка текста.
  Pos1 := 0;
  for i := 1 to Len do begin
    //Пропускаем разделители.
    if S[i] in D then Continue;
    //Отслеживаем начало слова.
    if (i = 1) or (S[i - 1] in D) then Pos1 := i;
    //Отслеживаем конец слова.
    if (i = Len) or (S[i + 1] in D) then begin
      LenW := i - Pos1 + 1;
      sW := Copy(S, Pos1, LenW);
      //Удаление букв "О, о", стоящих на нечётных позициях.
      for j := LenW downto 1 do begin
        if (j mod 2 <> 0) and (sW[j] in ['О', 'о', 'O', 'o']) then
          Delete(sW, j, 1)
        ;
      end;
      //Запись в Мемо.
      Memo2.Lines.Add(sW);
    end;
  end;
end;
Если надо получить текст на основе исходного, в котором удалены все буквы "О, о", расположенные в словах на нечётных позициях, тогда можно решить так:
Со счётчиком позиций:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//Удаление в тексте тех букв "О, о", которые расположены в словах на
//нечётных местах.
//С применением счётчика позиций.
procedure TForm1.Button1Click(Sender: TObject);
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S1, S2 : String;
  //i - индекс символа в исходной строке.
  //j - индекс символа в строке результата.
  //Cnt - счётчик букв в слове. По значению этого счётчика мы будем определять
  //на чётном или нечётном месте стоит буква.
  //Len - длина исходного текста.
  i, j, Cnt, Len : Integer;
begin
  Memo2.Clear;
  //Исходный текст.
  S1 := Memo1.Text;
  Len := Length(S1);
 
  //Первоначально, длину строки, в которую поместим результирующий
  //текст, устанавливаем равной длине строки с исходным текстом.
  SetLength(S2, Len);
 
  //Обработка текста.
  j := 0;
  Cnt := 0;
  for i := 1 to Len do begin
    //Переписываем разделители.
    if S1[i] in D then begin
      Inc(j);
      S2[j] := S1[i];
      Continue;
    end;
    //Переписываем буквы слова, исключая буквы "О, о", стоящие
    //на нечётных местах.
    Inc(Cnt);
    //Буквы "О, о" - русские и английские.
    if not ( (Cnt mod 2 <> 0) and (S1[i] in ['О', 'о', 'O', 'o']) )
    then begin
      Inc(j);
      S2[j] := S1[i];
    end;
    //Отслеживаем конец слова и сбрасываем счётчик букв в слове.
    if (i = Len) or (S1[i + 1] in D) then Cnt := 0;
  end;
 
  //Переуснанавливаем длину строки результата в соответствие
  //с количеством добавленных в эту строку букв.
  SetLength(S2, j);
 
  //Ответ.
  Memo2.Text := S2;
end;
С применением флага-переключателя чётности/нечётности позиции:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//Удаление в тексте тех букв "О, о", которые расположены в словах на
//нечётных местах.
//С применением флага чётной/нечётной позиции.
procedure TForm1.Button2Click(Sender: TObject);
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S1, S2 : String;
  //i - индекс символа в исходной строке.
  //j - индекс символа в строке результата.
  //Len - длина исходного текста.
  i, j, Len : Integer;
  //True - буква на НЕчётном месте, иначе - False.
  Fl : Boolean;
begin
  Memo2.Clear;
  //Исходный текст.
  S1 := Memo1.Text;
  Len := Length(S1);
 
  //Первоначально, длину строки, в которую поместим результирующий
  //текст, устанавливаем равной длине строки с исходным текстом.
  SetLength(S2, Len);
 
  //Обработка текста.
  j := 0;
  Fl := False;
  for i := 1 to Len do begin
    //Переписываем разделители.
    if S1[i] in D then begin
      Inc(j);
      S2[j] := S1[i];
      Continue;
    end;
    //Переписываем буквы слова, исключая буквы "О, о", стоящие
    //на нечётных местах.
    Fl := not Fl;
    //Буквы "О, о" - русские и английские.
    if not ( Fl and (S1[i] in ['О', 'о', 'O', 'o']) )
    then begin
      Inc(j);
      S2[j] := S1[i];
    end;
    //Отслеживаем конец слова и сбрасываем флаг чётности/нечётности позиции.
    if (i = Len) or (S1[i + 1] in D) then Fl := False;
  end;
 
  //Переуснанавливаем длину строки результата в соответствие
  //с количеством добавленных в эту строку букв.
  SetLength(S2, j);
 
  //Ответ.
  Memo2.Text := S2;
end;
На всякий случай приложил архив с проектом.
Вложения
Тип файла: rar ProcStr.rar (164.4 Кб, 42 просмотров)
1
-7 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 51
15.05.2011, 12:39  [ТС] 5
Mawrat cпасибо, но мне бы полегче вариант, например - запись в едит,а не мемо, и результат в едит.
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
15.05.2011, 12:58 6
тупо сказать так !!! Замени слово Memo на Edit и больше ничего корректировать не нужно

---
Mawrat: Всё верно. Достаточно в коде поменять Memo на Edit и на форме тоже компоненты TMemo заменить на TEdit.


Добавлено через 13 минут
Цитата Сообщение от Arcor Посмотреть сообщение
и на форме тоже компоненты TMemo заменить на TEdit.
ну это само собой
0
-7 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 51
15.05.2011, 13:12  [ТС] 7
Затупил я парни, сори)

Добавлено через 10 минут
хех, еще одно задание нужно сделать, если от меня Вы еще не устали, сделайте, буду благодарен)
Вычислите выражение z(x)=n(x2)-n(sin3 x). При решении используйте функцию n:
0
58 / 57 / 28
Регистрация: 17.01.2011
Сообщений: 181
15.05.2011, 14:59 8
Функция будет выглядеть так:
Delphi
1
2
3
4
5
6
7
function n(x:real):real;
begin
if x <= 13 then
result := (-sqr(x)+9)
else
result := -(3/(x+1));
end;
А дальше просто вставлять в код формулу как она есть.
Кстати, что это означает: при Х<=13 одна формула, а при X>3 другая? это странно. Может быть, X>13? Я сделал для этого случая.
0
-7 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 51
15.05.2011, 16:57  [ТС] 9
Darth_Vaider,
Может быть, X>13? Я сделал для этого случая.
наверняка, завтра выясню точно.
А с кодом вашим я не разобрался, можете полностью весь выложить?
0
58 / 57 / 28
Регистрация: 17.01.2011
Сообщений: 181
15.05.2011, 17:52 10
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function n(x:real):real;
begin
if x <= 13 then//если X<=13
result := (-sqr(x)+9)//вычислить результат по первой формуле
else//иначе
result := -(3/(x+1));//вычислить результат по второй формуле
end;
.............................................
var z,x:real;
begin
x:=15;//берём значение х. Берите его откуда угодно.
z:=n(x*x)-n(sin(3*x));//вычисляем z
ShowMessage(inttostr(z));//выводим результат
end;
0
15.05.2011, 17:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2011, 17:52
Помогаю со студенческими работами здесь

Удалить среднюю букву из самого длинного слова и напечатать все слова на экран
Дано предложение. Напечатать все его слова, предварительно преобразовав каждое из них по следующему...

Удалить средную букву из самого длинного слова и напечатать все слова на экран
Дано предложение. Напечатать все его слова, предварительно преобразовав каждое из них по следующему...

Найти все слова в строке, начинающиеся на заданную букву и удалить из строки все слова, начинающиеся на заданную букву
2. Найти все слова в строке, начинающиеся на заданную букву и удалить из строки все слова,...

Удалить из строки слова на букву А
Введенная строка состоит из слов, разделённых пробелами. Удалить из неё слова на букву А. Почему...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru