Pereiti prie turinio

Rekomenduojami pranešimai

Parašiau programą, manau užduoties sąlygos nereik. Ir bėda tame, kad nesukompiliuoja, rašo file nr.2 not found.

program masyvas;
type mas = array [1..1000] of integer;
var n:integer;
   m:mas;
procedure skaityti;
var Df:text;
     i:integer;
begin
 Assign(Df, 'duom1.txt');
 Reset(Df);
 Readln(Df, n);
 for i:=1 to n do
 Read(Df, m[i]);
 Close(Df)
end;
Procedure minmax(var min, max, nrmin, nrmax : integer);
var i:integer;
begin
min:=m[1]; nrmin:=1; max:=m[1]; nrmax:=1;
 for i:=2 to n do
  begin
   if min>m[i]
    then begin
     min:=m[i]; nrmin:=1;
         end;
   if max<m[i]
    then begin
     max:=m[i]; nrmax:=1;
         end;
  end;
end;
Function vidurkis:real;
var i:integer;
    sum:real;
begin
 sum:=0;
 for i:=1 to n do
 sum:=sum+m[i];
 vidurkis:=sum/n;
end;
Procedure lygnelyg(var kl,kn:integer);
var i:integer;
begin
kl:=0; kn:=0;
for i:=1 to n do
 if m[i] mod 2 = 0  then kl:=kl+1
                    else kn:=kn+1;
end;
var did,maz,didnr,maznr,kl,kn:integer;
     vid:real;
     Rf:text;
begin
skaityti;
minmax(maz, did, maznr, didnr);
lygnelyg(kl,kn);
vid:=vidurkis;
Assign(Rf, 'rez.txt');
Rewrite(Rf);
Write(Rf, 'Didziausias yra ',did);
WriteLn(Rf, 'Jo eiles nr yra ',didnr);
WriteLn(Rf, 'Maziausias yra ',maz);
WriteLn(Rf, 'Jo eiles nr yra ',maznr);
WriteLn(Rf, 'Masyve yra lyginiu ',kl);
WriteLn(Rf, 'Masyve yra nelyginiu ',kn);
WriteLn(Rf, 'Vidurkis yra ',vid:2:2);
Close(Rf);
end.



Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

Na kad nekurti naujos temos tai rašau čia.

Parašiau programą kuri iš dviejų pateiktų masyvų sudaro trečią masyvą. Ir iškilo bėda kai sukompiliuoja programą rašo "Bad numeric format 106", žinau kad klaida kintamųjų tipe, bet niekaip nerandu.

Kodas:

 

program pvz;
type mas = array[1..100] of real;
var n : integer;
    a,b,c : mas;
procedure skaityti;
var Df:text;
     i:integer;
 begin
 Assign(Df, 'duom.txt');
 Reset(Df);
 ReadLn(Df, n);
 For i:=1 to n do
 ReadLn(Df, a[i]);
 ReadLn(Df);
 For i:=1 to n do
 Readln(Df, b[i]);
 Close(Df)
 end;
Procedure masc;
var i:integer;
 begin
  for i:=1 to n do
  c[i]:=a[i]+b[i];
 end;
Function Sumc : real;
var i:integer;
    sum:real;
 begin
  sum:=0;
  for i:=1 to n do
  sum:=sum+c[i];
  Sumc:=sum;
 end;
Procedure rikiuotic;
var i,j,d:integer;
    r:real;
begin
 for i:=1 to n-1 do
  begin
   d:=i;
   for j:=i+1 to n do
    if c[j]>c[d]
     then d:=j;
  r:=c[i]; c[i]:=c[d]; c[d]:=r
  end
end;
Procedure rasyti;
var i:integer;
    Rf:text;
begin
Assign(Rf, 'rez.txt');
Rewrite(Rf);
Write(Rf, 'Gauto masyvo suma = ');
WriteLn(Rf, Sumc:6:2);
WriteLn(Rf, 'surikiuotas masyvas : ');
 for i:=1 to n do
  Write(Rf, c[i]:6:2, '' );
Close(Rf);
end;
begin
skaityti;
masc;
rikiuotic;
rasyti
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na kad nekurti naujos temos tai rašau čia.

Parašiau programą kuri iš dviejų pateiktų masyvų sudaro trečią masyvą. Ir iškilo bėda kai sukompiliuoja programą rašo "Bad numeric format 106", žinau kad klaida kintamųjų tipe, bet niekaip nerandu.

Kodas:

 

program pvz;
type mas = array[1..100] of real;
var n : integer;
    a,b,c : mas;
procedure skaityti;
var Df:text;
     i:integer;
 begin
 Assign(Df, 'duom.txt');
 Reset(Df);
 ReadLn(Df, n);
 For i:=1 to n do
 ReadLn(Df, a[i]);
 ReadLn(Df);
 For i:=1 to n do
 Readln(Df, b[i]);
 Close(Df)
 end;
Procedure masc;
var i:integer;
 begin
  for i:=1 to n do
  c[i]:=a[i]+b[i];
 end;
Function Sumc : real;
var i:integer;
    sum:real;
 begin
  sum:=0;
  for i:=1 to n do
  sum:=sum+c[i];
  Sumc:=sum;
 end;
Procedure rikiuotic;
var i,j,d:integer;
    r:real;
begin
 for i:=1 to n-1 do
  begin
   d:=i;
   for j:=i+1 to n do
    if c[j]>c[d]
     then d:=j;
  r:=c[i]; c[i]:=c[d]; c[d]:=r
  end
end;
Procedure rasyti;
var i:integer;
    Rf:text;
begin
Assign(Rf, 'rez.txt');
Rewrite(Rf);
Write(Rf, 'Gauto masyvo suma = ');
WriteLn(Rf, Sumc:6:2);
WriteLn(Rf, 'surikiuotas masyvas : ');
 for i:=1 to n do
  Write(Rf, c[i]:6:2, '' );
Close(Rf);
end;
begin
skaityti;
masc;
rikiuotic;
rasyti
end.

 

 

Manau blogai nuskaitai duomenų failą.

Pateik pavyzdinį duom.txt failą čia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Duom.txt

6
12 34.5 23 34.435 33 53
34 34 24.5 22 12 65

 

Taip ir yra. Tavo procedūra nuskaito, kad bus 6 elementai ir naudoji readln (eilutėms skaityti). Taigi į masyvo pirmą narį įkelia antros eilutės (pirmos eilutės su masyvo duomenimis) pirmą skaičių, tada kitos eilutės pirmą skaičių. Kelias į kitą eilutę, o jų daugiau nebėra :) Readln pakeisk į read:

procedure skaityti;
var Df:text;
     i:integer;
 begin
 Assign(Df, 'duom.txt');
 Reset(Df);
 ReadLn(Df, n);
 For i:=1 to n do
 Read(Df, a[i]);   //šioj eilutėj skaitysi n elementų (šiuo atveju 6)
 ReadLn(Df);       //persikelsi į kitą eilutė
 For i:=1 to n do
 Read(Df, b[i]);   //toj eilutėj skaitysi n elementų
 Close(Df)
 end;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip ir yra. Tavo procedūra nuskaito, kad bus 6 elementai ir naudoji readln (eilutėms skaityti). Taigi į masyvo pirmą narį įkelia antros eilutės (pirmos eilutės su masyvo duomenimis) pirmą skaičių, tada kitos eilutės pirmą skaičių. Kelias į kitą eilutę, o jų daugiau nebėra :) Readln pakeisk į read:

procedure skaityti;
var Df:text;
     i:integer;
 begin
 Assign(Df, 'duom.txt');
 Reset(Df);
 ReadLn(Df, n);
 For i:=1 to n do
 Read(Df, a[i]);   //šioj eilutėj skaitysi n elementų (šiuo atveju 6)
 ReadLn(Df);       //persikelsi į kitą eilutė
 For i:=1 to n do
 Read(Df, b[i]);   //toj eilutėj skaitysi n elementų
 Close(Df)
 end;

Pakeičiau, bet vistiek tą pačią klaidą meta.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Parašiau dar vieną kodą ir klaida ta pati

Bad numeric format 106.

Duom.txt turinys:

10
1987.23, 456.57, 235.89, 789.48, 978687.67, 5789.54, 65879.58, 796.68, 123.69.

Programos kodas:

program Noname9;
type mas = array [1..100] of real;
var m:mas;
   n:integer;
procedure skaityti;
var Df:text;
    i:integer;
begin
  Assign(Df, 'duom.txt');
  Reset(Df);
  Readln(Df, n);
  Readln(Df);
  For i:=1 to n do
  Read(Df, m[i]);
  Close(Df)
end;
procedure minmax(min,max:real; nrmin,nrmax:integer);
var i:integer;
begin
min:=m[1]; nrmin:=1;  max:=m[1]; nrmax:=1;
if min>m[i]
 then begin
  min:=m[i]; nrmin:=i
 end;
if max<m[i]
 then begin
  max:=m[i]; nrmax:=i
 end
end;
function vidurkis:real;
var vid,sum:real;
    i:integer;
begin
 sum:=0;
 vid:=0;

  for i:=1 to n do
    sum:=sum+m[i];

 vid:=sum/n;
 vid:=vidurkis
end;
Procedure rikiuoti;
var i,j,d:integer;
    c:real;
 begin
  for i:=1 to n-1 do
   begin
    d:=i;
     for j:=i+1 to n do
      if m[j]>m[d]
       then d:=j;
   c:=m[i]; m[i]:=m[d]; m[d]:=c
   end
 end;
var i,j,d,nrm,nrd:integer;
    vid,maz,did:real;
    Rf:text;
 begin
 skaityti;
 minmax(maz,did,nrm,nrd);
 rikiuoti;
 vid:=vidurkis;
 Assign(Rf, 'rez.txt');
 Rewrite(Rf);
 Write(Rf, 'Didziausias indelis yra ',did:2:2);
 WriteLn(Rf, 'Didziausio indelio eiles nr(kodas)',nrd);
 WriteLn(Rf, 'Maziausias indelis yra ',maz:2:2);
 WriteLn(Rf, 'Maziausio indelio eiles nr(kodas) ',nrm);
 WriteLn(Rf, 'Indeliu sumos vidurksi yra ',vid:2:2);
 WriteLn(Rf, 'Surikiuotas masyvas: ');
  for i:=1 to n do
   write(Rf, m[i]:6:2, '');
 Close(Rf);
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Blogai nuskaitai duomenų failą:

procedure skaityti;
var Df:text;
    i:integer;
begin
  Assign(Df, 'duom.txt');
  Reset(Df);
  Readln(Df, n);        //nuskaitai skaičių (šiuo atveju 10) IR PEREINI Į KITĄ EILUTĘ (kurioje yra tavo skaičiai
  Readln(Df);           //PEREINI į dar KITĄ eilutę. kurioje jau nėra nieko
  For i:=1 to n do      
  Read(Df, m[i]);       //meta skaičiaus formato klaidą, nes ieško real'o, o jo neranda
  Close(Df)
end;

 

Taigi ištrink eilutę Readln(Df);

Čia pirmas dalykas. Antras dalykas tas, kad tavo duom faile prie skaičių yra kableliai, tai jis jų kaip real visai neatpažįsta ir jų tik 9 nors pirmoj eilutėj nurodyta, kad bus 10.

 

 

Dar:

 

procedure minmax(min,max:real; nrmin,nrmax:integer);
var i:integer;
begin
min:=m[1]; nrmin:=1;  max:=m[1]; nrmax:=1;
if min>m[i]                                 //naudoji m[i], nors i jokios priskirtos reikšmės neturi. meta klaidą
 then begin
  min:=m[i]; nrmin:=i
 end;
if max<m[i]
 then begin
  max:=m[i]; nrmax:=i
 end
end;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Klaidos nebemeta, bet rezultatu faile blogi atsakymai, tik surikiavimas masyvo veikia. Prie kitu visu atsakymu 0

 

Jei nori, kad grąžintų reikšmę, prirašyk var:

procedure minmax(var min,max:real; var nrmin,nrmax:integer);

 

Bloga funkcija:

function vidurkis:real;
var vid,sum:real;
    i:integer;
begin
 sum:=0;
 vid:=0;

  for i:=1 to n do
    sum:=sum+m[i];

 vid:=sum/n;
 vid:=vidurkis        //čia turi būti vidurkis:=vid
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ą...