0 / 0 / 0 Регистрация: 21.08.2012 Сообщений: 8 |
|
1 |
|
Определить, есть ли в тексте заданное слово21.08.2012, 20:41. Показов 9618. Ответов 19
Не могу сделать без ошибок и все тут(
0 |
296 / 274 / 194 Регистрация: 03.05.2012 Сообщений: 570 |
|
21.08.2012, 20:49 |
2 |
Не могу сделать без ошибок и все тут( Покажи свой код с ошибкой,а мы подскажем как исправить.
1 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
21.08.2012, 21:28 |
4 |
Ev[G]eN, Думаю ссылка неудачная. Слова могут разделяться не только пробелами, слова могут переноситься, да и файл читать нужно. Кроме того не нужно проверять все слова, а только найти первое.
0 |
CodeR Фрилансер 3417 / 2814 / 3000 Регистрация: 08.02.2012 Сообщений: 8,546 Записей в блоге: 1 |
||||
22.08.2012, 09:03 |
5 |
|||
Решение
Файл in.txt должен быть создан и заполнен в корне диска C:
1 |
Paster Fob 296 / 274 / 194 Регистрация: 03.05.2012 Сообщений: 570 |
||||
22.08.2012, 11:40 |
6 |
|||
РешениеМой вариант:
0 |
Фрилансер 3417 / 2814 / 3000 Регистрация: 08.02.2012 Сообщений: 8,546 Записей в блоге: 1 |
|
22.08.2012, 11:42 |
7 |
Paster Fob, а теперь создай файл текстовый, набери туда
0 |
Puporev Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
22.08.2012, 11:42 |
8 |
|||
Например сторока
0 |
Viktorya_rb |
||||
22.08.2012, 15:53 |
9 |
|||
Да, в предыдущей программе оно будет считаться за слово! Вот правильный код:
|
КонецСвета Почетный модератор 7966 / 3937 / 2464 Регистрация: 30.10.2011 Сообщений: 5,377 |
||||
22.08.2012, 16:32 |
10 |
|||
Решениекак вариант до кучи =)
1 |
0 / 0 / 0 Регистрация: 21.08.2012 Сообщений: 8 |
|
22.08.2012, 19:05 [ТС] |
11 |
Проект project1.exe вызвал класс исключения ‘RunError(2)’ В чем проблема? ps: мне нужно создать файл, а не привязать его… Голова пухнет уже..все переделать пыталась, ничего не выходит(
0 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
22.08.2012, 19:11 |
12 |
Проект project1.exe вызвал класс исключения ‘RunError(2)’ Если нужно в Делфи, то туда бы и писали, а здесь Паскаль.
0 |
CodeR Фрилансер 3417 / 2814 / 3000 Регистрация: 08.02.2012 Сообщений: 8,546 Записей в блоге: 1 |
||||
22.08.2012, 20:59 |
13 |
|||
Решение
Проект project1.exe вызвал класс исключения ‘RunError(2)’ Сразу надо говорить…
0 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
22.08.2012, 21:01 |
14 |
0 |
Фрилансер 3417 / 2814 / 3000 Регистрация: 08.02.2012 Сообщений: 8,546 Записей в блоге: 1 |
|
22.08.2012, 21:11 |
15 |
Puporev, а Lazarus идентичен Delphi?мой код там от компилируется?
0 |
Puporev Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||||||
22.08.2012, 21:21 |
16 |
|||||||
РешениеArtem7, Я там не знаю есть ли консоль, а с формой точно как в Делфи. Добавлено через 2 минуты Добавлено через 5 минут
а то строку нужно вводить на краю… Добавлено через 43 секунды
0 |
Фрилансер 3417 / 2814 / 3000 Регистрация: 08.02.2012 Сообщений: 8,546 Записей в блоге: 1 |
|
22.08.2012, 21:27 |
17 |
Puporev, спасибо, да на счёт строки не заметил…
0 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
22.08.2012, 21:31 |
18 |
Не смотри что кода много, все что кроме твоего создано автоматом.
0 |
Фрилансер 3417 / 2814 / 3000 Регистрация: 08.02.2012 Сообщений: 8,546 Записей в блоге: 1 |
|
22.08.2012, 21:32 |
19 |
Puporev, Не по теме: вот это да…вот тебе и Lazarus с консолью
0 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
22.08.2012, 21:36 |
20 |
Так он и с формой такой страшный, это же по сути Free Pascal с наворотами…
0 |
|
Автор | Тема: Программа,позволяющая найти нужные слова в файле(pascal abc).Подобие поисковика. (Прочитано 12081 раз) |
0 Пользователей и 1 Гость смотрят эту тему. |
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
Как найти слова в строке?
, Нужно найти слова и их длину
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Из заданного предложения распечатать все слова, длина которых больше пяти символов! |
Eiden |
|
Несложно, но муторно Program zadacha; Const Syms = [‘;’,’.’,’,’,’ ‘,’:’,’-‘]; Var Source, Temp : String ; I : Byte ; Done : Boolean ; Begin Write(‘Enter string: ‘); ReadLn(Source); Done := False; I := 1; Temp := »; Repeat While (Not (Source[I] in Syms)) And (I<=Length(Source)) Do Begin Temp := Temp + Source[I]; Inc(I); End; If I = Length(Source) Done := True; If Length(Temp) > 5 Then WriteLn(Temp); Temp := »; Until Done; End. Хм, не так муторно, как думал |
Vesper |
|
Цитата Eiden, 4.02.04, 01:13
Then забыл Цитата Eiden, 4.02.04, 01:13
Имхо лучше проверять на [‘A’..’Z’,’a’..’z’] и без not. А вдруг там есть длинное число, скажем 100000? Тогда оно выведется. |
Eiden |
|
Неудивительно, я теперь только на C++ кодю Цитата Имхо лучше проверять на [‘A’..’Z’,’a’..’z’] и без not. А вдруг там есть длинное число, скажем 100000? Тогда оно выведется. Да, согласен. Но тогда уж и на ‘А’..’Я’,’а’..’п’,’р’..’я’. В итоге в коде исправляем две строчки: Syms = [‘A’..’Z’,’a’..’z’,’А’..’Я’,’а’..’п’,’р’..’я’] While (Source[I] in Syms) And (I <= Length(Source)) Do Ну про тот Then не забыть Сообщение отредактировано: Eiden — 04.02.04, 09:29 |
Юлия |
|
Скажите а каким образом предложение разбито не слова?? |
Eiden |
|
Оно разбито на слова. Слово — последовательность символом русского или латинского алфавита. |
Юлия |
|
Хорошо, а что тогда является разделителeм для слов!?? |
Some1 |
|
А как обычно: Добавлено в 04.02.04, 19:40: |
Юлия |
|
Temp:=» —-Непонятно что присваивается?? Программу почему то циклит, можете кто-то показать хоть пример как надо вводить предложение!!! |
Some1 |
|
Ну вот. Точно работает. Только принцип немного другой — проверяем с конца строки к началу. Что вобщем-то одно и то-же: const prepen=[‘;’,’:’,’!’,’?’,’,’,’.’,’ ‘,'»‘,’-‘]; var s:string; p,o:byte; begin write(‘Введите предложение: ‘); readln(s); p:=length(s); repeat if s[p] in prepen then dec(p) else begin o:=p; while (p>0) and not (s[p] in prepen) do dec(p); if o-p=5 then writeln(copy(s,p+1,5)); end; until p=0; end. |
Юлия |
|
Покажите пожалуйста в данной программе пример ввода предложения!! |
Eiden |
|
Цитата Temp:=» —-Непонятно что присваивается?? присваивается пустая строка, то есть ничего. Переменная типа String (строка) как бы обнуляется. Как программу циклит? |
Vesper |
|
кстати, программу циклит из-за того, что i не увеличивается, если мы вышли из цикла по «не-символу». То есть строчку Цитата Eiden, 4.02.04, 01:13 надо заменить на If I = Length(Source) Then Done := True Else Inc(I); ЗЫ: Опять Then пропустил. Ну это не страшно. Сообщение отредактировано: vesper1 — 07.02.04, 07:41 |
Eiden |
|
Цитата кстати, программу циклит из-за того, что i не увеличивается, если мы вышли из цикла по «не-символу». Угу, точно, спасибо! Просто привык такие вещи через цикл с постусловием делать (там i точно увеличивается), а тут что-то не подумал. Сообщение отредактировано: Eiden — 08.02.04, 20:24 |
Юлия |
|
Всем спасибо за помощь!!!! |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Pascal
- Следующая тема
[ Script execution time: 0,0592 ] [ 15 queries used ] [ Generated: 27.05.23, 10:20 GMT ]
Есть код для поиска строк:
procedure Form4.button1_Click(sender: Object; e: EventArgs);
var F:TextFile;// Переменной присваивается значение TextFile
Str:string;// Переменной присваивается значение String
begin
Assign(F,'C:UsersНеизвестенDesktopЗаписнаяnomer.txt');
reset(F);// Открывает текстовый файл для чтения
while not eof(F) do// Цикл, который перебирает строки
begin
readln(F, Str);// Ввод словабуквыцифры для поиска строки
if pos(textbox1.text, Str)>0 // есть ли словобуквацифра в строке
then
textbox2.text:= str; // Вывод строки в текстбокс
end;
CloseFile(F);// Закрыть файл
end;
Код работает но возникла проблема. Допустим у меня есть в файле такая информация:
12345 Максим
67890 Максим
При вводе «Максим» мне выдает только посл. строку. А надо все строки в которых есть это слово. Как это организовать?
задан 28 мая 2014 в 7:24
вместо
textbox2.text:= str;
написать
textbox2.Text:= textbox2.Text + #13#10 + str;
Если писать textbox2.text:= str;, то вы каждый раз будете затирать прошлую запись в текстбоксе. А когда напишете textbox2.Text:= textbox2.Text + #13#10 + str;, то к предыдущей записи будете прибавлять новую. Такая операция сложения строк называется конкатенацией.
Гуглите конкатенацию и прочие операции со строками.
ответ дан 28 мая 2014 в 8:21
teanЫЧteanЫЧ
4,6852 золотых знака28 серебряных знаков46 бронзовых знаков
1
Строки в Pascal
Строку в Паскале можно рассматривать как массив символов переменной длины. Работа со строками в Паскале довольно проста.
Простой пример: объявляем строку stroka, допустимая длина этой строки равна 10-ти символам
Получаем:
Максимальная длина строки в Паскале — 255 символов. Если при объявлении переменной типа строка не указать в квадратных скобках максимально допустимую длину, то по умолчанию длина строки равна 255-ти символам.
Длину строки в Паскале получаем с помощью функции Length:
Получаем:
длина строки «sbp» равна трём байтам.
Если строке присвоить значение, длина которого больше допустимой, то лишние символы будут удалены. Пример:
Получаем:
В этом примере строка может содержать не более двух символов, отсюда и результат.
Присоединить одну строку к другой в Паскале можно двумя путями: знаком «+» или функцией Concat.
Пример для «+»:
Получаем:
Пример соединения строк в Паскале с помощью встроенной функции Concat:
Получаем результат ровно такой же, как и в предыдущем примере.
Вставка строки в другую строку в Паскале делается с помощью стандартной функции Insert. Рассмотрим пример, где в строку «sbp-gram» после черточки, здесь номер символа 5, вставляется строка «pro»:
В результате получим строку «sbp-program».
Скопировать часть строки в Паскале можно с помощью функции Copy. Скопируем из строки «sbp-program» 3 символа, начиная с символа с номером 5, т.е. с буквы «p» в слове «program»:
Получаем:
Найти подстроку в строке на Паскале можно с помощью функции Pos. Для примера берём строку «program» и найдём номер символа, с которого начинается первое вхождение строки «gram» в строку «program»:
В переменной «number» сохранится число 4. Если бы строка «gram» не встречалось в строке «program», то функция Copy вернула бы ноль.
Удалить подстроку из строки в Паскале можно с помощью стандартной функции Delete. Удалим первые три символа из строки «program»:
Получим «gram». Строкой Delete(stroka, 1, 3) мы дали команду удалить три символа из строки «stroka», начиная с 1-ой позиции.