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 05. 05. 2010 09:20

kubahosi
Příspěvky: 27
Reputace:   -1 
 

matice, vektory

moc vás prosím o algoritmus, nesmí se tam vyskytovat nelokální promenne. jazyk prog. je pascal, delphi. moc dekuju
Zjistěte kolikrát se v celočíselné matici  A(m,n) vyskytují jednotlivá čísla z vektoru B(k). Výsledek uložte do vektoru četnosti C(k).
Vstup: m, n, k, matice A, vektor B
Výstup: vektory B, C

Offline

  • (téma jako vyřešené označil(a) byk7)

#2 05. 05. 2010 10:23

septolet
Příspěvky: 334
Reputace:   
 

Re: matice, vektory

↑ kubahosi: Proc se ptas jiz potreti na to same? Jinak jake je tvoje reseni? Nejaky napad?

Offline

 

#3 05. 05. 2010 11:32

kubahosi
Příspěvky: 27
Reputace:   -1 
 

Re: matice, vektory

právě ze nemam zadny napad, protoze tomu nerozumim:-( a asi to nevyresim:-(

Offline

 

#4 05. 05. 2010 18:48

awm1
Příspěvky: 51
Reputace:   
 

Re: matice, vektory

↑ kubahosi:
Postup:
1. Pomocí for cyklů + přečtených rozměrů matice načítat matici A a její jednotlivá čísla ukládat do spojového seznamu. (Doporučuji si naprogramovat pár procedur a funkcí pro práci s ním, budou se tady hodit.)
2. Načíst vektor B taktéž do LSS; pro každé jeho číslo projít celý seznam prvků matice A a pomocí počítadla napočítat počet výskytů daného čísla. Z výsledků je pak možno rovnou poskládat LSS, který bude tvořit výsledný vektor C.
3. Vypsat B a C.

Teď už to stačí jen zapsat v jazyce. A pokud chceš, aby tam nebyly globální proměnné, tak celý kód zapiš do jedné procedury, která oba vektory vypíše uvnitř svého těla rovnou na výstup. Takto používáš jen lokální proměnné.

V.


Ruská ruleta: sudo [ $[ $RANDOM % 6 ] == 0 ] && rm -rf /

Moje stránky - http://www.klimesv.php5.cz

Offline

 

#5 11. 05. 2010 13:18 — Editoval kubahosi (11. 05. 2010 13:19)

kubahosi
Příspěvky: 27
Reputace:   -1 
 

Re: matice, vektory

mrkněte jestli to mám dobře, kdyžtak mi to prosím poupravte:-)
{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  matice = Array[1..50,1..50] of Integer;
  vektor = Array[1..50] of Integer;
procedure nactiMatici(m: Integer; n: Integer; var A: matice);
  var
    i,j,c: Integer;
  begin
    for i := 1 to m do
      begin
        for j := 1 to n do
          begin
            write('A[',i,',',j,']= ');
            readln(c);
            A[i,j] := c;
          end;
      end;
  end;
procedure vypisMatici(m: Integer; n: Integer; A: matice);
  var
    i,j: Integer;
  begin
    for i := 1 to m do
      begin
        for j := 1 to n do
          begin
            if j <> n then write(A[i,j],' ');
            if j = n then writeln(A[i,j]);
          end;
      end;
  end;
procedure nactiVektor(k: Integer; var B: vektor);
  var
    i,c: Integer;
  begin
    for i := 1 to k do
      begin
        write('B(',i,')= ');
        readln(c);
        B[i] := c;
      end;
  end;
procedure vypisVektor(k: Integer; B: vektor);
  var
    i: Integer;
  begin
    write('(');
    for i := 1 to k do
      begin
        if i <> k then write(B[i],', ');
        if i = k then writeln(B[i],')');
      end;
  end;
procedure porovnani(m: Integer;
                    n: Integer;
                    k: Integer;
                    A: matice;
                    B: vektor;
                    var C: vektor);
  var
    i,j,l,p: Integer;
  begin
    for i := 1 to k do
      begin
        p := 0;
        for j := 1 to m do
          begin
            for l := 1 to n do
              begin
                if B[i] = A[j,l] then p := p + 1;
              end;
          end;
        C[i] := p;
      end;

  end;
var
  m,n,k: Integer;
  A: matice;
  B,C: vektor;
begin
  writeln('Zadej sloupce a radky matice A(m,n)!');
  write('m= ');
  readln(m);
  write('n= ');
  readln(n);
  writeln('Zadej velikost vektoru B(k)!');
  write('k= ');
  readln(k);
  writeln('Vypln matici A');
  nactiMatici(m,n,A);
  writeln('Matice A:');
  vypisMatici(m,n,A);
  writeln('Vypln vektor B');
  nactiVektor(k,B);
  writeln('Vektor B:');
  vypisVektor(k,B);
  porovnani(m,n,k,A,B,C);
  writeln('Vektor C:');
  vypisVektor(k,C);
  readln;
end.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson