witam. Mam problem z zadaniem domowym.To znaczy zrobiłem go ale wydaje mi się dość prymitywnie i chciałbym go udoskonalić. Może najpierw podam treść zadania “Stwórz algorytm zliczający sumę cyfr z twojej daty urodzenia i opisz ją czy jest parzysta czy nieparzysta”. Program mamy zrobić w programie Magiczne bloczki. Stworzyłem coś takiego http://imageshack.us/photo/my-images/813/parzystanieparzysta.png/. Nie podoba się mi ze trzeba po kolei wpisywać liczby, niestety tylko taki pomysł przyszedł mi do głowy… Nie mam pojęcia jak to zrobić gdyż za np.za A wstawię rok a za B miesiąc program policzy to 1995+03 zamiast 1+9+9+5+0+3. Jestem zielony w tych sprawach a chciałbym się czegoś nauczyć, jestem w pierwszej klasie technikum. Przepraszam jeśli taki temat już istnieje ale szukałem czegoś podobnego ale nie znalazłem… znalazłem tylko jak zrobić ta rozdzielke na liczbę nieparzysta a parzysta i nie wiem czy kapuję to tak w 100% chodzi o “mod 2==0” jeśli byłby ktoś tak miły mógł by mnie na to naprowadzić i udzielić jakiej kolwiek pomocy?
Na tym forum nie odrabiamy zadań domowych. Dlatego takiego tematu nie znalazłeś.
Ogólnie możesz zrobić tak jak ty masz, albo tak jak ja bym to zrobił:
-metoda twoja:
–bierzesz dzień, miesiąc, rok, osobno
–dzielisz wszystko na pojedyncze cyfry i dodajesz do wyniku(cyfra=cyfra mod 10; potem dzielisz liczbę przez 10 by pozbyć się ostatniej cyfry)
–potem sprawdzasz czy jest parzysta (mod=reszta z dzielenia), a parzysta to taka, która podzielona przez 2 nie daje reszty (czyt masz dobrze)
-moja metoda
–pobierasz w formie d.m.r
–lecisz forem przez string, wszystko prócz kropek konwertujesz na int po czym sumujesz
Moja metoda wyglądała by mniej więcej tak:
var wynik,i:integer,tmp;
data:string;
begin
writeln ('podaj date (np 10.8.1992)');
readln(string data);
for i:=1 to lenght(data) do
if(data[i]<>'.')
wynik=val(data[i],tmp)+wynik;
writeln(wynik);
end.
Nie jestem pewien czy chodziło Ci o takie coś http://imageshack.us/photo/my-images/820/pczynp.png/ ale chyba działa poprawnie. Chciałbym się też upewnić ze to “mod 10” dzieli mi liczbę na 10 z której dostaje reszta z dzielenia która określa czy jest liczba parzysta czy nie ? Sory jeśli pisze bzdety ale sam jakoś do tego dochodzę…
Źle, masz przelecieć wszystkie cyfry z liczby, napisałem ci jak to masz zrobić. A ty dalej robisz tak jak miałeś na początku.
ok ok postaram się ale mógł byś mi dokładnie wytłumaczyć jakich komend mam tam użyć ? mieliśmy zaledwie kilka lekcji z tym nie znam ich za dużo… chociaż to “dzielisz wszystko na pojedyncze cyfry i dodajesz do wyniku” czyli jak mam 1990.03.16 to mam je podzielić tak: 1+9+9+0+0+3+1+6 i dodać do wyniku? bardzo Cie przepraszam ale po prostu tego nie rozumiem… Podałeś mi wcześniej swój kod ale ja go po połowie odczytam i koniec, po prostu zrozum to są początki musisz być dla mnie bardziej dokładny.
Raczej coś takiego: http://i51.tinypic.com/2rzaptf.png
Jako że rok ma aż 4 cyfry, zrobiłem go w oddzielnym bloku. Wyciąga pierwszą (poprzez %10)i potem dzieli przez 10 i tak 4 razy.
Nie wiem tylko czy w MB nie trzeba zaokrąglać, bo przy dzieleniu przez 10 niektóre interpretery (np. JavaScirpt) robią z liczby całkowitej rzeczywistą.
Nie mam Magicznych Bloczków, tylko JavaBlock, mojego autorstwa alternatywę, z której już kilka szkół skorzystało (m.in. z racji Sędziego do sprawdzania wielu prac jednocześnie:p)