IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> сравнение строк...
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


ТАкой вот вопросик: имеется матрица MxN типа integer, при заполнении данной матрицы, мне необходимо вводить такие числа, что бы они удовлетворяли промежутку -32768..32767, т.е. типу integer. Ничего умнея я не придумал, как вот:
Код
Program rer;
Uses CRT;
VAr a,b:string;
   i,m,n,error:integer;

Begin
 clrscr;
 a:='32767';
   repeat
 Write('Vvedite stroku b= ');   REadln(b);
  for i:=1 to length(a) do
    begin
 val (a[i],m,error);
 val (b[i],n,error);
 if length(b)>length(a) then writeln('Oshibka!!!')
   else if length(b)<length(a) then break
    else  if  n<m then break
       else if n=m then fl:=true
           else if n>m  then writeln('Oshibka!!!');
     end;
   until (length(b)<=length(a));
end.

Это конечно же не вся программа, а всего лишь кусочек; т.е я ввожу некую строку и сравниваю её с шаблоном, при этом проверяя различные условия. Но это только для '32767', а мне же ещё необходимо сравнивать и с '-32768' (отдельно, сравнение для данного шаблона я написать то смогу), а вот как это дело всё объеденить, т.е. чтобы я сразу сравнивал и c '32767' и '-32768' и потом это всё заключить в цикл.
P.S. Прошу не очень критично относится к моим предположениям, я только начиная изучать Pascal... unsure.gif :p2: И поэтому буду очень благодарен помощи!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
ТАкой вот вопросик: имеется матрица MxN типа integer, при заполнении данной матрицы, мне необходимо вводить такие числа, что бы они удовлетворяли промежутку -32768..32767, т.е. типу integer. Ничего умнея я не придумал, как вот:


for i := 1 to n do
 for j := 1 to m do 
   repeat
       readln(x[i,j]);
   until (x[i,j]>-32768)and(x[i,j]<32767);



ЗЫ
Цитата
имеется матрица MxN типа integer


причем тут строки ? blink.gif

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Небольшое уточнение:
for i := 1 to n do
 for j := 1 to m do 
   repeat
       readln(x[i,j]);
   until (x[i,j]>-32768)and(x[i,j]<32767);
- избыточный вариант, т.к. Integer на 16-битных компиляторах физически не может содержать числа, НЕ попадающие в этот интервал... :yes:
Главное, чтобы не произошло Range-Check Error ... Вот это надо проверять.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Ах да, простите, забыл сказать: просто преподаватель в качестве задачки предложил придумать другой более сложный (идиотский) способ, да бы вспомнить (а в моём случае научиться) работу различных операторов...и работу со строками в целом!!!! Ещё раз извиняюсь...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Да ничего smile.gif Вот тебе на всякий пожарный FAQ Сроки


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 22.09.2005 15:24)
....
Integer на 16-битных компиляторах физически не может содержать числа, НЕ попадающие в этот интервал...  :yes:
Главное, чтобы не произошло Range-Check Error ... Вот это надо проверять.

Вот как раз, наверное, из-за этого преподаватель нас и попросил сделать иначе, ведь если я введу например 32769, то компилятор примет моё число, хотя по идее оно и не попадает в заданное ограничение!!!!! Отсюда вопрос, как этого избежать...???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






var
  s: string;
  num: longint;
  err: integer;
...
for i := 1 to n do
  for j := 1 to m do begin
    repeat
      readln(s);
      val(s, num, err);
    until (err = 0) and ((num > -32768) and (num < 32767));
    x[i, j] := num;
  end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Спасибо ОГРОМНОЕ!!!!!!! :thanks: Всё гениальное - просто!!!!!!!!!!!! Ещё раз ОГРОМНЕЙШЕЕ СПАСИБО!!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.04.2025 18:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name