Jump to content

Noderētu palīdzība pascal vidē


CaNNoN
 Share

Recommended Posts

skolā uzdeva šādu uzdevumu

 

||Dota kvadrātiska matrica, kuras elementi ir veseli skaitļi robežās (0,50). Pagriezt matricu par 90 grādiem pretēji pulksteņa rādītāja virzienam un izvadīt uz ekrāna rezultātu. Aprēķināt un izvadīt uz ekrāna dotās matricas otrās rindas elementu summu. ||

 

 

matricas izmēri ir 3x3 un to es mācētu izveidot , bet kā viņu pagriezt pa 90 grādiem pret pulksteņa virzienu :?: :?: :?: un kā norādīt ka summu aprēķina tikai otrajai rindai ??

 

 

Paldies -

 

CaNNoN

Labots - CaNNoN
Link to comment
Share on other sites

1) Nodefinē vēlvienu tādu pašu tukšu matricu;

2) Esošās matricas pēdējās kolonnas vērtības piešķir tukšās matricas pirmajai rindai;

3) priekšpēdējo kolonnu piešķir otrai rindai. Tā ciklā līdz pirmajai kolonnai;

 

4)lai sasumētu otro rindu ciklā maini tikai kolonnas skaitītāju rindas skaitītājs visu laiku ir 2 un summē.

Link to comment
Share on other sites

Ļoti korekta un īsa atbilde, tagad vismaz sapratu kā teorētiski tas ir jādara.

 

Ar kādiem operātoriem var mainīt kolonnu un rindu mainīgos ?? :?:

Link to comment
Share on other sites

oi, gathis - briesmiigi sarezhgjiiti paskaidroji.

 

labaak ar piemeeru:

 

1. matrica

 

|1|2|3|

|4|5|6|

|7|8|9|

 

2. griezham pa 90 graadiem pa kreisi un dabuunam:

 

|3|6|9|

|2|5|8|

|1|4|7|

 

3. saskaitam 2.rindu:

 

2+5+8=15

 

4. programmeejam:

 

1) izveido 2D masiivu [1..3,1..3]

2) ielasam nepiecieshamaas veertiibas, izmantojot ciklu FOR.. TO.. 9 reizes.

3) taa kaa skaitlis 5 (videejais lauks matricaa) paliek nemaniigs, lai kaa groziitu matricu, tad ir vienkaarshi redzams, ka otraa kolonna peec operaacijas - griezham par 90 graadiem pa kreisi - kljuust par otro rindu.

 

kaadas probleemas?! :p

Labots - diegs
Link to comment
Share on other sites

nu to visu es saprotu , bet ja matrica ir randomizēta- kā likt paskalam saprast ka es vēlos 3 kolonu pārvērst pa pirmo rindu u.t.t ?? :?:

Link to comment
Share on other sites

Cik noprotams, tev nav skaidrs pat paši pamati, kā piekļūt masīva šūnām:

 

izlasī šo : Links tur ir aprakstīts un beigās pat ir piemērs ļoti līdzīgs tavējam vajadzīgajam.

Link to comment
Share on other sites

Cik noprotams, tev nav skaidrs pat paši pamati, kā piekļūt masīva šūnām:

 

izlasī šo : Links tur ir aprakstīts un beigās pat ir piemērs ļoti līdzīgs tavējam vajadzīgajam.

 

 

Tieši tā - pašlaik mācos otrajā kursā - pirmā kursa programmēšanas nodarbības netika apmeklētas :grin:

liels paldies - ceru ka izkulšos no šitās ķezas :mrgreen:

 

THX

Link to comment
Share on other sites

3.kolonna -> 1.rinda

 

tagad var izmantot gathis ieteikumu. uztaisi otru masiivu [1..3,1..3] un ar FOR.. TO.. 9 reizes cikla paliidziibu ielasi jaunajaa masiivaa datus, saakot ar, manaa piemeeraa, ciparu 3. Masiivs tev ir jaalasa pa Y koordinaatu, t.i., uz leju.

Link to comment
Share on other sites

tātad man ir jāizveido divi masīvi

 

A un B kuriem Array[1..3,1..3];

masīvs A ir jārandomizē(50);

izvada masīvu A;

end;

 

masīvs B[k,l] un A[i,j]

tik tālu skaidrs

 

 

:?: kā masīvam B rindai k:=1 likt būt masīva A kollonai j:=3 ??? :?:

Link to comment
Share on other sites

Ar "roku" piešķir katram B masīva elementam attiecīgā masīva A elementa vērtību. T.i. uztaisi divus FOR ciklus vienu iekš otra, kas pārstaigā visus A masīva elementus, katram elementam izrēķina attiecīgo B masīva elementu, un ieliek B masīva elementā attiecīgo vērtību.

Link to comment
Share on other sites

:D :D :D a kaada velna peec tad tu maacies?! pietam - otrajaa kursaa? :shock:

 

mācos par Dator Sistēmu tehniķi , bet tā nolādētā programmēšana pascal vidē ir obligāta pirmos divus kursus .. pirmajā kursā noveicās , tiku cauri , tagad ir elle.. :evil: ... nu palīdziet taču , man prakse :|

Link to comment
Share on other sites

Labots - tā iet, ka neskatās pēdējo postu. dzēšat manu postu ārā...

Labots - hrima
Link to comment
Share on other sites

Neliels offtopiks - Cannon - gadījumā nemācies "Progmeistarā"?

nesapratu ... :!: offtopics chist :roll:

Link to comment
Share on other sites

Oi darortehniķi "pošļi". Vajadzēja laikam uz otru gadu pirmajā kursā atstāt.

 

ne jau es vainigs ka mani parcela..

bet te aiziet offtopics :-(

Link to comment
Share on other sites

Nu bet tāpēc jau aiziet offtopic, ka pilna Latvija ar augstskolas izglītību ieguvušajiem, kas savā nozarē nejēdz neko.

Tici man, daudzi tev nepalīdzēs kaut lai viens iznāktu no tās augstskolas kaut mazliet gudrāks..

Link to comment
Share on other sites

program mas;
uses crt;
var
A:array[1..3,1..3]of integer;
B:array[1..3,1..3]of integer;
i,j,k,l:integer;
begin
randomize;
for i:=1 to 3 do
for j:= 1 to 3 do A[i,j]:=random(50);
writeln('masivs A:');
for i:=1 to 3 do begin
writeln;
for j:=1 to 3 do
write(a[i,j]:4);
end;
readln;
{operatori B masiva izveidosana}
end.

 

 

lai kā ari censtos izveidot B masīvu man rezultāts ir viens un tāds pats :

1) pascal nokaras un neizvada B masiivu

2) izvada B masivu kā A masīva 3-šās kollonas 2trās rindas mainīgo ..

 

 

būtu ļoti pateicīgs ja pateiktu ko man raakstīt {operatori B masiva izveidosana} :arrow:

 

Nu bet tāpēc jau aiziet offtopic, ka pilna Latvija ar augstskolas izglītību ieguvušajiem, kas savā nozarē nejēdz neko.

Tici man, daudzi tev nepalīdzēs kaut lai viens iznāktu no tās augstskolas kaut mazliet gudrāks..

profesijai kuru es mācos tas Pascal it nemaz nav vajadzīgs , man vajag tikai nodot tos darbus .. nekur tālāk man viņu neprasīs :? ..

Link to comment
Share on other sites

Guest ADEX

aiz do vari rakstīt tikai 1 operatoru. Ja vajag vairākus, tad liec tos starp begin ... end

Link to comment
Share on other sites

aiz do vari rakstīt tikai 1 operatoru. Ja vajag vairākus, tad liec tos starp begin ... end

bet kā man nodefinēt lai B masīva pirmā rinda ir A masīva 3šā kollona ??

for i:=1 to 3 do i:=l

??

 

 

Varat smieties cik uziet , bet es tiešām ne BUM BUM :shock:

Labots - CaNNoN
Link to comment
Share on other sites

Samaini i ar j vietām, izmanto to vietā downto, atkarībā no vajadzīgā rezultāta.

bet tu nevari plz uzrakstit pilnu kodu ??

Link to comment
Share on other sites

Dators ir stulbs. Viņš dara tikai to, ko viņam liek. Tāds kā mazs robotiņš, kurš vienu pēc otras izpilda komandas, kuras Tu viņam esi devis.

 

Nu, lūk, tad izdomā, kas Tev ir dots sākumā, kam jābūt beigās, un kādas komandas Tev vajadzētu likt datoriņam izdarīt, lai Tu no sākuma rezultāta nonāktu pie beigu rezultāta. Pamēģini uzrakstīt uz papīra ar cilvēcīgiem vārdiem. Izskaidro, kā pilnīgam cirvim, kurš nesaprot vairāk par vienu triviālu operāciju vienlaicīgi. Šim uzdevumam Tev pat nevajadzēs nekādus tur FOR vai IF. Vienkārši elementāru piešķiršanas, saskaitīšanas, utml. komandu virknīte.

 

Un tad, kad būsi šitā izdomājis, tad pamēģini pārtulkot uz Pascal valodu. Padomā, kur varbūt kaut ko var saīsināt ar ciklu palīdzību (tas parasti ir tad, ja ir daudzas vienveidīgas komandas, kuras atšķiras tikai ar kaut kādiem secīgiem skaitļiem). Varbūt kaut kur var vēl kaut ko saīsināt citā veidā.

 

Uztaisi vispirms kaut kā, bet strādājošu! Un tad domā, kā uzlabot (īsāk, ātrāk, lasāmāk).

Labots - Vilx-
Link to comment
Share on other sites

Dators ir stulbs. Viņš dara tikai to, ko viņam liek. Tāds kā mazs robotiņš, kurš vienu pēc otras izpilda komandas, kuras Tu viņam esi devis.

 

Nu, lūk, tad izdomā, kas Tev ir dots sākumā, kam jābūt beigās, un kādas komandas Tev vajadzētu likt datoriņam izdarīt, lai Tu no sākuma rezultāta nonāktu pie beigu rezultāta. Pamēģini uzrakstīt uz papīra ar cilvēcīgiem vārdiem. Izskaidro, kā pilnīgam cirvim, kurš nesaprot vairāk par vienu triviālu operāciju vienlaicīgi. Šim uzdevumam Tev pat nevajadzēs nekādus tur FOR vai IF. Vienkārši elementāru piešķiršanas, saskaitīšanas, utml. komandu virknīte.

 

Un tad, kad būsi šitā izdomājis, tad pamēģini pārtulkot uz Pascal valodu. Padomā, kur varbūt kaut ko var saīsināt ar ciklu palīdzību (tas parasti ir tad, ja ir daudzas vienveidīgas komandas, kuras atšķiras tikai ar kaut kādiem secīgiem skaitļiem). Varbūt kaut kur var vēl kaut ko saīsināt citā veidā.

 

Uztaisi vispirms kaut kā, bet strādājošu! Un tad domā, kā uzlabot (īsāk, ātrāk, lasāmāk).

tiešām laba atbilde..

izmantoju ciklu down to

 

for j:=3 downto 1 do begin
k:=j;
end;
for i:=3 downto 1 do begin
l:=i;
end;
write(b[k,l]:4);
end.

 

masīvā izvadijās 0 0 0 {enter}

0 0 0 {enter}

0 0 0 {enter}

 

ārprāc es esu vienkārši dunduks 8) īstenībā nožēloju ka aizgāju uz to nozari , bet nu kas iesākts jāpabeidz vismaz kautkā ...

Link to comment
Share on other sites

Vēlreiz - izdomā vispirms kam vajadzētu notikt, un tikai pēc tam domā, kā to uzrakstīt ar instrukcijām Pascal valodā. Un par to, "kam vajadzētu notikt" domā nevis tā, ka "matrica pagriežas", bet "vispirms uztaisam otru matricu, kura saturēs rezultātu; tad pirmās matricas elementu (0,0) ieliekam otrās matricas elementā (0,3); tad pirmās matricas elementu..." u.t.t. Ķipa, cik vien smalki vari katru darbību aprakstīt, tik smalki arī apraksti. Un tikai tad, kad šis "pseidokods" Tev jau būs izdomāts, sāc domāt par reālo Pascal valodu.

 

OK?

 

Davai, tagad nākamajā postā raksti vairs nevis Pascal, bet gan pastāsti, kā Tu iztēlojies, ka tas viss stradās, labi? Citādi mēs Tev te varēsim aplinkus dot padomus līdz pastarajai dienai, un nevienam no tā labāk nepaliks.

Link to comment
Share on other sites

Guest ADEX

Tā kā masīvs ir divdimensiju, tad vajadzīgi 2 cikli:

for i:= 1 to k do begin
 for j := 1 to k do begin
...
 end;
end.

pirmajam masīvam kā indeksus izmanto ciklu mainīgos i un j.

Ja gribi otrajā masīvā samainīt vietām rindas ar kolonām, samaini vietām indeksus.

Ja gribi, lai pirmā rinda vai kolona būtu pēdējā, tad kā indeksu izmanto k-i vai k-j

Link to comment
Share on other sites

Vai Tu vispār saproti, kas Tev ir jāpanāk? Paskaidro, lūdzu, man. Ar piemēriem arī.

Link to comment
Share on other sites

man matricas A treshaa kolonna ir japarveido par matricas B pirmo rindu

otraa kolonna par otro rindu

pirmaa kolonna par tresho rindu ,

pec tam vaig aprekjinat otrai rindai summu :-( der ??

 

 

es tikko pabeidzu divus citus uzdevumus kuri ir ar failiem {to es saprotu}

 

bet masīvi {pirmo kursu esu palaidis pa dēli.. }

 

un rīt jānodod visi darbi .... deeeem :?

Labots - CaNNoN
Link to comment
Share on other sites

Skaisti. Pirmais solis jau ir. Tu saproti, no kurienes uz kurieni vajag nokļūt. Tagad par pašu ceļu.

 

Vai Tev ir kāds variants, kā šādu matricu sakraut kaut kādos mainīgajos? Derēs jebkurš variants, kuru vari izdomāt. Izdomā, un apstāsti man šeit sīki un smalki (vislabāk ar piemēriem).

Link to comment
Share on other sites

Skaisti. Pirmais solis jau ir. Tu saproti, no kurienes uz kurieni vajag nokļūt. Tagad par pašu ceļu.

 

Vai Tev ir kāds variants, kā šādu matricu sakraut kaut kādos mainīgajos? Derēs jebkurš variants, kuru vari izdomāt. Izdomā, un apstāsti man šeit sīki un smalki (vislabāk ar piemēriem).

nav variantu vilk ... es izmeginaju visus variantus , ciklu ciklaa , un kautvai chetrus ciklus ciklaa , man paradas tikai viena kollona ... es jau no taaa uzdevuma esu noguris... :( visu dienu mocos

Link to comment
Share on other sites

Nav runa par cikliem. Aizmirsti par tiem šobrīd. Es tikai gribu veidu, kā 3x3 matricu ielikt kaut kādos mainīgajos. Pofig kā. Galvenais, ka matricas saturs glabājas mainīgajos. Par apstrādi domāsim pēc tam.

 

Pievienots: Starp citu, Tu taču saproti, ko nozīmē jēdziens "mainīgais"?

Labots - Vilx-
Link to comment
Share on other sites

mainigais ... x , y ... defineets pie VAR

 

man tiesaam nav varianti ka masivu definet mainigajos ..

vienigais ko speju iedomaties

A[i,j]  -apgriezti - a[j,i] 

Link to comment
Share on other sites

Guest ADEX

Kāpēc masīvu? Ņem vienkārši deviņus mainīgos un - uz priekšu.

Starp citu - arī masīva elementi ir mainīgie, savā ziņā.

Link to comment
Share on other sites

ADEX... lai arī Tev taisnība, varbūt šoreiz varētu es pamēģināt to visu novest no sākuma līdz beigām? :roll:

 

Bet, jā - ADEX ir taisnība. Tu varētu izmantot 9 mainīgos, lai saturētu vienu 3x3 matricu. Vai Tu stādies priekšā, kā tas izskatītos?

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...