Kā uzģenerēt skaitli (gadadienu) no 0 – 365, lai izvada datumu

Sākumlapa Forumi Citas tēmas Viss pārējais Kā uzģenerēt skaitli (gadadienu) no 0 – 365, lai izvada datumu

Tiek skatīts 6 ierakstu – 1 līdz 6 (no 6 kopumā)
  • Autors
    Ieraksti
  • #157789
    krisis262
    Participant

    man ir tāds uzdevums dots, kad ir jāuzģenerē skaitli no 0 – 365 un aprēķināt, kāds datums atbilst šim skaitlim. Skaitli un datumu izdrukāt uz ekrāna. Uzdevums jāveic iekš Turbo Pascal.

    Ja kāds varētu man šo programmu uzrakstīt, noteikti nepaliktu parādā, jo ļoti steidzami vajag, bet programmēšana nav mana stiprā puse + veselības problēmas, bet skolotājai jau po.. uz to visu

    #294262
    Aldis
    Participant

    Š odien piektdiena! 😀

    Paņem uztaisi mainīgo “diena” hotj intiger..

    Tad iedod viņam vērtību randomā.. diena:=Random(365);

    un tad ja uzdevuma kvalitāte nav tik svarīga kā dabūt laukā tieši datumu..

    IF diena < 31 THEN menesis: = janvaris; datums: = diena – 31; un taa visus 12 meeneshus.. 😀 Bet vienu gan es īsti nesaprotu, tas domāts tikai no garā vai īsā gada? 🙂 Laikam jau garā. 🙂

    #294263
    mikelis_a
    Participant

    Nu nezinu vai tas ies cauri, tomēr skolotājs grib redzēt kādu algoritmu nevis primitīvu hārdkodētu aprēķinu 😉

    Ä€tri iegooglēju un atradu dažus pseidokodus, viens pat izskatījās noderīgs 😉

    https://alcor.concordia.ca/~gpkatch/gdate-algorithm.html – lai gan nav tieši tas, kas vajadzīgs, bet var rosināt uz pareizo domu 😉

    Pats uzrakstītu, bet pascal ir pilnībā aizmirsies 🙂

    #294264
    Crow
    Participant

    Code:

    program dayofyr;

    var
    i, day: integer;

    const
    // Number of days in each month
    ndays: array[0..11] of integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    // Name of each month
    months: array[0..11] of string = (’Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘Mai’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’);

    begin
    Randomize;
    // Works for non-leap year only!
    day := Random(365) + 1;
    WriteLn(’Random number: ‘, day);

    // For each month
    for i := 0 to 11 do
    begin
    // If random number is larger than days in the current month
    if day > ndays[i] then
    // Subtract that number and try the next month
    day := day – ndays[i]
    else
    begin
    WriteLn(’The date is: ‘, months[i], ‘ ‘, day);
    break;
    end;
    end;

    ReadLn;
    end.

    Fiksais piegdienas variants. Lai gan diez vai jēdzīgāk varētu, jo programmēšana pamazām tiek veiksmīgi aizmirsta. Turbopālis arī man nav, ar ko pārbaudīt, bet vajadzētu iet.

    Un tas ir ar parasto gadu. Garajam gadam būs pāris nesmuku if jāpieliek…

    Pārtulko no angļu (jo latviski rakstītu kodu ienīstu principā) un arī būsi kaut ko izdarījis :>

    #294265
    usins
    Participant

    Reāli garie gai nav jāierēķina, jo nav prasīts ievadīt kuram gadam. ja būtu prasīts, tad vnk pieifotu, vai gadskaitlis nav mazāks par to, no kura sāka skaitīt tos katru 4. gadu un vai gada skaitlis dalās ar 4, ja dalās, tad ir garais.

    #294266
    Crow
    Participant

    Prasīts nav, bet darīt var. Es savulaik tā izbraucu cauri, lieki sarežģīdams līdz riebumam, ka man pat neprasīja paskaidrot, kā viss darbojas 😀 Nu var uzrauties arī, tad ir tintē 😀

    Viens bet: Ja gada skaitlis dalās ar 100, bet ne ar 400, tad arī nav garais. 2000 bija, 2100, 2200 un 2300 nebūs garie, lai gan ar 4 dalās.

Tiek skatīts 6 ierakstu – 1 līdz 6 (no 6 kopumā)
  • Jums ir jāpieslēdzas sistēmai, lai varētu komentēt šo tēmu.
Jaunākais portālā