eMatematikas Prisijunk Forumas Užduotys Testai Pradžia

Kaip išspręsti paprastą paskalio užduotį


Sveiki, nesenai pradejau mokintis programavima paskaliu, todel dar nelabai suprantu kaip kaikuriuos algoritmus rasyt. Uzdavinys toks:

Sviesoforas veikia pagal toki algoritma: kiekvienos valandos pirmasias tris minutes dega zalia sviesa, po to dvi minutes - raudona, po to vel tris minutes zalia ir t.t. Zinoma, kiek minuciu t ( t - sveikasis skaicius) praejo nuo valandos pradzios. Parasykite programa kuri nustatytu, kokia sviesa dega.
Kai t = 12, turi buti spausdinama: Dega zalia sviesa. Kai t = 13, turi buti spausdinam:  Dega zalia sviesa, tuoj uzsidegs raudona. Kai t = 5, turi buti spausdinama: Dega raudona sviesa, tuoj uzsidegs zalia.

Niekaip nesuprantu kaip ispresti, padekit ^^

pakeista prieš 12 m

su ifais patikrini: jeigu t dalus is 5 - Dega raudona sviesa, tuoj uzsidegs zalia,
jeigu padalinus is 5 yra liekana 3 -  Dega zalia sviesa, tuoj uzsidegs raudona, jeigu liekana mazesne uz 3 - dega zalia sviesa, jeigu netinka nei vienas atvejus - dega raudona.

Dekui uz atsakyma, bet vienoje vietoje nemoku padaryt. Nezinau kaip parasyt kad degtu raudona sviesa? Bandziau visaip su 'else':

Write ('Iveskite t: ');  Readln(t);
  if t div 5 < 3 then
      writeln('Dega zalia sviesa');
  if t mod 5 = 3 then
      writeln('Dega zalia sviesa, tuoj uzsidegs raudona');
  If t div 5 = 0 then
      writeln('Dega raudona sviesa, tuoj uzsidegs zalia');
  else
      writeln('Dega raudona sviesa');

visur turi but mod. tu tikrini ar dalinasi, ty ar liekana lygi nuliui. be to teisingiau butu kad naudotum else ifa, nes siuo atveju jis tikrins visas salygas, o reikia tik kad viena butu teisinga. su raudona sviesa viskas gerai.

pakeista prieš 12 m

Aciu, viskas veikia puikiai ^^

Nedaug laiko praejo ir vel strigau :D.  Paprastas labai 'for' ciklo uzdavinys, reikia surasti u vidurki:

var n, i: integer;
    u, uvid: real;
begin
  Write('Kiek mokiniu '); Readln (n);
  uvid := 0;
  for i := 1 to n do
    begin
      write ('Iveskite mokiniu ugius '); Readln (u);
      uvid := ????
    end;
  Writeln ('Vidutinis klases mokiniu ugis uvid: ', uvid:6:2);
  Readln;
end.

Niekaip nesuprantu ka irastyti vietoje klaustuku? Ar cia visa programa bloga?

Write('Kiek mokiniu '); Readln (n);
uvid := 0;
Write('Ivesktie mokinio ugius'); Readln(u);
for i:=1 to n do
begin
  uvid := uvid + u/n;
  if(i<>n)
  Readln(u);
end;

Neprisimenu as paskalio sintakses bet mazdaug turetu buti taip. C kalboje tai atrodytu:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i;
    float uvid,u;
    scanf("%d",&n);
    uvid = 0;
    printf("Iveskite mokiniu ugius:\n");
    scanf("%f",&u);
    for(i=1;i<=n;i++)
    {
        uvid = uvid + u/n;
        if(i!=n)
        scanf("%f",&u);
    }
    printf("%f",uvid);
    return 0;
}


Ir siaip patarimas, programuok pats nesvarbu kokias nesamones berasytum, kitaip neismoksi, nieko nedarydamas.

pakeista prieš 12 m

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »