Jump to content

Pascal- masivu izveide un analize


Zyx-Cheater
 Share

Recommended Posts

Sveiki!

Šobrīd studēju un mācos darboties pascālā, programmēšana man nekad nav īsti gājusi un vienmēr sagādājusi lielas problēmas.

Jau vairākas dienas cīnos ar vienu uzdevumu, kuru man uzdeva augstskolā, un netieku galā ar dažādām nepilnībām.

 

Mans uzdevums ir Viendimensiju masīvā (masīvs ar dažādām skaitliskām vetrtībām, 50 elementi) noteikt mazākā elementa vērtību un indeksu, analizēt visus masīva elemntus, kas ir lielāki par 3.

 

Man ir jāuzstaisa divas programmas, viena kas izveidos piecus masīvus, un otra, kas viņus analizēs un atradīs tuvāko vērtību 3, kas ir lielāka par 3.

 

Ar pirmo darba daļu itkā galā esmu ticis, programma izveido 5masīvus, kuri ir txt failā.

 

Programmas teksts, kas izveido masīvus:

 

program masivs;
uses crt;
var mas:array[0..49] of real;

i, j:integer;
a, x, solis:real;
fails:text;

begin

writeln('Programma, kas genere masivu');
assign(fails, 'masivs.txt' );
rewrite(fails);

for j:=1 to 5 do
begin
writeln;
writeln;
writeln('Ievadi x vertibu:');
readln(x);
writeln('Ievadi a vertibu:');
readln(a);
writeln('Ievadi soli par kadu pieaugs masiva elementi:');
readln(solis);


writeln;
writeln('Masivs:');
writeln;
        for i:=0 to 49 do
        begin
             mas:=a*x;
             x:=x+solis;
             write(mas:8:0, '');
             write(fails,mas:8:0, '');
        end;
        writeln(fails);

end;

writeln('');
writeln('');
close(fails);
readkey;
end.

 

 

>>>>>

 

Otras programmas teksts kas analizē masīvus:

 

program masivs;
uses crt;
var mas:array[0..49] of real;
i, j, l, id, ind:integer;
b, a:real;
fails:text;

begin
writeln('Programma, kas analize masiva elementus');

assign(fails, 'masivs.txt' );
reset(fails);

for j:=0 to 4 do
begin
writeln;

for i:=0 to 49 do
begin
read(fails,mas);
write(mas:8:0, '');
end;
writeln;

for l:=0 to 49 do
begin
if (mas > 3) then
b:= mas;
id:= l;
break
end;


for i:=0 to 49 do
begin
    if (mas > 3) then
    if (mas < b) then
        begin
        b:= mas;
        id:=i;
        end;
end;
writeln('Vismazaka masiva elementa, kas lielaks par 3 vertiba ir', b:3:0, ' ', 'un ta indeks ir=', id, '');
end;
writeln('');
writeln('');
write(fails);
close(fails);
readkey;
end.

 

>>>

Pievienošu bildi, kurā redzama šī programma.

Tajā ir nepilnības ar kurām nespēju tikt galā, šajā forumā noteikti lielākā daļa ir gudrāki par mani programmēšanā un ceru uz viņu padomiem un palīdzību.

Programma jaucās ar indeksiem un brīžam arī ar skaitļu vērtībām.

Nesaprotu kur ir manas kļūdas tekstā un kapēc viss nestrādā kā vajag.

 

 



Tikko iedomājos izņemt no otrā cikla: break , bet tagad izskatās ka programma negattīvos skaittļus uzttver kā pozitīvus.

 

masivs.txt

post-72807-0-46501900-1383688592_thumb.jpg

post-72807-0-97579100-1383688854_thumb.jpg

Link to comment
Share on other sites

Palīdzēt ar uzdevumu nevarēšu, bet varu ieteikt, ka kodu labāk izvietot ar iekrāsotu sintaksi lasāmības uzlabošanai. Ja forums neatbalsta Pascal , tad ievieto kādā ārējā resursā, piem. http://pastebin.com/

Link to comment
Share on other sites

Šeit ir tava kļūda. 

for l:=0 to 49 do
begin
if (mas[i] > 3) then
b:= mas[i];
id:= l;
break
end

Padomā, kas notiek gadījumos, ja nav tādas vērtības, kas ir lielāka par 3. Šobrīd Tev tur rādās rezultāts no iepriekšējās iterācijas.

Link to comment
Share on other sites

Zyx-Cheater

Paldies par atbildi.

Vakarnakt vēlāk arī pats to sapratu, un izdevās visu uzstaisīt :)

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...