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 10. 04. 2010 10:20

kedrik
Příspěvky: 25
Reputace:   
 

Delphi vynechanim radku a sloupce v matici

zdravim mam to udelat v delphi 7 spekuluju nad tim asi 2 hodiny a jukam na internet ale nikde jsem nic podobneho nevidel.
Zadani :
    Je dana celociselna matice radu N. Z teto matice vytvorte
    matici, ktera vznikne z puvodni matice vynechanim K-teho
    radku a K-teho sloupce.

Zatim jsem skutil asi tak tohle nacte mi to matici ze soubodu a vytiskne mi ji ale nevim jak udelat to abych kdyz zadam K tak mi to vynechalo k-ty sloupec a k-ty radek .... pls pomoc .. :-) predem dik za odpoved :-)

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  var
  i,j,k,m,n:integer;
  a:array[1..10,1..10]of integer;
  f:textfile;

begin
  {12. Je dana celociselna matice radu N. Z teto matice vytvorte
    matici, ktera vznikne z puvodni matice vynechanim K-teho
    radku a K-teho sloupce.}
  writeln('Program nacte matici a vynecha k-ty radek a k-ty sloutec');
  writeln;
  assign(f,'matice.txt');
  reset(f);
  readln(f,m);
  readln(f,n);
  for i:=1 to m do
    for j:= 1 to n do read(f,a[i,j]);
    closefile(f);
  for i:= 1 to m do
    begin
      for j:=1 to n do write(a[i,j]:6,' ');
    writeln;
    end;

readln;
end.

uvazoval jsem +- nad takovym resenim ale porad mi to haze nejake chyby ....

  readln(k);
  for i:= 1 to (k-1) do and (k+1) to  m do
    begin
      for j:= 1 to (k+1)do and (k+1)to n do write(a[i,j]:6,' ');
    writeln;
    end;


predem dik za radu :-)

Offline

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

#2 10. 04. 2010 11:33

Stýv
Vrchní cenzor
Příspěvky: 5702
Reputace:   215 
Web
 

Re: Delphi vynechanim radku a sloupce v matici

for i:= 1 to (k-1) do and (k+1) to  m do

na takovou syntaxi jsi přišel kde?

prostě k tomu řádku kde vypisuješ hodnoty přidej podmínku, že i<>k a j<>k

Offline

 

#3 10. 04. 2010 11:45

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Delphi vynechanim radku a sloupce v matici

↑ kedrik: bude to neco na tento zpusob:

Code:

{matice A je radu N}

for i := 1 to N do begin
  for j := 1 to N do begin
    if ((i <> k) And (j <> k)) then
      write(A[i, j]:5);
  end
  if (i <> k) then 
    writeln();
end

Offline

 

#4 10. 04. 2010 11:47

kedrik
Příspěvky: 25
Reputace:   
 

Re: Delphi vynechanim radku a sloupce v matici

diky moc :-)

Offline

 

#5 24. 05. 2010 14:41

drak3725
Zelenáč
Příspěvky: 2
Reputace:   
 

Re: Delphi vynechanim radku a sloupce v matici

Chcem sa ta spitat ci by si mi nepomohol hladam tento program ale komplet uz vypracovany mne velmi delphi nejde ci by si mi ho mohol poslat alebo ho umiestnit sem komplet aby fungoval. A s toho co som videl tak asi chodis na VSB ku kolomaznikovy lebo aj ja tak ak mas aj program 4 tak mi prosim ta pomoz. Za odpoved dakujem

Offline

 

#6 25. 05. 2010 12:58

Honzc
Příspěvky: 4616
Reputace:   245 
 

Re: Delphi vynechanim radku a sloupce v matici

Tady je konzolová aplikace
Matice je generována z náhodných čísel.

program Matice2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type Tpole=array of array of Integer; //natypovani pole pro matici
var i,j,m,n,k,x,pokr,konec:Integer;
  anone:string;
  a,b:Tpole; //matice A (maximalne 10 radku a 10 sloupcu) a B


begin
  Randomize;
  pokr := 0; //Promenna pro moznost pokracovani
  WriteLn('-----------------------------------Matice----------------------------------'); //Uvodni vypis
  WriteLn;
  WriteLn(' Na vstupu se zadaji rozmery matice A o m radcich a n sloupcich,');
  WriteLn(' kde m a n jsou cela cisla z intervalu <1,10> a cislo mensi rovno');
  WriteLn(' mensimu cislu z m a n, tedy z intervalu <1,min(m,n)>');
  WriteLn(' Na vystupu je pak matice z vynechanym k-tym radkem a sloupcem');
  while pokr=0 do
  begin
    m := -1;
    n := -1;
    k := -1;
    SetLength(a,0);
    SetLength(b,0);
    WriteLn;
    WriteLn(' Vstup');
    //zadani poctu radku
    repeat//Dokud se nezada cislo porad opakujeme zadani
      try
        WriteLn;
        Write(' Zadej pocet radku matice m: ');
        ReadLn(m);
      except
        on EInOutError do //Osetrení spatnych vstupu-napr.pismena,
        begin//nebo cisla vetsi nez 2147483647 (rozsah Integer)
          WriteLn(' m musi byt cele cislo z intervalu <1,10>');
          m := -1;
        end;
      end;
    until m<>-1;
    if (m<1)or(m>10) then //Pokud zadame cislo mimo interval
      repeat//tak to nedovolime
        WriteLn(' m musi byt cele cislo z intervalu <1,10>');
        WriteLn;
        Write(' Zadej pocet radku matice m: ');
        ReadLn(m);
      until (m>=1)and(m<=10);
    //zadani poctu sloupcu
    repeat//Dokud se nezada cislo porad opakujeme zadani
      try
        Write(' Zadej pocet sloupcu matice n: ');
        ReadLn(n);
      except
        on EInOutError do //Osetrení spatnych vstupu-napr.pismena,
        begin//nebo cisla vetsi nez 2147483647 (rozsah Integer)
          WriteLn(' n musi byt cele cislo z intervalu <1,10>');
          n := -1;
        end;
      end;
    until n<>-1;
    if (n<1)or(n>10) then //Pokud zadame cislo mimo interval
      repeat//tak to nedovolime
        WriteLn(' n musi byt cele cislo z intervalu <1,10>');
        WriteLn;
        Write(' Zadej pocet sloupcu matice n: ');
        ReadLn(n);
      until (n>=1)and(n<=10);
    //zadani cisla k
    repeat//Dokud se nezada cislo porad opakujeme zadani
      try
        Write(' Zadej vynechany radek a sloupec k: ');
        ReadLn(k);
      except
        on EInOutError do //Osetrení spatnych vstupu-napr.pismena,
        begin//nebo cisla vetsi nez 2147483647 (rozsah Integer)
          WriteLn(' k musi byt cele cislo z intervalu <1,min(m,n)>');
          k := -1;
        end;
      end;
    until k<>-1;
    if m<n then
      x := m
    else
      x := n;
    if (k<1)or(k>x) then //Pokud zadame cislo mimo interval
      repeat//tak to nedovolime
        WriteLn(' k musi byt cele cislo z intervalu <1,min(m,n)>');
        WriteLn;
        Write(' Zadej vynechany radek a sloupec k: ');
        ReadLn(k);
      until (k>=1)and(k<=x);

    SetLength(a,m,n);
    for i := 0 to m-1 do //naplnime matici A nahodnymi cisly od 1 do 100
      for j := 0 to n-1 do
        a[i,j] := Random(100)+1;

    k := k-1;  //k-1 proto, ze mame pole (matici) cislovanou od 0
    SetLength(b,m,n);  //budou same nuly
    for i := 0 to m-1 do  //naplnime matici B (vynechame k-ty radek a sloupec
      for j := 0 to n-1 do
        if ((i<>k)and(j<>k)) then
          b[i,j] := a[i,j];


    WriteLn(' Vystup');
    WriteLn;
    WriteLn(' Zobrazeni naplnene matice A typu '+IntToStr(m)+'x'+IntToStr(n)+':');
    WriteLn;
    for i := 0 to m-1 do
    begin
      for j := 0 to n-1 do
        Write(a[i,j]:4);
      WriteLn;
    end;
    WriteLn;
    WriteLn(' Zobrazeni matice B typu '+IntToStr(m-1)+'x'+IntToStr(n-1)+' s vynechanym '+IntToStr(k+1)+'. radkem a sloupcem:');
    WriteLn;

    for i := 0 to m-1 do
    begin
      for j := 0 to n-1 do
        if b[i,j]<>0 then   //kdyz neni nula vypiseme
          Write(b[i,j]:4);
      if i<>k then   //kdyz  neni radek s nulama tak piseme na novy
        WriteLn;
    end;
    WriteLn;
    konec := 0;
    repeat//Opakujeme vyzvu, dokud nenapisme a nebo n
      Write(' Nova matice? [a/n] '); //Chceme-li novou matici napiseme a
      ReadLn(anone);
      if (anone='n')or(anone='N')or(anone='a')or(anone='A') then
        konec := 1
      else
      begin
        WriteLn;
        WriteLn(' Musis zadat a nebo n');
      end;
    until konec<>0;
    if (anone='n')or(anone='N') then //V pripade ze napiseme n + ENTER - program skonci
      pokr := 1;
  end;

end.

Offline

 

#7 10. 06. 2010 11:16

drak3725
Zelenáč
Příspěvky: 2
Reputace:   
 

Re: Delphi vynechanim radku a sloupce v matici

Ale presne to co je tam aby to slo. Ale aj tak dik

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson