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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив,char тип =>проблема 
:(
    Опции темы
UpL1nK
Дата 26.12.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.12.2005
Где: Тюмень

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



1)Я не могу понять, char тип в массиве занимает 3 элемента чтоли ???(из задачки)
если n=30 то программа дает ввести 10 элементов, если 21 то 7 !
2)Незнаю как проверить элемент стоящий перед ' . ' на то что он из анг. алф или нет.{из задачки}
3)И еще : как можно проверить букву на анг алф кроме in ['a'..'z'] ?и еще как проверить на заглавные буквы
у меня не получалось in ['a'..'z'] or in['A'..'Z'] .
Прошу о помощи. Спасибо тем кто откликнется! =)
Код

const n=30;
Type c=array [1..n] of char;
var x:c;
    i,v:byte;
begin
Writeln('Введите последовательность букв : ');
v:=0;
for i:=1 to n do
    begin
     read(x[i]);
     if x[i] in ['a'..'z'] then inc(v);
     if x[i]='.' then break;
    end;
if v=1 then
if x[n-1] in ['a'..'z'] then Write('Вы ввели 1 анг букву и она последняя');{знаю что тут неправельно, но...}
if (v=0)or(v>1) then Write ('Анг букв больше 1 или вообще нет');
End.

Последовательность заканчивается точкой. Но если пользователь введет точку не последним элементом
а например 5 , тогда как проверить предбуква анг или нет ? Ваще морока (((

Это сообщение отредактировал(а) UpL1nK - 26.12.2005, 17:36
--------------------
Макс
PM MAIL ICQ   Вверх
Albinos_x
Дата 26.12.2005, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(UpL1nK @ 26.12.2005, 17:32)
1)Я не могу понять, char тип в массиве занимает 3 элемента чтоли ???(из задачки)

1 байт... вероятно у Вас в последовательности 10 символ '.'

Цитата(UpL1nK @ 26.12.2005, 17:32)
2)Незнаю как проверить элемент стоящий перед ' . ' на то что он из анг. алф или нет.{из задачки}

введи дополнительную переменную счетчик, к примеру:

Код

for i:=1 to n do    
    begin    
     read(x[i]);    
     if x[i] in ['a'..'z'] then inc(v);    
     if x[i]='.' then break;
     inc(col);    
    end;

потом следовательно:
Код
...
if x[col] in ['a'..'z'] then Write('Вы ввели 1 анг букву и она последняя');

Цитата(UpL1nK @ 26.12.2005, 17:32)
3)И еще : как можно проверить букву на анг алф кроме in ['a'..'z'] ?и еще как проверить на заглавные буквы
у меня не получалось in ['a'..'z'] or in['A'..'Z'] .

Код
...
in ['a'..'z','A'..'Z']...

можно по коду, приблизительно так:
Код

...(ord(x[i])>64) and (ord(x[i])<91)...

но в этом случае в некоторых случаях можете получить неверный ответ...

Это сообщение отредактировал(а) Albinos_x - 26.12.2005, 18:38


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
UpL1nK
Дата 26.12.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.12.2005
Где: Тюмень

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



Спасибо за понятный ответ ))
очень помогло =)
СПС!!!
ЗЫ:тока вот первое все таки не так, цикл автоматически обрывается , если у Вас есть компилятор попробуйте сами. Я специально проверял, не вводил точку =((
--------------------
Макс
PM MAIL ICQ   Вверх
Albinos_x
Дата 27.12.2005, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(UpL1nK @ 26.12.2005, 19:29)
ЗЫ:тока вот первое все таки не так, цикл автоматически обрывается , если у Вас есть компилятор попробуйте сами. Я специально проверял, не вводил точку =((

странно... не должно быть... попробуй массив явно определить
Код

Type c=array [1..30] of char;

и цикл тоже
Код

for i:=1 to 30 do

можно ещё попробовать вместо массива использовать строку
x:string[30]
далее так же с симводами работать
x[i]


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Zero
Дата 27.12.2005, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



Цитата(UpL1nK @ 26.12.2005, 18:32)
1)Я не могу понять, char тип в массиве занимает 3 элемента чтоли ???(из задачки)
если n=30 то программа дает ввести 10 элементов, если 21 то 7 !

Всё очень просто... smile
После каждого ввода с помощью оператора read если массив именно типа char то в массив ещё вводятся символы #13 и #10, перенос коретки и конца строки...
Хочешь устранить проблему, то просто добавь в цикл:
Код

for i:=1 to n do
    begin
     read(x[i]);
     if x[i] in ['a'..'z'] then inc(v);
     if x[i]='.' then break;
    end;
перед концом оператор:
Код

readln;  {такая штука нужна, во всех циклах, где перед этим используется оператор read}

Т.е. код будет такой:
Код

for i:=1 to n do
    begin
     read(x[i]);
     if x[i] in ['a'..'z'] then inc(v);
     if x[i]='.' then break;
     readln;
    end;

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

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

3. Оффтопить

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

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

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


 




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


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

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