Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

Pascal   Найти похожие ветки 

 
*******   (2004-11-12 20:48) [0]

В одной книге вопрос?
Записать группу команд

First:=First+1;
if First>max then
First:=1

одной командой на языке Pascal. Кто знает?


 
uny ©   (2004-11-12 20:52) [1]

first:=(inc first) and max; ?


 
heady   (2004-11-12 20:54) [2]

робко пробую: if inc(First)>max then First:=1;


 
*******   (2004-11-12 20:57) [3]

uny ©
попробовал не хочет работать.
Сам думал как, не получается.


 
*******   (2004-11-12 20:58) [4]

heady
подрозумевается что first постоянно изменяется.


 
uny ©   (2004-11-12 21:05) [5]

first:=(inc first) mod max;
в [1] не верно, от маx зависит, а так?


 
Verg ©   (2004-11-12 21:07) [6]

F := ( F + 1 ) mod max;


 
*******   (2004-11-12 21:10) [7]

uny ©

first должно быть равно потом 1, то я думаю
что сначала нужно mod, а потом как то изменить
значение first, в Delphi проверяю на (inc first)
выдает ошибку.


 
*******   (2004-11-12 21:14) [8]

Что приходит на ум только

first:=first mod max;
inc(first)

но это две команды.


 
GuAV ©   (2004-11-12 21:17) [9]

*******   (12.11.04 20:48)
одной командой

что есть одна комманда ?


 
uny ©   (2004-11-12 21:17) [10]

*******
[6] разве не верен? на дельфи и правда ошибка где Вы указываете, (я использую другую среду)


 
*******   (2004-11-12 21:20) [11]

Guav сам незнаю, такие вопросы вот в книгах без звездочки (*)


 
GuAV ©   (2004-11-12 21:23) [12]

if First > max + 1 then first:=1 else First := First + 1 ?


 
Тестировщица ©   (2004-11-12 21:26) [13]

Verg ©   (12.11.04 21:07) [6] Может, лучше  так:
First:=(First mod max)+1;


 
*******   (2004-11-12 21:27) [14]

GuAV © Возможно, скорее всего это и будет правильно.


 
*******   (2004-11-12 21:29) [15]

Тестировщица Очень благодарен, теперь буду знать!


 
GuAV ©   (2004-11-12 21:29) [16]

Тестировщица ©   (12.11.04 21:26) [13]
Гениально. Наверное это оно и есть.


 
Torin   (2004-11-12 21:30) [17]

if First > max + 1 then first:=1 else First := First + 1
Это не одна команда, а одна строчка в которой, по логике, 5 команд.


 
uny ©   (2004-11-12 21:34) [18]

условие не понел, отвечал ошибочно. извинения.


 
pasha_golub ©   (2004-11-15 18:03) [19]

Torin   (12.11.04 21:30) [17]
Под коммандой подразумевается оператор. А это и есть оператор ветвления. один-единственный


 
palva ©   (2004-11-15 18:11) [20]

first := first mod max + 1;


 
Gloomer ©   (2004-11-16 09:54) [21]

2 palva [20]
при first=max в результате выполнения получим first=2 :-(


 
REA   (2004-11-16 10:22) [22]

неа


 
begin...end ©   (2004-11-16 10:26) [23]


> [21] Gloomer ©   (16.11.04 09:54)

Очень сомневаюсь; результатом first mod max будет остаток от деления first на max; поскольку first = max, то остаток будет равен нулю, а 0 + 1 = 1.


 
SergP.   (2004-11-16 13:07) [24]


> begin...end ©   (16.11.04 10:26) [23]
>
> > [21] Gloomer ©   (16.11.04 09:54)
>
> Очень сомневаюсь; результатом first mod max будет остаток
> от деления first на max; поскольку first = max, то остаток
> будет равен нулю, а 0 + 1 = 1.


Ну тогда:

first := first mod (max+1) + 1


 
Abel   (2004-11-16 14:41) [25]

Только не спрашивайте, как ЭТО работает %))

program Project1;
{$APPTYPE CONSOLE}
uses
 SysUtils;
var
 r1, r2: Integer;
 f, max: Integer;
 i: Integer;
begin
 Randomize;
 for i := 1 to 1000000 do
 begin
   f := Random(1000);
   max := Random(1000);
   r1 := f;
   r1 := r1+1;
   if r1>max then
     r1 := 1;
   r2 := ((max div (f+1))*(f div (max+1))*max + (max div (f+1))*(f mod (max+1)))
         div
         ((max div (f+1)) + ((f+1) div (max+1))) + 1;
   if r1 <> r2 then
   begin
     Writeln("f=",f," max=",max);
     Writeln("r1=",r1," r2=",r2);
   end;
 end;
 Writeln("Ready!");
 Readln;
end.


 
palva ©   (2004-11-16 14:55) [26]

> Abel   (16.11.04 14:41) [25]
> Только не спрашивайте, как ЭТО работает %))

и что ОНО делает.


 
Pavia ©   (2004-11-16 19:33) [27]

if succ(First)>max then First:=1


 
Defunct ©   (2004-11-16 19:40) [28]

pasha_golub ©   (15.11.04 18:03) [19]
> А это и есть оператор ветвления. один-единственный

Вы не правы.

Опрератор ветвления:

If <условие> then <оператор> else <оператор>

итого 3 оператора.


 
Defunct ©   (2004-11-16 19:45) [29]

> palva ©   (16.11.04 14:55) [26]
> и что ОНО делает.


Какую-то не относящуюся к теме ерунду. Видимо автор поста увидел знакомое слово max ;>


 
Pat ©   (2004-11-16 21:14) [30]

А есть ли у кого еще такие же прикольные задания? Типа поменять местами два числа без использования дополниетельной переменной...и т.д.


 
SergP ©   (2004-11-16 22:21) [31]


>  [30] Pat ©   (16.11.04 21:14)
> А есть ли у кого еще такие же прикольные задания? Типа поменять
> местами два числа без использования дополниетельной переменной...и
> т.д.


:-)

Специально для тебя: как насчет поменять местами две строки не используя дополнительной переменной?


 
Pat ©   (2004-11-16 23:20) [32]

>SergP ©   (16.11.04 22:21) [31]
Строки одинаковой длины? :-)


 
Pat ©   (2004-11-16 23:43) [33]

Ладно, напишем для общего случая :-))

procedure ChangeStrings(var s1,s2:string);
 procedure LetsDoIt(var MinS,MaxS:string);
 var i,len1,len2:integer;
 begin
   len1:=length(MinS);
   len2:=length(MaxS);
   SetLength(MinS,length(MaxS));
   for i:=1 to len2 do
     begin
       MinS[i]:=chr(ord(MinS[i]) xor ord(MaxS[i]));
       MaxS[i]:=chr(ord(MinS[i]) xor ord(MaxS[i]));
       MinS[i]:=chr(ord(MinS[i]) xor ord(MaxS[i]));
     end;
   SetLength(MaxS,len1);
 end;

begin
if length(s1)<length(s2)
 then LetsDoIt(s1,s2)
 else LetsDoIt(s2,s1)
end;

procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
begin
s1:="Hello World!!!";
s2:="Hello MSWord";
showmessage(s1+#13#10+s2);
ChangeStrings(s1,s2);
showmessage(s1+#13#10+s2)
end;


 
Pat ©   (2004-11-16 23:45) [34]

Хотя, насчет дополнительных переменных я бы промолчал :-))) var i,len1,len2:integer
С другой стороны сравним размеры integer"а и string :-)


 
Pat ©   (2004-11-16 23:57) [35]

Начитался help"а на ночь:
SetLength procedure
Sets the length of a string or dynamic-array variable.
Existing characters in the string or elements in the array are preserved, but the content of newly allocated space is undefined
Всвязи с этим после строчки
SetLength(MinS,length(MaxS));
добавить
move(StringOfChar(#0,len2-len1)[1],MinS[len1+1],len2-len1);


 
Defunct ©   (2004-11-17 00:30) [36]

Pat ©   (16.11.04 21:14) [30]

Pat, я тут нашел интересную задачку для вас (думаю вы не справитесь с ней так быстро как с перестановкой строк).

Имеется 17 дорожных контрольных пунктов (КП) пронумерованных от 1 до 17, каждый КП располагается на перекрестке дорог. Найти такое расположение КП чтобы путь от любого i-го КП до любого другого j-го КП проходил максимум через один КП. Решением должен быть текстовый файл, в котором должно быть 17 строк, порядковый номер строки соответствует номеру КП, в каждой строке должны находиться 4 цифры - номера КП с которыми связан данный КП.


 
jack128 ©   (2004-11-17 01:53) [37]

Pat ©   (16.11.04 23:43) [33], [35]
все гораздо проще (и быстрее!!!) если использовать знание того, что строки - это ССЫЛОЧНЫЕ типы ;-)


 
Кто---то ©   (2004-11-17 04:05) [38]


> Pat ©   (16.11.04 21:14) [30]
> А есть ли у кого еще такие же прикольные задания?


Тоже самое, но чтобы
if First > max then First := 0


 
Defunct ©   (2004-11-17 04:16) [39]

> Тоже самое, но чтобы
> if First > max then First := 0

First := (First mod (max + 1)) * byte((First div (max + 1))=0 );


 
Defunct ©   (2004-11-17 04:22) [40]

> Тоже самое, но чтобы
> if First > max then First := 0

или еще тупее:
First := First * byte( First <= Max );



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.034 c
3-1099575771
Shalnsk
2004-11-04 16:42
2004.12.05
Delphi&amp;navigator


6-1096121274
MiniTex
2004-09-25 18:07
2004.12.05
WebBrowser


14-1100775774
by
2004-11-18 14:02
2004.12.05
Как модель предметной области совместить с гридом?


1-1101114923
markers
2004-11-22 12:15
2004.12.05
Работа с константами и текстом.


6-1095885348
Ivanov_F.
2004-09-23 00:35
2004.12.05
Ограничение траффика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский