Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 217
от 18.12.2003, 14:51

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 374
Отправлено ответов: 1327
Активность: 354.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

sir henry
Статус: Профессиональный
Общий рейтинг: 159.68
[Подробней >>]
Drahus
Статус: Опытный
Общий рейтинг: 168.88
[Подробней >>]
fC
Статус: Опытный
Общий рейтинг: 152.56
URL: Просто :)
[Подробней >>]
 
Boriss
Статус: Опытный
Общий рейтинг: 148.2
URL: Программирование на Паскале
[Подробней >>]
Case_X
Статус: Начальный
Общий рейтинг: 125.53
[Подробней >>]
Vitally
Статус: Доверительный
Общий рейтинг: 164
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.17
[Подробней >>]
Tancho
Статус: Профессиональный
Общий рейтинг: 153.74
Телефон: сл. 0359 0391 65 631; 0359 0391 53 105
[Подробней >>]
Jact M Anchorite
Статус: Опытный
Общий рейтинг: 108.73
[Подробней >>]
 
Andy
Статус: Опытный
Общий рейтинг: 101.5
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 371. Уважаемые эксперты! Я всё с тем же вопросом.Один вводит 10 символов рус алф., а второй угадывает(вво... (ответов: 8)
Вопрос № 372. Несколько вопросов: 1)Как в паскале найти в строке подстроку (какие функции использовать)? 2)Есть ли... (ответов: 8)

Вопросов: 2, ответов: 16


 Вопрос № 371

Уважаемые эксперты! Я всё с тем же вопросом.Один вводит 10 символов рус алф., а второй угадывает(вводит свои 10).Нужно подсчитать и вывести кол-во правильно угаданных символов.Пожалуйста, не используйте оператор Goto и uses crt(такие уж условия...).Спасибо.



Вопрос отправлен: 14.12.2003, 15:07
Отправитель: Ludik

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Доброе время суток, Ludik!
Если нужно проверять на то, есть-ли во второй строке буковки из первой, то можно использовать функцию Pos().
См. приложение.

Приложение:

Ответ отправлен: 15.12.2003, 04:57
Отправитель: sir henry


Отвечает Drahus

Доброе время суток, Ludik!
var
n,n2,k:integer;
a,b:string;
begin
write('ВВ 10 символов: ');
readln(a);
write('Ещё 10 символов: ');
readln(b);
for n:=1 to 10 do begin
for n2:=1 to 10 do begin
if a[n]=b[n2] then inc(k);
end;
end;
writeln('Кол-во совпадений:',k);
readln;
end.


Ответ отправлен: 15.12.2003, 17:06
Отправитель: Drahus


Отвечает fC

Приветствую Вас, Ludik!
const
MAX_CHAR=10;
var
buf1,buf2:array [0..MAX_CHAR] of char;
i,ugadano:integer;
begin
Write('Player 1. Vvedite 10 chars i nazhmite Enter: ');
ReadLn(buf1);
Write('Player 2. Vvedite 10 chars i nazhmite Enter: ');
ReadLn(buf2);
for i:=1 to MAX_CHAR do if buf1[i]=buf2[i] then inc(ugadano);
WriteLn('Uradano:= ',ugadano);
ReadLn;
end.
Где вы тут GoTo и uses Crt увидели? :)

Ответ отправлен: 14.12.2003, 17:35
Отправитель: fC


Отвечает Boriss

Приветствую Вас, Ludik!
Пожалуйста, если так. Но теперь можно вводить и "нерусские" буквы и небуквы тоже. Но при подведении итогов учитываются только русские буквы и только "оригинальные", повторы не считаются

Приложение:

Ответ отправлен: 15.12.2003, 16:19
Отправитель: Boriss


Отвечает Case_X

п”пѕп±яЂя‹п№ пґпµпЅяЊ, Ludik!
п’пѕя‚ пІп°пј пїяЂпѕпЁяЂп°пјпєп°!
пћяЃпѕп±пµпЅпЅпѕяЃя‚пё - пЅпµп»яЊп·яЏ пІпІпѕпґпёя‚яЊ пѕпґпёпЅп°пєпѕпІя‹пµ п±яѓпєпІя‹, пё пѕпЅп° яЂп°п·п»пёя‡п°пµя‚ п‘пѕп»яЊя€я‹пµ пё пјп°п»пµпЅяЊпєпёпµ п±яѓпєпІя‹!
п∙яЃп»пё я‡я‚пѕ - пїпёя€я‹!

Приложение:

Ответ отправлен: 14.12.2003, 15:32
Отправитель: Case_X


Отвечает Vitally

Добрый день, Ludik!
Использование goto в Pascal действительно считается плохим тоном, но модуль CRT... Я использовал его для красоты и удобства. Например CRT.ClrScr - это процедура очистки экрана.
Кстати, вожможно, в предыдущей программе была ошибка:
В конце, вместо
For i:=1 to 10 do
if qwest[J]='1'
нужно
For i:=1 to 10 do
if qwest[I]='1'
т.е нужно [i] вместо [j];
Я убрал модуль CRT и все, что с ним связано. Почувствуй раздницу!
P.S. Теперь, после каждой введенной буквынужно жать Enter.

Приложение:

Ответ отправлен: 14.12.2003, 16:03
Отправитель: Vitally


Отвечает vitya

Добрый день, Ludik!
все в приложении.

Приложение:

Ответ отправлен: 16.12.2003, 08:58
Отправитель: vitya


Отвечает Tancho

Приветствую Вас, Ludik!
Pascal язык програмный и по моему не надо человек быть рабом
разных модных увлечения. Все же если ты( или тебе) накладываешь(кто то накладываеть) такие условия, то так и
бутеть.Смотри в Приложение!
P.S.
И все же из условия НЕ может разобраться как будеть
считаться символы если один и тот же символ содержаться в строку больше один раз? Символы могуть быть ТОЛЬКО из РУССКОГО алфавита? Я так и понял и поетому ввел жесткий контрол на этому!


Приложение:

Ответ отправлен: 16.12.2003, 09:31
Отправитель: Tancho


 Вопрос № 372

Несколько вопросов:
1)Как в паскале найти в строке подстроку (какие функции использовать)?
2)Есть ли в паскале ограничение на длинну считываемой строки? И если есть как его обойти.
3) Есть ли в паскале функции для работы с регэкспами (желательно PREC).



Вопрос отправлен: 15.12.2003, 12:51
Отправитель: pav

[Следующий вопрос >>] [Список вопросов]

Отвечает Jact M Anchorite

Приветствую Вас, pav!
1). pos(podstroka,stroka);
2). длина строки - 255 символов. Юзай массив char-ов или PChar.
3). Если ты про Borland Pascal, то нет там таких зверушек! (в FreePascal - не уверен, надо посмотреть:) )

Ответ отправлен: 16.12.2003, 17:25
Отправитель: Jact M Anchorite


Отвечает Tancho

Доброе время суток, pav!
1)
а) Если говорим о стандартном Pascal'e то надо пользоват
function Pos(Substr,S:string):Byte - поиск низа Substr из
низа S, если нйдеть его то возвращаеть индекса первого сим-
вола Substr в S, если не найдеть возвращаеть нуль;
б)Если говорим о Borland(Turbo) Pascal'е то кроме ее можно пользоват и function StrPos(S,Str1:PChar):PChar - поиск низа Str1 из низа S, если найдеть его то возвращаеть указатель к первой наденый подниз, если НЕ найдеть возвращаеть nil;
в) О остальных диалектах Pascal'я(к сожелению) ничево не могу сказать.
2)
а) Если говорим о стандартном Pascal'е максимальная длинна 255 Byte;
б) Если говорим о Borland(Turbo) Pascal'е то здесь разрешено пользовании и ASCIIZ низов т.е. такие окончающих
0(нулем), здесь ограничение на длинну - 65535 символ;
в) О остальных диалектах Pascal'я(к сожелению) ничево не могу сказать.
3) НЕ понимаю - что это "регэкспами"?


Ответ отправлен: 17.12.2003, 16:03
Отправитель: Tancho


Отвечает sir henry

Здравствуйте, pav!
1. Для поиска подстроки в строке используется вункция Pos():
Pos(подстрока, строка): integer;
Функция возвращает позицию подстроки в строке, если она была найдена, либо 0 в противном случае.
2. Длина строки в Паскале - 255 символов. Чтобы получить более длинную строку можно использовать массив символов или тип PChar. Не помню, сколько символов может содержать PChar, но не один десяток тысч - это точно. Единственная особенность, PChar - это указатель на строку, т.е. указатель на адрес первого символа. Строка в PChar всегда заканчивается нулем (#0).

Ответ отправлен: 15.12.2003, 14:15
Отправитель: sir henry


Отвечает Vitally

Добрый день, pav!
1)Функция Pos;
Function Pos(Substr:string,Str:string):byte;
Если строка не содержит подстроку - возврощает 0. В противном случае возвращает индех первого элемента подстроки в строке.
2)Ограничение = 255 символам. Чтобы его обойти, можно сохранять буквы по их коду в обычном массиве. Тогда мах длинна одного массива = 65535 символов. Но функции обработки такой строки придется писать самому!
3)Не знаю такого зверя! :(


Ответ отправлен: 15.12.2003, 16:42
Отправитель: Vitally


Отвечает Boriss

Добрый день, pav!
Как понимаю, речь идет о ДОСовском Паскале, ибо писать на BPW сейчас ...
1) функция POS(<что_искать>, <где_искать>) - возвращает начало вхождения, или 0, если нет
2) да, 255 символов. Обойти можно "ручками": GetMem и обращаться как с символами
3) "регэкспа" не является общеупотребительным названием. Если хотите получить ответ, выразитесь корректнее

Ответ отправлен: 15.12.2003, 16:01
Отправитель: Boriss


Отвечает vitya

Доброе время суток, pav!
1. функция называется posэ
2. 255 символов длина обычной строки в паскале.
2.1. считывать массив строк
2.2. создать динамический массив в куче и в него считывать посимвольно
3. именно в паскале нет, но в инете есть модули (по кройней мере для дельфи, а их можно переделать).

Ответ отправлен: 16.12.2003, 08:52
Отправитель: vitya


Отвечает Andy

Приветствую Вас, pav!
1) Pos (см. help)
2) 254 (см. help по тину string), а зачем? В каждом конкретном случае по-разному. Я не разу не сталкнулся с ситуацией где этой длинны строки не хватает.
3) нет, но можно найти библиотеки для этого.

Ответ отправлен: 16.12.2003, 14:46
Отправитель: Andy


Отвечает Drahus

Доброе время суток, pav!
1) Pos (или StrPos - содерж. в модуле Strings - кажется так). Пример:
s:='I'm cool dude, yo!'
c:=pos('dude', s);
В строке "s" будет искаться подстрока 'dude', в переменной "c" функция возвратит число 10, то есть номер символа в строке с которого начинается подстрока. Тьфу, ну и бред. :)
2) Есть, 255 символов. Строка это массив символов. Можно использовать массив типа PChar, вроде... Сам я не пробовал, читал где-то. В общем, в отличие от string, вмещающий 255 с., PChar вроде вмещает 6400 или вообще 64000 с. То есть байт. Короче не помню, эксперементируйте.
3) По-русски можно? :) Вроде слышал, но не помню что это.


Ответ отправлен: 18.12.2003, 05:40
Отправитель: Drahus



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (17)
Perl (3)
Builder / Delphi (20)
Pascal (20)
Basic / VBA (4)
Java / JavaScript (6)
PHP (13)
Криптография (8)
WinAPI (10)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (54)
"Железо" (26)
Поиск информации (19)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (13)
Юристу
Гражданское право (12)
Семейное право (8)
Трудовое право (9)
КоАП (8)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное