Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 22. 06. 2013 20:51

hans66
Příspěvky: 263
Pozice: Student kombinovaného studia
Reputace:   
 

pascal-matice-kontrola +rada

Program si vyzada pres konzoli vlozeni prvku ctvercove matice 4x4 celych kladnych cisel. ziskanou matici vypise na konzoli a vytvori z ni jinou matici o stejne velikosti, ktera na kazde pozici bude obsahovat soucet vsech sousednich prvku matice vychozi.takto ziskanou matici program take vypise na konzoli. v nove matici program najde maximalni prvek a vypise na konzoli,cislo sloupce a radku,kde se v matici nachazi.

Code:

var
  Application: TMyApplication;
  i,j,max:integer;
  mat1,mat:array[1..M,1..N] of integer;

begin

 for i:=1 to M do begin    //ctu prvky ktere zadava uzivatel
    for j:=1 to N do
   readln(mat[i,j]);
   end;
   for i:=1 to M do begin
     for j:=1 to N do
     write(mat[i,j]:3);//vypisu matici
     writeln;
   end;
   writeln('matice upravena');
    for i:=1 to M do begin
     for j:=1 to N do
     mat1[i,j]:=(mat[i+1,j]) + (mat[i-1,j]) + (mat[i,j+1]) + (mat[i,j-1]);  //mat1 je rovna souctu okolnich prvku
    end;
    for i:=1 to M do begin   //vypisi upravenou matici
     for j:=1 to N do
     write(mat1[i,j]:3);
     writeln;
      end;
    max:=0;
     for i:=1 to M do begin
     for j:=1 to N do
         if mat1[i,j]>max  then

          max:=mat1[i,j]; //prirazeni maxima

    end;
    writeln('max prvek je:',max);  //vypisu max prve
    write('pozice: radek ',i,' ','pozice:sloupek ',j);  //vypisu pozici, tj sloupec a radek maximalniho prvku

 readln;
 readln;
end.

chtel bych poradit, zadavani kladnych cisel jsem chtel pres '' if mat[i,j]>0 then write('cislo neni kladne') else  '' ale to mi bohuzel nefnguje.
Dále bych chtel poradit s pozicí maximalniho prvku stale mi to pise radek4 a sloupek4.
posledni rada:jeste bych chtel aby pred kazdym zadanim mi to napsalo "zadej radek1" a "sloupek 1" az  slupekn a radekn, kdyz tam dam writeln('zadej radek',i); tak mi to vypise 4
děkuji za rady a pripominky :-)

Offline

 

#2 22. 06. 2013 23:25

martisek
Příspěvky: 914
Škola: MU Brno
Pozice: učitel, FSI VUT v Brně
Reputace:   52 
 

Re: pascal-matice-kontrola +rada

↑ hans66:

for i:=1 to M do begin
     for j:=1 to N do
     mat1[i,j]:=(mat[i+1,j]) + (mat[i-1,j]) + (mat[i,j+1]) + (mat[i,j-1])

ti zahlásí range check error...


Wolfram ani jiný chemický prvek matematiku nenaučí.

Offline

 

#3 22. 06. 2013 23:51

hans66
Příspěvky: 263
Pozice: Student kombinovaného studia
Reputace:   
 

Re: pascal-matice-kontrola +rada

↑ martisek: me to tu druhou matici udela...
co tedy na tom mam spatne?
for i:=1 to M do begin
     for j:=1 to N do
     mat1[i,j]:=(mat[i+1,j]) + (mat[i-1,j]) + (mat[i,j+1]) + (mat[i,j-1])
jak vypsat pozici toho maxima?sloupec a radek?

Offline

 

#4 23. 06. 2013 00:17

martisek
Příspěvky: 914
Škola: MU Brno
Pozice: učitel, FSI VUT v Brně
Reputace:   52 
 

Re: pascal-matice-kontrola +rada

↑ hans66:

Když

mat:array[1..M,1..N]

a i:=1,

tak mat[i-1,j] je přece mimo rozsah. Podobně pro i to M; j:=1 to N.


Wolfram ani jiný chemický prvek matematiku nenaučí.

Offline

 

#5 23. 06. 2013 11:17

hans66
Příspěvky: 263
Pozice: Student kombinovaného studia
Reputace:   
 

Re: pascal-matice-kontrola +rada

↑ martisek: děkuji za upozorneni
chtel bych poprosit jeste jak vypsat pozici maximalniho prvku?

Code:

var
  Application: TMyApplication;
  i,j,max,pozice:integer;
  mat1,mat:array[1..M,1..N] of integer;

begin

 for i:=1 to M do begin    //ctu prvky ktere zadava uzivatel
    for j:=1 to N do

   readln(mat[i,j]);
   end;
   for i:=1 to M do begin
     for j:=1 to N do
     write(mat[i,j]:3);//vypisu matici
     writeln;
   end;
   writeln('matice upravena');
    for i:=1 to M do begin
     for j:=1 to N do
     mat1[i,j]:=(mat[i,j]) + (mat[i+1,j]) + (mat[i,j+1]);  //mat1 je rovna souctu okolnich prvku
    end;
    for i:=1 to M do begin   //vypisi upravenou matici
     for j:=1 to N do
     write(mat1[i,j]:3);
     writeln;
      end;
    max:=0;

     for i:=1 to M do begin
     for j:=1 to N do
         if mat1[i,j]>max  then

          max:=mat1[i,j]; //prirazeni maxima

    end;
    writeln('max prvek je:',max);  //vypisu max prve
    writeln('pozice: radek ',i,' ','pozice:sloupek ',j);  //vypisu pozici, tj sloupec a radek maximalniho prvku


 readln;
 readln;
end.

Offline

 

#6 24. 06. 2013 17:00

Wrunx
Příspěvky: 65
Reputace:   
 

Re: pascal-matice-kontrola +rada

V místě, kde pamatuješ maximum:

max:=mat1[i,j]; //prirazeni maxima

si musíš ještě do dvou nějakých proměnných pamatovat i aktuální pozici i,j protože takto se ti na konci vždy vypíše maximální rozměr pole, do kterého ti doběhnou obě smyčky pro i,j

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson