Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ подсчет буквенных символов в выражении

Автор: -Dimanez- 11.12.2007 5:15

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


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


вот,например, кусок программы, где находим символы в ыражении ( поидее), а что делать дальше не знаю((

...
for i:=1 to length(str) do
for x:='A' to 'Z' do

if k[x] in ['A','Z']
then n:=n+1
... итд

или вот буквенные символы( заглавные латинские) находятся в кодировке от 35 до 90....
здесь совсем темный лес...

for x:='A' to 'Z' do
if x>=35 and x<=90 {здесь мне при полной прогрмме выдавал ошибку[x<=90]. хотя даж не понимаю как
можноприсвоить так сказать символьной переменной Х число...не используя при этом
подпрограмм, хотя при х=> 35 прокатило...).


...
одним словом - ужас..

думаю.что здесь полный бред написан, но все же,надеюсь на помощь....

Автор: neic 11.12.2007 6:27

Может всё таки так будет правильнее:

If k[x] in ['A'..'Z','a'..'z'] then
begin
{
Выполняем нужные нам операции
}
end;


Автор: Dimanez 17.12.2007 2:40

помогите исправить ошибку....
смысл вот он!... а тут ошибка((..туго с исправлением...


type
letters='A'..'Z';
var
k:array[letters] of string;
i,n:integer;
x:letters;
str:string;
begin
for i:=1 to length(str) do
begin
for x:='A' to 'Z' do
if k[x] in ['A','Z']
then
begin
n:=0;
for i:=1 to length(str) do
n:=n+1;
end;
end;
writeln('в выражении',n,'букв');
readln;
end.


выводит 41 ошибку....

Автор: nopsrer 17.12.2007 2:51

Функция ord возращает порядковый номер символа в таблице кодов аски.
Символы A..Z идут под номерами от 65 до 90, a..z от 97 до 122

var s: string;
k,i: integer;
begin
readln(s);
K:=0;
for i:=1 to length(s) do
if (ord(s[i])>=65) and (ord(s[i])<=90) or
(ord(s[i])>=97) and (ord(s[i])<=122) then k:=k+1;
writeln(k);
readln;
end.

Автор: termin 17.12.2007 2:56

i:=1;
while (i<=length (str)) do
begin
if (S[i] in ['a'..'z','A'..'Z']) then
inc (count);
inc (i);
end;
WriteLn ('count=',count)

Если не ошибся, то типо чото того должно быть.

Автор: volvo 17.12.2007 3:59

Буквы могут, кстати, быть не только латинскими... rolleyes.gif

Автор: Dimanez 17.12.2007 4:29

угу....препод говрил...таблицу показывала с символами....там вопщем,не только буквы,а и символы...
было бы не плохо в FAQ'e такую таблицу вставить)

Автор: andriano 17.12.2007 11:51

Трудно, конечно, что-то говорить, не зная, о какой таблице идет речь, но, вероятно, эта таблица может быть получена простейшей программой:

var
i,j,k : integer;
f : file;
begin
assign(f,'ascii.cod');
rewrite(f,1);
for j := 0 to 15 do begin
for i := 0 to 15 do begin
k := i + j*16;
blockwrite(f,k,1);
end;
k := 13;
blockwrite(f,k,1);
k := 10;
blockwrite(f,k,1);
end;
close(f);
end.
(кстати, совсем недавно я ее где-то уже приводил. Возможно и на этом форуме)

Автор: nopsrer 17.12.2007 15:22

Таблица кодов ASCII


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

Автор: andriano 17.12.2007 22:37

Это не ASCII, это сканкоды клавиатуры.