Zaznaczanie kolorem początkowych liczb az do przekroczenia 100.

0

Witam! Proszę was niezmiernie o pomoc w sprawie pewnej procedury. Z programowaniem u mnie dość kiepsko a na poniedziałek muszę oddac prace do szkoły (jest to konieczne, gdyż bez tego jest 1 na semestr). Częścią programu jest procedura, która "zaznaczy innym kolorem tyle początkowych liczb, ile trzeba by ich suma przekroczyła 100." Te liczy mają byc zaznaczone w tablicy K (dla k<=100) liczb losowych z przedziału <0;10>. Tablicę zrobioną i uzupełnioną liczbami mam, jedyny problem z tym kolorowaniu początkowych liczb do czasu gdy ich suma bedzie wieksza od 100. Mam zrobione dotychczas sumanie w pętli i if'a if suma<102 then, ale jeżeli np. w pewnym momencie po dodanie przed ostatniej liczby okaze sie ze suma juz ma 99 a następną liczbą w tablicy była by np. 5 to suma wynosi 104 po czym mój if jest zły i pokolorowane zostana liczby do momentu sumy 99 a musi byc tak zeby jeszcze te 1 dodatkowo pokolorowało, zeby zawsze było 100 ileś suma tych kolorowych liczb.... Pomóżcie mi jeżeli wiecie jak to zrobić bo ja myśle nad tym już 6,5h ;((

0

Warunek if(suma<100).
Ponadto wpierw sprawdzaj warunek, potem ewentualnie koloruj, a na końcu dodawaj następny składnik.

0

no ja mam tak
if suma<100 then
textcolor(Green);

ale w poleceniu pisze tyle liczb ile trzeba by ich suma PRZEKROCZYŁA 100. TO suma<100 bedzie dobrze? bo wtedy nie przekroczy 100 przeciez... napiszcie mi fragment jakis wiekszy tej czesci programu..

0

No tak sorki... Chodzi o turbo pascala... ale chodzi o to, że ma PRZEKROCZYĆ 100, a nie ze ma byc miejsze... "tyle, ile trzeba by ich suma przekroczyła 100." wiec if suma<=100 bedzie lipna no nie?

0
 for I := 0 to K - 1 do
  begin
    Suma := Suma + Tablica[K];   //Zwiększaj sumę o kolejne pole tablicy.
    if Suma > 100 then    //Jeżeli suma przekroczyła 100 to
      begin
        Koloruj(0, K);   //to jakas funkcja kolorująca od 1-szego znaku do k-tego znaku.
        Break;     //zatrzymaj pętle
      end;
  end;

lub sposobem bogdanasa

while Suma <101 do   //dopuki Suma jest mniejsza
  Suma := Suma + Tablica[K];
  K := K + 1;
  Koloruj(K, K);     //jakaś funkcja która koloruję znaki.
end;
0

Tak trudno to zrozumieć?
Dopóki suma<=100, to zmieniaj kolor. Zatem gdy suma przekroczy 100, to nie zmieniaj koloru.

0

Ja to co piszecie to rozumiem, ale ja w poleceniu mam co innego... Bo wy mi piszecie cały czas kolorowanie do momentu gdy suma bedzie mniejsza lub równa 100, a ja mam ze musi pokolorowac tyle liczb zeby suma ich przekroczyła 100, czyli np. musi byc minimum 101...

0

a moglibyscie napisac kod z czyms innym zamiast tej procedury koloruj? bo nie moge tego rozkminic zbytnio... jak najprosciej zebym wpisał w TP i zeby stykło..

0

TomRiddle, zupełnie mnie nie zrozumiałeś. Twój kod wg bogdansa jest raczej bez sensu.

while Suma <101 do   //dopóki Suma nie przekracza 100, jeżeli liczby w tablicy są zmiennoprzecinkowe, to zamień na while suma<=100
  zmień kolor
  wypisz Tablica[K]
  Suma := Suma + Tablica[K];
  K := K + 1;
  przywróć kolor domyślny
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1