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