Minimalna i maksymalna wartość

Minimalna i maksymalna wartość
AR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:23
0

Witam mam następujący problem, w jaki sposób wyciągnąć minimalną i maksymalną wartość z Memo, nie byłoby problemu gdyby była to określona ilość liczb, ale zadanie polega na tym, że użytkownik deklaruje ile wartości wprowadzi, po czym wyświetla się inputbox. Wartości wprowadzane do inputboxa sa zapisywane w memo. Domyślam się ze powinienem to zrobić na pętli, której ilość powtórzeń była by równa wartości wprowadzanych liczb przez użytkownika. Niestety gdy robię pętle a w niej funkcje if to nie działa mi to poprawnie... z góry dzięki za pomoc.

edytowany 1x, ostatnio: madmike
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Nie rozumiem dokładnie w czym problem. Pokaż kod i powiedz co nie działa.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
AR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:23
0

Wyglada to tak:

Kopiuj
a:=StrToInt(Edit1.Text);
for x:=1 to a do
begin
b:=inputbox('','Jakis tam tekst zachety:','');
Memo1.Lines.Add(b);

No i teraz załóżmy, że user wpisze do edita 10, to wyświetli mu się kolejno 10 inputboxów, a wartości z nich zostaną zapisane w memo.
Problem mam z tym, ze chciałbym wskazać najmniejsza i największa wartość przez niego wprowadzoną.

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Acha, czyli wyznaczanie najmniejszego i największego elementu ze zbioru tak? Podam prostszy przykład: użytkownik wpisuje 20 liczb w konsoli i na koniec wyświetlasz mu największą i najmniejszą, o to chodzi?

http://edu.i-lo.tarnow.pl/inf/alg/001_search/0033.php

Trochę możesz się nie połapać, to ci powiem wprost przepis na wyszukiwanie min i max:

  • pierw wczytujesz wszystkie liczby np. do tablicy. (od razu z inputów)
  • ustawiasz min i max na pierwszy element.
  • iterujesz do końca, jeżeli aktualny jest mniejszy od min to min się zmienia na aktualny
  • to samo z max.

Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
edytowany 2x, ostatnio: xeo545x39
AR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:23
0

tak oto chodzi tylko chodzi tez o to, że ilość wprowadzanych liczb jest ustalana przez użytkownika.

pelsta
  • Rejestracja:prawie 19 lat
  • Ostatnio:20 dni
  • Postów:819
0

Ilość wprowadzonych liczb będziesz miał w Memo1.Lines.Count a także w StrToInt(Edit1.Text)

edytowany 2x, ostatnio: pelsta
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12165
0

Sprawa jest bardzo prosta; Ja podam Ci rozwiązanie dla aplikacji konsolowej wykorzystującej macierz przechowującą liczby typu Word, Ty zaś przeinacz ją tak, by pasowała do Twojego projektu;

Kopiuj
program GetMinMax;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Dialogs;

type
  TNumArr = array of Word;

  function _Min(aNum: TNumArr): Word;
  var
    I: Word;
  begin
    Result := 65535;

    for I := Low(aNum) to High(aNum) do
      if aNum[I] < Result then
        Result := aNum[I];
  end;

  function _Max(aNum: TNumArr): Word;
  var
    I: Word;
  begin
    Result := 0;

    for I := Low(aNum) to High(aNum) do
      if aNum[I] > Result then
        Result := aNum[I];
  end;

var
  aNum: TNumArr;
  wCount, I: Word;
begin
  Write('Podaj ilosc wprowadzanych liczb: ');
  ReadLn(wCount);

  SetLength(aNum, wCount);

  for I := Low(aNum) to High(aNum) do
    aNum[I] := StrToInt(InputBox('Liczby', 'Podaj [' + IntToStr(I) + '] liczbę', '0'));

  WriteLn(#10'Wartosc minimalna: ', _Min(aNum));
  Write('Wartosc maksymalna: ', _Max(aNum));

  ReadLn;
end.

Proste, prawda?


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
xeo545x39
Macierz może być jednowymiarowa? Edit: No dobra może.
AR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:23
0

A gdybym chciał to zrobić na instrukcji warunkowej i pętli? była by opcja?
jeżeli tak to w jaki sposób mam to zrobić?

edytowany 1x, ostatnio: #Artur
Zobacz pozostałe 14 komentarzy
xeo545x39
Znaczy się Integer'y, to pascal..
AR
no tak ale to jak ma wygladac if? if memo1.lines[zmienna]>memo1.lines[zmienna2] then..?
madmike
Posty są do komentowania - przenieście się z dyskusją i kodami do postów!!!!!!!!!!!!!!!!!!!
xeo545x39
@madmike mamo nie krzycz! <cry>
flowCRANE
Racja @madmike, piszcie posty :)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12165
1
#Artur napisał(a)

A gdybym chciał to zrobić na instrukcji warunkowej i pętli? była by opcja?

Tu jest pętla, warunki też; Nie wiem za bardzo o co Ci chodzi i gdzie jeszcze i po co chciałbyś dorobić pętle i warunki; Podaj precyzyjniej to, co chcesz wykonać;


@#Artur, uczysz się trochę od tyłu; Najpierw naucz się podstawowych elementów języka, później baw się apliakcjami okienowymi i komponentami; Inaczej będziesz miał problemy żeby pewne rzeczy zrozumieć i oprogramować;


Coś takiego...?:

Kopiuj
procedure TForm1.Button1Click(Sender: TObject);
var
  wMax, wMin, wCurr, I: Word;
begin
  { WARTOŚCI DOMYŚLNE }
  wMax := 0;
  wMin := 65535;

  for I := 0 to memNum.Lines.Count - 1 do
    begin
      { KONWERCJA ŁAŃCUCHA NA LICZBĘ }
      wCurr := StrToInt(memNum.Lines.Strings[I]);
      { MIN }
      if wCurr < wMin then wMin := wCurr;
      { MAX }
      if wCurr > wMax then wMax := wCurr;
    end;
end;
Identyfikator Opis
memNum kontrolka z klasy TMemo, w której przechowujesz liczby
wCurr liczba, która została pobrana z aktualnej linii komponentu
wMin wartość minimalna
wMax wartość maksymalna
Wklej ten kod gdzie chcesz, niekoniecznie pod zdarzenie OnClick przycisku Button1;

Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
xeo545x39
Trochę jestem na forum już i dalej nie wiem jak tą linię taką zrobić.. Powiesz mi? :DD
AR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:23
0

Udało mi się to zrobić takim sposobem jakim chciałem, chodziło o takie coś:

Kopiuj
for x:=1 to a do
   if StrToInt(Memo1.Lines[n])>max then
      begin
         max:=StrToInt(Memo1.Lines[n]);
         n:=n+1;
      end
   else
      begin
         max:=max;
         n:=n+1;
      end;
end;
flowCRANE
"max:=max" - po co to?!
AR
No w sumie zbędne xD a da rade w jedenej petli dodac jeszcze min?
pelsta
Przecież Furious Programming zrobił to w jednej pętli.
pelsta
  • Rejestracja:prawie 19 lat
  • Ostatnio:20 dni
  • Postów:819
0

Powinno być tak

Kopiuj
for x:=0 to a-1 do
   if StrToInt(Memo1.Lines[x])>max then
      max:=StrToInt(Memo1.Lines[x]);

A jeszcze lepiej

Kopiuj
for x:=0 to Memo1.Lines.Count-1 do
   if StrToInt(Memo1.Lines[x])>max then
      max:=StrToInt(Memo1.Lines[x]);

Oczywiście przed pętlą należy przyporządkować do max jakąś bardzo małą liczbę (w zależności od tego jakich liczb spodziewasz się w Memo1)

Szarp
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:48
1

Można też tak:

Kopiuj
uses
  Math;
Kopiuj
var
  i, iMax, iMin: Integer;
begin
  iMax := Low(Integer);
  iMin := High(Integer);

  for i := 0 to Memo1.Lines.Count - 1 do
    begin
      iMax := Max(iMax, StrToInt(Memo1.Lines[i]));
      iMin := Min(iMin, StrToInt(Memo1.Lines[i]));
    end;
end;
Zmienna Opis
iMax wartość maksymalna
iMin wartość minimalna
Memo1.Lines.Count Ilość linii/liczb w Memo1
Funkcja Opis
---------------- ----------------
High(Integer) Tutaj: zwraca najwyższą wartość typu Integer.
Low(Integer) Tutaj: zwraca najniższą wartość typu Integer.
Max(arg1, arg2) Spośród liczb arg1 i arg2 zwraca tą większą.
Min(arg1, arg2) Spośród liczb arg1 i arg2 zwraca tą mniejszą.
Dzięki modułowi <a href"http://4programmers.net/Delphi/Moduły/Math">Math</a> możemy używać funkcję Max() i Min(), oraz wiele innych.

Moonless Sky
Becoming the Getsuga itself.
edytowany 6x, ostatnio: Szarp
Mariusz Bruniewski
Mariusz Bruniewski
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Świecie
0

albo tak:

Kopiuj
procedure TForm1.Button1Click(Sender: TObject);
var
  max, min, i, ii :integer;
begin

  max:=strtoint(Memo1.Lines.Strings[0]);
  min:=max;

  for i:=1 to Memo1.Lines.Count-1 do
  begin

    ii :=strtoint(Memo1.Lines.Strings[i]);

    if ii > max then
      max := ii;

    if ii < min then
      min := ii;

  end;

  Showmessage('Wartość max. '+IntToStr(max)+' Wartość min. '+IntToStr(min));

end;

Umysł pozytywny szuka sposobów, jak coś wykonać; umysł negatywny wyszukuje sposoby, by uzasadnić, że czegoś nie można zrobić.
~~ Napoleon Hill ~~
pelsta
Fajny pomysł na wartości początkowe min/max
flowCRANE
Dokładnie; Ja używam osobiście w takich sytuacjach "Min := High(Typ)" i "Max := Low(Typ)" dla wartości początkowych;
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)