Показване на числа от 1 до 100 без цикли и условия
Предмет. Такъв е проблемът.
Ще приемем, че> Отпечатайте числа от 1 до N без цикли и условияза яснота
WriteLn(1); WriteLn(2); WriteLn(3); . WriteLn(100);
Вижте [1]. Броят на числата преди стартирането на програмата не е известен.
Все още не разбирам. Къде се съхраняват тези номера? Къде и как се съхраняват тези N числа определя как да бъдат показани. Необходимо е, IMHO, да се опише задачата по-стриктно, иначе не е ясно каква е солта. Поне за мен. Какво означават N числа? Какви числа? И откъде ги взимате?
Не се съхранява никъде. Те трябва да се генерират, докато програмата работи. Числата от 1 до N трябва да бъдат изведени, да речем, на конзолата, както имате в [2].
Или просто трябва да измислите такъв начин на съхранение, за да управлявате изхода без цикли и сравнения? След това и S := "запишете числа тук, разделени от край на каретката и връщане на ред"; WriteLn (S); е добре. Или съм невероятно глупава?
Всичко, което можете да направите без цикли и условия, е добре.
Извинете за поредния глупав въпрос, но ще попитам: брои ли се блокът case за сравнение? Подозирам, че е така, но все пак.
Нещо в DMClient се сблъска и не показва (за мен) последната ми публикация, ще дублирам: Извинете за още един глупав въпрос, но ще попитам: брои ли се блокът за случай за сравнение? Подозирам, че е така, но все пак.
Добре, разбира се. Същият условен преход.
Изглежда проблемът не е решен. Само по някакъв начин да измисля рекурсия + етикети. ще помисля още.
var MaxN: Цяло число;
procedure NextN (N: Integer); var Dummy: Double; begin Dummy := 1 / (N-MaxN-1); WriteLn(N); Inc(N); СледващN(N); край;
начало ЧетенеLn(MaxN); опитайте НапредN(1); с изключение на край; ReadLn; край.
Без цикъл исравнения, всички тип-отгоре ;->P.S.Деактивиране на оптимизацията.
Код: програма Проект1;
Процедура Wr(S:integer); var i:extended; begin Try i:=1/(N-S); writeIn(S); inc(S); Wr(S); С изключение на изход; край; край;
Procedure Wr(S:integer); var i:extended; begin Try inc(S); writeIn(S); i:=1/(N-S); Wr(S); С изключение на изход; край; край;
>P.S. Деактивирайте оптимизацията.Ех. Учи, учи, една двойка :o)
var MaxN: Цяло число;
функция NextN(N: Integer): Double; var Dummy: Double; begin Result := 1 / (N - MaxN - 1); WriteLn(N); СледващN(N + 1); край;
като цяло същият условен преход, само завоалиран :)
може и без него :)
тип TMyEvent = процедура (n, maxn: цяло число) на обект;
TForm1 = class(TForm) Button1: TButton; Редактиране1: TEdit; Списъчно поле1: TListBox; procedure Button1Click(Sender: TObject); частен < Лични декларации > публичен < Публични декларации > fEvents: масив [булев] от TMyEvent; процедура NextN(n, maxn: цяло число); процедура StopN(n, maxn: цяло число);
var Формуляр1: TForm1;
procedure TForm1.NextN(n, maxn: integer); begin ListBox1.Items.Add(IntToSTr(n)); fСъбития[n=maxn](n+1, maxn); край;
процедура TForm1.StopN(n, maxn: цяло число); начало край;
procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Clear; fEvents[true]:=StopN; fEvents[false]:=NextN; NextN(0, StrToInt(Edit1.Text)); край;
но тук, разбира се, също "измама" условният преход е маскиран като достъп до елемент от масив :)
И така, проблемът няма решение.
Рекурсията също е цикъл - рекурсивен цикъл
И така, проблемът няма решение.
То има. Ние показваме всички числа във вечна рекурсия, започвайки от 1. Фактът, че програмата не трябва да извежда N + 1, не е написан. Фактът, че програмата не трябва да се срива при препълване на стек или число, също не е написан :)
2 Гост1 (05.12.05 11:02) [24]
GOTO не е цикъл, абезусловенскок. С тази помощ се организират цикли и условни скокове.
// Извинявам се за моя асемблер, последния път писах преди повече от 10 години и // тогава под Z80
var N, MaxN, c, m: Дълга дума;
процедура Изход; // Процедура за извеждане на числа begin writeln(MaxN-N+1); dec(N); c := 2 * N div (N + 1); // Връща 0, ако N = 0 или 1, ако N>gt; 0; // Ако 0 - прекратява изчислението // Ако 1 - продължава; c := (c + 1) * 4; // Дефиниране на отместването за точката на преход end;
начало ЧетенеLN(MaxN); N := MaxN;
// Изходно число Изход;
Почти същото като в Guest1 (05.12.05 10:31) [20]
Гост1 (05.12.05 10:31) [20]
Почти направих същото :)
използва Windows, Съобщения, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
тип TForm1 = class(TForm) Edit1: TEdit; Бутон1: TButton; Бележка1: TMemo; procedure Button1Click(Sender: TObject); частна процедура OutputAll(Count: Integer); процедура Изход (число: цяло число); < Лични декларации > публичен < Публични декларации > край;
var Формуляр1: TForm1;
процедура TForm1.Output(Number: Integer); begin Memo1.Lines.Add(IntToStr(Number)); end;
процедура TForm1.OutputAll(Count: Integer); asm PUSH EBX PUSH EBP MOV EBP, ESP LEA ECX, @@done PUSH ECX LEA ECX, @@output PUSH ECX MOV ECX, EDX @@изход: PUSH EAX PUSH EDX PUSH ECX SUB EDX, ECX ADD EDX, 1 CALL TForm1.Output POP ECX POP EDX POP EAX SUB ECX, 1
ТЕСТВАЙТЕ ECX, ECX PUSHF POP BX И EBX, $40 SHR EBX, $04 LEA EBX, [EBP + EBX - $08] JMP [EBX] @@done: POP ECX POP ECX POP EBP POP EBX край;
procedure TForm1.Button1Click(Sender: TObject); var Count: Integer; begin Count := StrToIntDef(Edit1.Text, 3); OutputAll(Count); end;
процедура TForm1.OutputAll(Count: Integer); asm PUSH EBX PUSH EBP MOV EBP, ESP LEA ECX, @@done PUSH ECX LEA ECX, @@output PUSH ECX MOV ECX, EDX @@output: PUSH EAX PUSH EDX PUSH ECX SUB EDX, ECX ADD EDX, 1 CALL TForm1.Output POP ECX POP EDX POP EAX SUB ECX, 1MOV EBX, ECX И EBX, EBXPUSHF POP BX И EBX, $40 SHR EBX, $04 LEA EBX, [EBP + EBX - $08] JMP [EBX] @@done: POP ECX POP ECX POP EBP POP EBX край;
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Tag := StrToInt(Edit1.Text); Timer1.Enabled := True; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Tag := Timer1.Tag-1; Memo1.Lines.Add(IntToStr(StrToInt(Edit1.Text)- Timer1.Tag)); Timer1.Enabled := Boolean(Timer1.Tag); end;
procedure TForm1.OutputAll(Count: Integer); asm PUSH EBP MOV EBP, ESP PUSH OFFSET @@done PUSH OFFSET @@output PUSH EAX PUSH EDX ADD EDX, 1 PUSH EDX @@output: SUB EDX, [EBP - $10] CALL TForm1.Output
MOV EAX, [EBP - $0C] MOV EDX, [EBP - $14]
PUSHF POP CX И ECX, $40 SHR ECX, $04 JMP [EBP + ECX - $08] @@done: ДОБАВИ ESP, $14 POP EBP край;
> Метроном (05.12.0517:49) [32]не е добре - условието от "1 до . ", но "финтът с ушите" беше успешен :)
> лошо - състояние от "1 до . ", но "финт с уши" успя > :) (въпреки че проблемът все още е решен на техническо ниво, но > не на логическо ниво, т.е. не всички езици ще го усвоят)
И вие опитайте. Числата се показват от 1 до .
> Метроном (05.12.05 19:07) [35]> И вие опитайте. Числата се показват от 1 до .но да, намалявате етикета и резултатът е разликата. хм съжалявам :)
Извикването на процедура е вид "goto", така че извикването на процедура също е цикъл? вижте [21]
процедура WriteFrom1ToN(N: Integer);
процедура NextN(Num: Integer); var E: Цяло число; започнете E := Round(0 / (Num - N - 1)); Writeln(Num); СледващN(Num + 1); край;
беше казано в контекст 23, което беше отговорът на 22.
Или мислите така
lb1: writeln(n) inc(n) GOTO lb1;
Неправилно условие на задачата. Или изход без оператори, после списъка, или задачата изобщо няма решение, защото всякакви извращения със стека, рекурсия, безусловни скокове и т.н. и така нататък. ще доведе до използването на понятия като цикъл или условие.
Въпросът беше поставен много некоректно - затова и разногласията по темата..
Трябва изрично да се изясни, че това саPascal-операторите на цикли и условно разклоняване, които не са приложими при решаването на проблема)
Той, виждате ли, е абсолютно ясен ..
Но не разбирам дали, например, цикълът с машинни инструкции трябва да се счита за „цикъл“! Въпреки че очевидно не се появява под никаква форма в някоилинеен алгоритъмкод на някоинеизвестен досега език за програмиране.
не се прави на глупак).
И вие се опитайте да обясните подробно условията на тази задача. Се уморяват.
Като цяло бих изхвърлил думата цикли от условието на проблема.
arhis (12/06/05 13:37) [50]> Какъв е смисълът от решаването на този и всеки друг подобен проблем > като цяло?Какъв е смисълът да се решават проблеми като цяло? Защо тук периодично се решават "петъчни задачи"? Какъв е смисълът от тях. Пич, ти ли си най-умният? Очевидно сте подготвена публика. да
arhis (12/06/05 13:37) [50] Какъв е смисълът да решавате този или изобщо друг подобен проблем?Убийте време и се гордейте със себе си, след като намерите решението.
> Убийте време и се гордейте със себе си, след като намерите решението.Няма решение на този проблем, защото няма условие при кои превключватели да не включвате.
arhis (12/06/05 13:43) [53]> По същата причина като теб, аз убивам времето, само че за разлика от > губиш ми времето, опитвайки се да разкараш мъглата > беше по-малко, отколкото обратното.Каква мъгла? Проблемът вече е решен и то повече от веднъж. Прочетете цялата тема.
не се прави на глупак (c)
Роман, не бъди груб (виж [51]), недей)
Повтарям още веднъж - условията на проблема са формулирани от вас Pts неправилно. не прилича на теб, въпреки поставянето на темата в Потрепаловка)
arhis (06.12.05 13:43) [53] И ако някой иска да решава проблеми за собственото си развитие, тогава се надявам, че ще реши нормални проблеми с нормално зададено условие и тогава тяхното решение ще има смисъл.
Уви, но често животът не поставя задачи с нормално поставени условия. В този случай нормалните условия трябва да бъдат зададени от този, който решава проблема, ине този, който го поставя.
Забелязах, че винаги ще има "най-умният" и в задача като "вземи числото 7, като използваш числото 2 три пъти" той ще напише нещо като "2+2+2+1=7 lolz". Условието е формулирано, макар и не съвсем точно, но не е ясно какво се изисква.
добре, помислете, че поне аз не принадлежа към таралежите
Използвах само три двойки. Всичко е наред?
Да, помня, че ходеше на гости на писатели. въпреки това) .
добре какво да правя? понякога искам)
Изчакайте. Изглежда си рационален човек. Влияят ли ви изобщо предразсъдъците?
Относно луната, вие къдраво го огънахте). хей!) .. точно като Носов) Въпреки че също не се включих веднага за „предразсъдъците“ ..
И какво, ако Рома и аз сме сънародници?) Колкото по-топли са отношенията, както виждате!)
Е, как да го обясня по-добре? Например, Вася, Петя и Маша общуват. Маша казва глупости, Вася я поправя. Тогава Петя казва някаква глупост. Вася го поправя, но в същото време добавя: „Хайде, минахме, с теб сме мъже.“ Въпросът е как ще се почувства Маша. Не, разбира се, разбирам, че е трудно да се отървете от подсъзнателната симпатия, но ми се струва, че е препоръчително да не го рекламирате.
От факта, че се обърнах към колегата Керк "по име не следва абсолютно нищо - нито плакат, нито .. Никога не знаете кой тук във форума е Серьога или друга "нецензурна дума" нарича обаждания!)).
По-скоро вие измислихте същия този плакат, за пореден път уведомявайки местната уважавана общественост за подозрително съвпадащи факти в нашите лични данни) .. Основно, смея да ви уверя, това не променя нищо
Първоначално разбрах, че Дъмкин е сънародник на Керк, той изобщо не е говорил за вас. И аз също зададох въпрос на Дъмкин, той сметна за необходимо да ми отговори, благодарен съм му за отговора. Ситуацияпочистен. Съжалявам, ако съм те обидил по невнимание.
В този случай всичко се решава по-лесно - поведението им противоречи на етиката. Според правилата на поведение в обществото не се препоръчва да се води разговор на език, който не всеки разбира, ако има по-„общ“ език. Така че имаше обичайната безкултурност в купето, нищо общо с ирационализма :) Но щом са знаели зле български, значи поведението им е нормално и съвсем цивилизовано.
Гоша. Няма да отида при теб, изплаши ме.
"Това е!" (C) Сердючка, ако не ме лъже паметта
Резюме: мазнините не решават проблемите с правилно представяне на същността на проблема, въпреки че го разбиват, скъпа, от гребени и кацапи до най-малките славни националности и други узбеко-латвийци)
ужасна метаморфоза. резултат: