Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со строкой, Простейшие задачки 
:(
    Опции темы
Mick Winder
  Дата 18.2.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Доброго вечера, народ! smile
Предлагаю для решения две задачки.
1. Дана строка из неизвестного количества символов. smile Как из этой строки заполучить последний символ?
2. Дана строка из неизвестного количества символов. Известно, что строка состоит из чисел и маленьких букв латинского алфавита. Вопрос. smile Как заполучить строку, состоящей только из чисел?

PM MAIL   Вверх
Fedor
Дата 18.2.2005, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата(Mick @ 18.2.2005, 17:43)
Дана строка

что такое строка? Последовательность символов, заканчивающаяся переводом каретки? Тогда в первой задаче идешь в цикле по строке пока не достигнешь символа #13
Во второй задаче так само идешь по строке до конца и выбираешь символы-числа, созраняешь их например в другую строку


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Cheba
Дата 18.2.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: нет
Всего: 62



Последний символ строки:
Код
str[length(str)]


Взять из строки только цифры:
Код
function numStr(str: String): String;
var
 i: Integer;
 d: String;
begin
 d := '';
 for i := 1 to length(str) do
  if (str[i] >= '0') and (str[i] <= '9') then
    d := d + str[i];
 numStr := d;
end;


Задачи действительно простые. Взялся написать только что-бы язык не забыть. smile
Подумав, и новичок сможет решить их.
PM MAIL ICQ   Вверх
Fedor
Дата 19.2.2005, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Cheba
Цитата(Mick @ 18.2.2005, 17:43)
Дана строка из неизвестного количества символов


Цитата(Cheba @ 18.2.2005, 22:21)
str[length(str)]


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

В общем, ждем разъяснения Mick Winder


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Pakshin A. S.
Дата 20.2.2005, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Код

var
c,c0:char;
begin
read(c);
while not eoln do {или c <> eoln, не помню точно}
  begin
    c0:=c;
    read(c);
  end;
writeln;
writeln(c0);
end.

Код

var
c:char;
begin
read(c);
while c <> eoln do
  begin
   if c in ['1'..'0'] {не помню точно таблицу кодов}
    then
     write(c);
   read(c);
  end;
end.

PM   Вверх
Cheba
Дата 20.2.2005, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: нет
Всего: 62



Pakshin A. S.
В первом примере стоит показывать не с0, а с. Иначе покажет предпоследний символ.

Во втором примере две ошибки.
eoln - возвращает boolean.
И в ASCII цифры идут от 0 до 9.

Таким образом получится такое:
Код
var
c:char;
begin
read(c);
while not eoln do
  begin
   if c in ['0'..'9'] { а я помню;) }
    then
     write(c);
   read(c);
  end;
end.


PM MAIL ICQ   Вверх
Mick Winder
Дата 21.2.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Молодцы, ребятки! smile
А теперь то, что я имел в виду... smile

Код

var
S, B: String;
i: Integer;
begin
S:= 's23abc'; // для примера
// Последний символ строки
B:= Copy(S, length(S), 1);

// Полученная строка, состоящая только из чисел
B:='';
for i:=1 to length(S) do begin
if S[i] in ['0'..'9'] then
B:= B + S[i];
end;


smile
Добавлено @ 11:35
Цитата(Cheba @ 18.2.2005, 23:21)
Последний символ строки:
Код
str[length(str)]



Это тоже правильно. Просто замечательно!!!

Это сообщение отредактировал(а) Mick Winder - 21.2.2005, 11:31
PM MAIL   Вверх
Cheba
Дата 21.2.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: нет
Всего: 62



Я так понял, что я написал именно так, как ты хотел?
PM MAIL ICQ   Вверх
Mick Winder
Дата 21.2.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Цитата(Cheba @ 21.2.2005, 15:52)
Я так понял, что я написал именно так, как ты хотел?

Да!
PM MAIL   Вверх
Cheba
Дата 21.2.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: нет
Всего: 62



А где благодарность? smile
PM MAIL ICQ   Вверх
Mick Winder
Дата 24.2.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Цитата(Cheba @ 21.2.2005, 16:20)
А где благодарность? smile

Премного благодарен, сударь! smile
Жму крепко твою руку! smile
PM MAIL   Вверх
Cheba
Дата 24.2.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: нет
Всего: 62



Всегда к вашим услугам. smile

А теперь, наверное, хватит офтопить.
PM MAIL ICQ   Вверх
Guest
Дата 14.4.2005, 18:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Знаю что задача не космическая но чет дойти не могу пАмагите ПЛИЗ"!!

Дана произвольная строка, состоящая из букв латинского алфавита. Удалить все согласные буквы
и подсчитать кол-во произведенных удалений....

Препод достал....
  Вверх
Guest
Дата 14.4.2005, 18:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Или вот: Дана произвольная строка. Из каждой группы идущих подряд букв удалить все буквы расположенные на нечетных позициях...
  Вверх
Fedor
Дата 14.4.2005, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Guest
Во-первых зарегестрируйся
Во-вторых прочитай правила форума: http://forum.vingrad.ru/index.php?s=&act=SR&f=27
В-третьих выкладывай код с пояснением что именно не получается. За тебя задачи решать тут мало кто захочет!


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Негодяй
Дата 14.4.2005, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Порядочный
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Регистрация: 13.2.2005
Где: Kazakhstan, Almat y

Репутация: нет
Всего: 32



Цитата(Guest @ 14.4.2005, 18:48)
Или вот:  Дана произвольная строка. Из каждой группы идущих подряд букв удалить все буквы расположенные на нечетных позициях...

держи!

Код

var s:string;
i:integer;
begin
read(s);

i:=1;
repeat
delete(s,i,1);
inc(i);
until i>=length(s);
write(s);
end;


Это сообщение отредактировал(а) Негодяй - 14.4.2005, 19:51
PM MAIL   Вверх
Hidrag
Дата 14.4.2005, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: нет
Всего: 25



Негодяй
smile ну ну, помог челу smile


--------------------
user posted image
PM WWW ICQ   Вверх
Негодяй
Дата 14.4.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Порядочный
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Регистрация: 13.2.2005
Где: Kazakhstan, Almat y

Репутация: нет
Всего: 32



Цитата(Hidrag @ 14.4.2005, 20:11)
Негодяй
smile ну ну, помог челу smile

мне второй день занятся нечем smile

Цитата
группы идущих подряд букв


Код

var s:string;
i:integer;
begin
s:='abc de  fgh';

i:=1;
repeat
delete(s,i,1);
if s[i]=' ' then
continue;
inc(i);
until i>=length(s);
write(s);
end;


Это сообщение отредактировал(а) Негодяй - 14.4.2005, 20:26
PM MAIL   Вверх
Guest
Дата 15.4.2005, 08:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну спасибо тебе чувак....знал я что тут занятся кому-нибудь нечем...


И еще интересует вопрос....как мне вбить согласные буквы в массив...или че там с ними делать....и потом если они будут встречатся в строке удалить их нафиг???
  Вверх
Негодяй
Дата 15.4.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Порядочный
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Регистрация: 13.2.2005
Где: Kazakhstan, Almat y

Репутация: нет
Всего: 32



Цитата(Guest @ 15.4.2005, 08:08)
ну спасибо тебе чувак....знал я что тут занятся кому-нибудь нечем...


ну развеселил smile smile smile

Цитата
И еще интересует вопрос....как мне вбить согласные буквы в массив...или че там с ними делать....и потом если они будут встречатся в строке удалить их нафиг???


Цитата
Дана произвольная строка, состоящая из букв латинского алфавита. Удалить все согласные буквы
и подсчитать кол-во произведенных удалений....


с этой задачей тоже проблем нет, делай так: делаешь множество из согласных букв из латинского алфавита, и по-символьно сравиваешь введённую строку с элементами множества, после чего удаляешь символ и наращиваешь счётчик таких удалений. Вообщем из этого следует почитай литературу про множества поучись с ним работать - вот и всё твой решение.
Чего не понятно будет спрашивай? smile

PS да и зарегистрируейся или хотя бы назовись как-нибудь, Guest smile
PM MAIL   Вверх
Негодяй
Дата 15.4.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Порядочный
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Регистрация: 13.2.2005
Где: Kazakhstan, Almat y

Репутация: нет
Всего: 32



PM MAIL   Вверх
BeNDeR
Дата 15.4.2005, 17:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











все чуваки спасибо...выручили...терь буду на вашем рулезном форуме тусить ума набиратся...!!!
  Вверх
Алина
Дата 14.5.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.5.2005

Репутация: нет
Всего: нет



Удаляем из строки все согласные, решение по-тупому:

Код
String s,g;
....

read(s);
for i:=1 to len(s) do
  begin
    if s[i] not in['b','B','c', 'C',.....{тут последовательно прописать все-все согласные буквы}]
      then g=g+s[i];
end;
Writeln(g);

Len(s)-Len(g) - это количество удалений

Это сообщение отредактировал(а) Fedor - 14.5.2005, 18:16
PM MAIL   Вверх
Mager2005
Дата 14.5.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.4.2005

Репутация: нет
Всего: нет



Предлагаю, что б не прописывать и строчные и прописные буквы сделать следующее:

Код

b:char;
========
for i:=1 to length(s) do
begin
b:=upcase(s[i]);
if b not in ['B','C', .......'Z'] then g:=g+s[i];
end;
=========


a можно еще проще:
Код

===========
b:=upcase(s[i]);
if b in ['A','E','I','O','U'] then g:=g+s[i];
===========

У нас ведь строка состоит только из латинских букв smile
PM MAIL ICQ   Вверх
Fantasist
Дата 20.5.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Цитата(Mager2005 @ 14.5.2005, 14:59)
a можно еще проще:


А еще проще:

Код

if UpCase(s[i]) in ['A','E','I','O','U'] then g:=g+s[i];





--------------------
Волны гасят ветер...
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1285 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.