Mam napisać algorytm blokowy (lub gotowy program), w którym rozpisze program wyszukujący liczbę z jakiegoś przedziału, który działa w taki sposób, że myśle sobie jakąś liczbe z zakresu, który mu podam np od 1 do 10 000 i program dzieli to na pół i daje informacje zwrotną pytając czy moja liczba jest większa lub mniejsza od połowy zakresy czyli w tym przypadku 5 000 i jesli odpowiem większa to dzieli zakres od 5 000 do 10 000 jeśli odpowiem że mniejsza to bierze zakres od 1 do 5 000 i postepuje analogicznie aż znajdzie moją liczbę, program powinien składać sie z kilku pętli, program ten musi dac się zapisac we free pascalu. Proszę o pomoc
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Nareszcie ktoś, kto pisze w normalnym kompilatorze (a zarazem środowsku), jakim jest FPC :)
[w załączniku jest diagram]
Tutaj program (stworzony dla FPC 2.4.0 (ech, Backtrack nie ma niestety nowszego w repo :/)):
Link uzupełniający (z kodem): http://ideone.com/0db4e
Kod:
{$MODE OBJFPC}
{$H+}
Type TRange = Record
Min, Max: Int64;
End;
Var Range: TRange;
Function RangeSet(aMin, aMax: Int64): TRange;
Begin
Result.Min := aMin;
Result.Max := aMax;
End;
Procedure Move;
Var Chosen: Int64;
Option: Char;
Begin
Chosen := (Range.Min+Range.Max) div 2;
Writeln('Liczba: ', Chosen);
Writeln('Wybierz 1 jezeli liczba jest mniejsza, nizeli Twoja');
Writeln('Wybierz 2 jezeli liczba jest wieksza, nizeli Twoja');
Writeln('Wybierz 3 jezeli liczba jest poprawna');
Option := #0;
Repeat
if (Option <> #0) Then
Writeln('Wybierz poprawna opcje!');
Readln(Option);
Until (Option in ['1'..'3']);
Case Option of
'1': Range.Min := Chosen;
'2': Range.Max := Chosen;
'3': Begin
Writeln(':)');
Readln;
Halt;
End;
End;
Move;
End;
Var Min, Max: Int64;
Begin
Writeln('Podaj zakres: ');
Write('Min = ');
Readln(Min);
Write('Max = ');
Readln(Max);
Range := RangeSet(Min, Max);
Move;
End.
Edit: bugfix ;)