Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2008, 20:16   #1
probmat
Новичок
Джуниор
 
Регистрация: 14.03.2008
Сообщений: 1
По умолчанию Вопрос массивы и циклы

Здравствуйте!
Если можно, ответьте на 2 вопроса теста.
Учусь в Интуит Университете и застопорился на лекции №3.
На остальные вопросы отвечаю, а в этих ничего не выходит, даже используя компилятор ответы оказываются неправильные. Обидно бросать из-за этого программу.


3. Какие описания массивов являются правильными с точки зрения компилятора языка Pascal?

1.var a1: array[-1000..50] of integer

2.var a2: array[200..-111] of real

3.var a3: array[-10..10,byte,'0'..'9'] of longint

4.var a4: array[1..10000] of double

5.const n: byte = 0
var a5: array[-1000..n] of word

6.const m1 = 20; m2 = m1*100
var a6: array[m1..m2] of -200..200

7.type mass = array[1..100] of char
var a7: array[0..99] of mass

8.var a8: array[word] of boolean

9.var a9: array[0.0..20000.0] of byte

10.const m1= 10; m2 = 17.89
var a10: array[round(m2/m1)..m1+10]of byte

5. Какие циклы будут работать "бесконечно"?

1.while true do k:=k+1

2.while false do k:=k+1

3.repeat k:=k+1 until true

4.repeat k:=k+1 until false

5.k:=0; repeat k:=k+1 until k<0; {k:byte}

6.k:=0; repeat k:=k+1 until k<0; {k:integer}

7.k:=1; while k>=0 do k:=k+1; {k:word}

8.k:=1; while k>=0 do k:=k+1; {k:shortint}

9.for i:=1 to i+1 do k:=k+1

10.for i:='x' to 'z' do dec(i)

11.for i:='x' downto 'z' do dec(i)

12.for i:=1 to n do n:=n+1

Спасибо!
probmat вне форума Ответить с цитированием
Старый 14.03.2008, 21:01   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

3 - 1,3,4,6,7,8,10
5 - 1,4,5,7

Последний раз редактировалось _Dmitry; 14.03.2008 в 21:04.
_Dmitry вне форума Ответить с цитированием
Старый 15.03.2008, 03:24   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
5 - 1,4,5,7
. И ещё 10.
B_N вне форума Ответить с цитированием
Старый 15.03.2008, 08:38   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
И ещё 10.
Согласен.
В Turbo Pascal-e это пройдет, но Delphi такого не пропустит.
_Dmitry вне форума Ответить с цитированием
Старый 16.03.2008, 00:13   #5
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию

6.k:=0; repeat k:=k+1 until k<0; {k:integer} а етот цикл не бесконечный? если к=0 и далее +1 он ведь никогда не будет <0.
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 16.03.2008, 00:50   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Согласен.
В Turbo Pascal-e это пройдет, но Delphi такого не пропустит.
А разве в Delphi это не warning? Уже плохо помню. Помню, что она выступала насчёт изменения переменной цикла, но просто не уверен уже, что это считалось ошибкой.
Цитата:
Сообщение от [Smarik] Посмотреть сообщение
6.k:=0; repeat k:=k+1 until k<0; {k:integer} а етот цикл не бесконечный? если к=0 и далее +1 он ведь никогда не будет <0.
Будет. 32767 + 1 = -32768
B_N вне форума Ответить с цитированием
Старый 16.03.2008, 12:58   #7
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Для справедливости надо сказать, что integer 32 битное число и
2147483647 + 1 = -2147483648
только в том случае, если отключена проверка выхода за границы диапазона, что и сделано в Delphi по умолчанию. При отладке программы эту проверку неплохо бы включить, чтобы не получать непредсказуемые результаты:
{$Q+} или {$OVERFLOWCHECKS ON}
{$R+} или {$RANGECHECKS ON}
_Dmitry вне форума Ответить с цитированием
Старый 16.03.2008, 13:35   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от [Smarik] Посмотреть сообщение
6.k:=0; repeat k:=k+1 until k<0; {k:integer} а етот цикл не бесконечный? если к=0 и далее +1 он ведь никогда не будет <0.
вопрос некорретен. Зависит от типа переменной K
если переменная беззнаковая, то цикл действительно будет бесконечным:
Код:
var
  k:byte;
begin
  k:=0; 
    repeat 
      k:=k+1;
      WriteLn(k);
    until k<0;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stringgrid, cells[m,n] и двумерные массивы.(#002) Очередной вопрос начинающего. Albert2008 Компоненты Delphi 4 28.07.2008 19:02
Циклы (Pascal) Дима82 Помощь студентам 4 07.06.2008 17:07
Циклы и выход из них. alikk Общие вопросы Delphi 23 13.04.2008 08:44
Итерационные циклы Андрюха из ПХТТ Паскаль, Turbo Pascal, PascalABC.NET 3 14.02.2008 15:49