úkol, v delphi poraďte prosím s úpravou matice – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

úkol, v delphi poraďte prosím s úpravou matice  – Delphi – Fórum – Programujte.comúkol, v delphi poraďte prosím s úpravou matice – Delphi – Fórum – Programujte.com

 

1. 2. 2010   #1
-
0
-

Zdravim mám podobný problém s úkolemv delphi, který zní:

Vytvořte aplikaci, která ze zadané matice A typu MxN vytvoří matici B tak, že se prvky na hlavní diagonále změní na nuly. Matice A se načte ze souboru nebo se vytvoří v aplikaci. Výsledná matice B se zobrazí v aplikaci a bude možné ji pak uložit do souboru. Matice mohou být libovolně velké.

Přesněji mám problém s indexováním, nemůžu se dostat k poslednímu řádku jakekoliv matice, zde je část programu, kterou jsem použil jako předlohu. Ještě mám problém s výstupem, ale ten vyřeším pomoci řetězce jak už tu bylo zmíněno.

procedure TForm1.Button2Click(Sender: TObject);
type MATICE = array of array of integer; {deklarace typu dynamicka matice}
var I,J,M,N,MN:integer; {promenne pro indexovani a velikosti matice}
A : MATICE; {dynamicke pole pro matici}
S : string;
B : array of integer; {dynamicke pole pro radkove soucty}
soubor : TextFile;
begin

AssignFile(soubor,'matice1.txt'); {budeme zjistovat velikost vstupni matice}
Reset(soubor);
MN:=-1; N:=-1; {inicializujeme pocitaci promenne}
while not(eof(soubor)) do {dokud jsme neprecetli posledni udaj budeme cist znovu}
begin
read(soubor,I); MN:=MN+1;{zapamatujeme si precteni}
if eoln(soubor)and(N=-1) then N:=MN+1; {testujeme zdali jsme nakonci 1. radku}
end;
M:=MN div N; {vypocitame pocet radku, div je celociselne deleni}
CloseFile(soubor);

SetLength(A,M,N); {alokace pameti pro dynamicka pole}

{Zbytek řeším, ale nedaří se :-D}

AssignFile(soubor,'maticipracuji.txt');
Reset(soubor);
for I:=1 to M do
for j:=1 to N do
read(soubor,A[I-1,J-1]);
A[0,0]:=0;A[1,1]:=0;
CloseFile(soubor);

AssignFile(soubor,'maticipracuji.txt'); Rewrite(soubor);

for I:=1 to M do for J:=1 to N do
begin
writeln(soubor,A[I-1,J-1]); {zapisujeme jednotlive prvky pole B do souboru}
end;
CloseFile(soubor);

POLE2.Lines.LoadFromFile('maticipracuji.txt');

Label3.Caption:='Počet řádků'+' '+inttostr(M+1);
Label4.Caption:='Počet sloupců'+' '+inttostr(N);
Label5.Caption:=pole2.text;
end;

Nahlásit jako SPAM
IP: 79.127.245.–
Pedro
~ Anonymní uživatel
128 příspěvků
2. 2. 2010   #2
-
0
-

Tak jsem si prošel ten kód a problém je podle mě následující:

M:=MN div N; 

Když jsem si to odkrokoval pro matici 3x3, dostal jsem na konci N = 3, MN = 8 a M = 8 div 3 = 2, což taky vysvětluje, proč zlobí poslední řádek

Nahlásit jako SPAM
IP: 89.24.25.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Delphi matice úkol — založil Václav

Delphi - úkol — založil Kris

Poradte mi prosím... — založil Majox

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý