Pereiti prie turinio

Veiksmai su recordais


Rekomenduojami pranešimai

Sveiki,yra tokia programa:

 

Turime vienos savaitės kiekvienos dienos oro temperatūros vidurdienį duomenys. Reikia išdėstyti dienas pradedant nuo šalčiausių.

 

Kontroliniai duomenys:

 

Pirmadienis -13 Ketvirtadienis -17

Antradienis -12.5 Trečiadienis -15

trečiadienis -15 Pirmadienis -13

Ketvirtadienis -17 Antradienis -12.5

Penktadienis -9.2 Penktadienis -9.2

Šeštadienis 0 Šeštadienis 0

sekmadienis 1.5 Sekmadienis 1.5

 

program saltos_dienos;
const M=7;
type
temperatura=record
       diena:string;
       temp:real;
       end;
duom=array[1..M] of temperatura;

procedure reading_sort;
var i,l:integer;
   a:duom;
   pom:real;
begin
for i:=1 to M do
begin
write('Irasyk diena:');
readln(a[i].diena);
write('Irasyk temperatura:');
readln(a[i].temp);
end;
i:=1;
repeat
 i:=i+1;
 l:=i;
 repeat
  if a[i].temp<a[i-1].temp then
   begin
    pom:=a[i].temp;
    a[i].temp:=a[i-1].temp;
    a[i-1].temp:=pom;
   end;
  Dec(l);
 until(l=1);
 writeln(a[i].temp:2:2);
until (i=M);
end;

procedure isvesk;
var i:integer;
   a:duom;
begin
for i:=1 to M do
writeln(a[i].temp:2:2);
end;

begin
 reading_sort;
 isvesk;
 readln;
end.

 

Turiu dvi problemas:

1.Blogai rykiuoja temperatūras

2. Kaip išspausdinti tinkama tvarka rekordus?

 

Gal kas turit idėjų kaip išspręst?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Ivesk duomenis į masyvą

A.dien := savaites_dienas

A.temp := temperaturas

 

2. naudok burbulą

var i, j, pdien, ptemp: integer;

begin

for i:=7 downto 1 do

for j:=2 to i do

if A[j-1].temp > A[j].temp then

begin

pdien := A[j-1].dien;

A[j-1] := A[j].dien;

A[j].dien := pdien;

ptemp := A[j-1].temp;

A[j-1] := A[j].temp;

A[j].temp := ptemp;

end

end;

 

3.spausdink

For i := 1 to 7 do

WriteLn(A.dien,' ',A.temp);

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Ivesk duomenis į masyvą

A.dien := savaites_dienas

A.temp := temperaturas

 

2. naudok burbulą

var i, j, pdien, ptemp: integer;

begin

for i:=7 downto 1 do

for j:=2 to i do

if A[j-1].temp > A[j].temp then

begin

pdien := A[j-1].dien;

A[j-1] := A[j].dien;

A[j].dien := pdien;

ptemp := A[j-1].temp;

A[j-1] := A[j].temp;

A[j].temp := ptemp;

end

end;

 

3.spausdink

For i := 1 to 7 do

WriteLn(A.dien,' ',A.temp);

 

Dekui už paglabą :)

 

Pasinauduojau patarimu ir padariau išvis be rekordų :)

Taigi dabar atrodo taip:

 

program saltos_dienos;
const M=7;
type savaites_dienos=array[1..M] of string;
    temperat=array[1..M] of real;
var
    a:savaites_dienos;
    T:temperat;

procedure reading_sort;
var i,j:integer;
   ptemp:real;
   pdien:string;

 begin
   for i:=1 to M do
     begin
     write('Irasyk diena:');
     readln(a[i]);
     write('Irasyk temperatura:');
     readln(T[i]);
     end;
   for i:=7 downto 1 do
     begin
     for j:=2 to i do
     if T[j-1] > T[j] then
       begin
       pdien := a[j-1];
       a[j-1] := a[j];
       a[j]:= pdien;
       ptemp := T[j-1];
       T[j-1] := T[j];
       T[j] := ptemp;
       end
     end;
 end;

procedure isvesk;
var i:integer;
begin
for i:=1 to M do
writeln(a[i],T[i]:2:2);
end;

begin
 reading_sort;
 isvesk;
 readln;
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...