Zdravím, ve škole jsem dostal za úkol vytvořit 6 programu v pascalu, ale vůbec si nevím rady, pascal mi moc nejde. Kdyby byl někdo tak hodný a pomohl by mí, byl bych vděčný.
1. Dvě matice 5x5 naplnit náhodnými čísly od 0-9, sečtěte navzájem si odpovídající prvky z těchto matic a uložte do třetí matice, všechny matice zobrazit
2. Matici MxN naplnit náhodnými čísly 1-99, sudé prvky vlož do pole S, liché prvky do pole L, matici a prvky polí S a L zobraz
3. Matici MxN naplnit náhodnými čísly 1-99, sudé prvky zmenší na polovinu, liché zdvojnásobí, zobraz matici před a po úpravách
4. Matice MxM naplnit náhodnými čísly 1-99, vypiš prvky vedlejší diagonály, vypočti jejích součet, zobraz matici
5. Matici MxN naplnit náhodnými čísly 1-99, urči součet prvků prvního řádku a součet posledního řádku, zjisti který součet je vyšší, zobraz matici
6. Matici MxN naplnit náhodnými čísly 1-99, urči průměr lichých prvků, a průměr sudých prvků
Za případné rady budu vděčný, kód by pomohl nejvíc . Díky
PS: V každém programů musí byt min. 1 podprogram.
PASCAL
Re: PASCAL
To jsou pěkné úlohy, dá se s nimi krásně vyhrát a přitom se moc nenadřít. A když už máš mít v každém programu minimálně jeden podprogram, tak bude ideální procedura na naplnění matice náhodnými čísly. Ta totiž může být ve všech programech úplně stejná, a jenom jí předáš matici, její rozměry a rozsah náhodných čísel. Tím si ušetříš hromadu práce!
A protože jde o matice, tak se bude pracovat se dvěma vnořenými cykly FOR, vždycky stejně, ve všech činnostech které s nimi budeš provádět. Kousek kódu na ukázku, takhle nějak by mohlo vypadat zobrazení matice na monitoru (což se také dá udělat jako procedura, a samozřejmě se zase použije ve všech těch programech, to už máš druhý podprogram):
A protože jde o matice, tak se bude pracovat se dvěma vnořenými cykly FOR, vždycky stejně, ve všech činnostech které s nimi budeš provádět. Kousek kódu na ukázku, takhle nějak by mohlo vypadat zobrazení matice na monitoru (což se také dá udělat jako procedura, a samozřejmě se zase použije ve všech těch programech, to už máš druhý podprogram):
Kód: Vybrat vše
for radek:=1 to M do
begin
for sloupec:=1 to N do
begin
write (matice[radek,sloupec],#9)
end;
writeln
end;
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: PASCAL
Poradil by jste mi jak to upravit abych měl pro vypsaní matic jen 1 podprogram? Díky
Kód: Vybrat vše
uses Crt;
const
m = 5;
n = 5;
var i,j,c: Integer;
m1,m2,m3: array [1..5] of array [1..5] of Integer;
begin
WriteLn(' --- Soucet odpovidajicich si prvku matic ---');
WriteLn;
Randomize;
for i := 1 to 5 do
for j := 1 to 5 do
begin
c := Random(10); //nahodne cislo od 0 do 9
m1[i,j] := c;
c := Random(10);
m2[i,j] := c;
m3[i,j] := m1[i,j]+m2[i,j];
end;
WriteLn;
WriteLn(' matice 1:');
for i := 1 to 5 do
begin
for j := 1 to 5 do
Write(' ',m1[i,j]:2);
WriteLn;
end;
WriteLn;
WriteLn(' matice 2:');
for i := 1 to 5 do
begin
for j := 1 to 5 do
Write(' ',m2[i,j]:2);
WriteLn;
end;
WriteLn;
WriteLn(' matice 3:');
for i := 1 to 5 do
begin
for j := 1 to 5 do
Write(' ',m3[i,j]:3);
WriteLn;
end;
ReadLn;
end.
Re: PASCAL
Deklaruješ to jako pole polí? No, v Céčku se to vlastně dělá také tak, ale Pascal je jazyk trochu vyšší úrovně
Nauč se oddělovat jednotlivé bloky kódu od sebe prázdnými řádky, mezi souvisejícími částmi v jednom bloku jedním, mezi procedurami a funkcemi třemi. Uvidíš jak se program zpřehlední.
Takže podstatné je vědět jak předat pole proceduře (nebo co zadat do Google aby ti tuhle informaci našel!) To je v Pascalu trochu komplikovanější, ale existuje na to jednoduchá finta. Prostě si ho nadeklaruješ jako vlastní typ, a s ním pak pracuješ v celém programu:
Samozřejmě všechny matice musí mít naprosto stejný typ, jinak s tebou překladač bleskově vyběhne. Na druhou stranu ti ten typ ušetří psaní:
No a potom samotná procedura, všimni si že pole je ve skutečnosti větší než je potřeba, a zadává se jak velkou část chceš použít. To není nutné, můžeš mít pole přesně na míru:
Použití procedury je jednoduché, předáš jí pole a počet řádků a sloupců které se mají zobrazit:
Úplně stejným způsobem můžeš vytvořit proceduru která ti pole naplní náhodnými čísly, jenom nezapomeň parametr pole místo hodnotou předat odkazem, pomocí klíčového slova var:
Nauč se oddělovat jednotlivé bloky kódu od sebe prázdnými řádky, mezi souvisejícími částmi v jednom bloku jedním, mezi procedurami a funkcemi třemi. Uvidíš jak se program zpřehlední.
Takže podstatné je vědět jak předat pole proceduře (nebo co zadat do Google aby ti tuhle informaci našel!) To je v Pascalu trochu komplikovanější, ale existuje na to jednoduchá finta. Prostě si ho nadeklaruješ jako vlastní typ, a s ním pak pracuješ v celém programu:
Kód: Vybrat vše
type matrix=array[1..10,1..10] of integer;
Samozřejmě všechny matice musí mít naprosto stejný typ, jinak s tebou překladač bleskově vyběhne. Na druhou stranu ti ten typ ušetří psaní:
Kód: Vybrat vše
var matice1,matice2: matrix;
No a potom samotná procedura, všimni si že pole je ve skutečnosti větší než je potřeba, a zadává se jak velkou část chceš použít. To není nutné, můžeš mít pole přesně na míru:
Kód: Vybrat vše
procedure zobraz(pole:matrix; radku,sloupcu:integer);
var r,s:integer;
begin
for r:=1 to radku do
begin
for s:=1 to sloupcu do
begin
write (pole[r,s],#9)
end;
writeln
end;
end;
Použití procedury je jednoduché, předáš jí pole a počet řádků a sloupců které se mají zobrazit:
Kód: Vybrat vše
zobraz(matice1, M, N);
zobraz(matice2, M, N);
Úplně stejným způsobem můžeš vytvořit proceduru která ti pole naplní náhodnými čísly, jenom nezapomeň parametr pole místo hodnotou předat odkazem, pomocí klíčového slova var:
Kód: Vybrat vše
procedure vypln(var pole:matrix; radku,sloupcu:integer);
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 2
- 2154
-
od Kopusek
Zobrazit poslední příspěvek
02 pro 2023 10:13
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti