Pascal easy úlohha – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pascal easy úlohha – Pascal – Fórum – Programujte.comPascal easy úlohha – Pascal – Fórum – Programujte.com

 

ondřej
~ Anonymní uživatel
156 příspěvků
19. 4. 2018   #1
-
0
-

potřeboval bych pomoci s touto úlohou pokud by byl někdo ochotný byl bych rád

v podprogramu sestav matici m x n s čísly 1..99 a sečti 1. sudé řádky 2. liché řádky 

děkuji za ochotu   

Nahlásit jako SPAM
IP: 88.101.6.–
gna
~ Anonymní uživatel
1853 příspěvků
19. 4. 2018   #2
-
0
-

A co konkrétně nevíš? Matice bude asi dvourozměrné pole. Projdeš jeho prvky a posčítáš je podle toho na jakém jsi řádku. Nenapsal jsi o jaký Pascal jde, ale toto by mělo na rozjezd stačit:

var
    a: array of array of integer;
    m, n: integer;
    i, j: integer;

begin
    m := 15;
    n := 15;
    setlength(a, m, n);  
    for i:=0 to m-1 do
    begin
        for j:=0 to n-1 do
        begin
            a[i,j]:= (i * n + j) mod 99 + 1;
            write(a[i,j]:3);
        end;
        writeln;
    end;
end.
Nahlásit jako SPAM
IP: 213.211.51.–
ondřej
~ Anonymní uživatel
156 příspěvků
19. 4. 2018   #3
-
0
-

#2 gna
jde o free pascal a je důležité to udělat v podprogramu 

a je to nutné sečíst jenom sudé řádky a  jenom liché sloupce a čísla do pole jsou náhodná

Nahlásit jako SPAM
IP: 88.101.6.–
gna
~ Anonymní uživatel
1853 příspěvků
19. 4. 2018   #4
-
0
-

Ve Free Pascalu by to mělo fungovat. Ta úloha nejspíš vychází z toho, co bys měl znát, takže toto asi není potřeba vysvětlovat a jen si to podle potřeby upravíš. Když napíšeš, co konkrétně nevíš nebo nechápeš, tak dostaneš konkrétní radu.

Náhodné číslo můžeš získat funkcí random a lichost čísla zjistit funkcí odd (nebo i tím operátorem mod atd.)

Nahlásit jako SPAM
IP: 213.211.51.–
ondřej
~ Anonymní uživatel
156 příspěvků
19. 4. 2018   #5
-
0
-

#4 gna
program má napsaný ale stále mi to vyhazuje 0 u součtu tak nevím kde mám problém

Nahlásit jako SPAM
IP: 88.101.6.–
ondřej
~ Anonymní uživatel
156 příspěvků
19. 4. 2018   #6
-
0
-
Nahlásit jako SPAM
IP: 88.101.6.–
gna
~ Anonymní uživatel
1853 příspěvků
19. 4. 2018   #7
-
0
-

za tím for...do umaž ten středník. Takhle ten středník (prázdný příkaz) znamená příkaz, který se v tom cyklu má dělat (takže to nedělá nic) a ten blok begin...end za ním se provede až potom a jen jednou.

randomize vyhoď před ten cyklus, jinak ti random bude vracet pořád stejnou hodnotu.

a nakonec v hlavním programu musíš tu svoji proceduru spustit (...readln...; radek; ...writeln...)

Nahlásit jako SPAM
IP: 213.211.51.–
ondřej
~ Anonymní uživatel
156 příspěvků
19. 4. 2018   #8
-
0
-
Nahlásit jako SPAM
IP: 88.101.6.–
gna
~ Anonymní uživatel
1853 příspěvků
19. 4. 2018   #9
-
0
-

Takhle to bude fungovat (příkaz pro for bude ten begin...end), ale za begin nemusíš mít ten středník. To zase bude prázdný příkaz (který ale tady nevadí). Prostě jen z toho původního kódu umaž ten středník. Teď je to jako bys to měl takhle: 

for i:=1 to m do
	for j:=1 to n do
	begin
		; // zbtecny prazdny prikaz
		a[i,j]:=random(99)+1;
	end;
Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1853 příspěvků
19. 4. 2018   #10
-
0
-

A je to potřeba udělat u obou těch cyklů.

A pak tu proceduru volej jen jednou. Když ji spustíš podruhé, tak se ti znova spočítá součet a přičte se k původnímu výsledku (to by šlo opravit tím, že prostě r a s nejdříve vynuluješ), ale hlavně se ti vygeneruje nová matice a spočítá jiný součet.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
3981 příspěvků
20. 4. 2018   #11
-
0
-

   

for i:=1 to m do; -- strednik za do je totez jako napsat
for i:=1 to m do begin end;

Kdyz chces neco provadet opakovane, musis to dat dovnitr toho cyklu
for i:=1 to m do
	begin
		... prikazy ...
	end;

Pokud je tam jeden prikaz, lze to napsat bez begin end.
for i:=1 to m do
	begin
		prikaz();
	end;
for i:=1 to m do
	prikaz();
for i:=1 to m do prikaz();

Dva cykly v sobe se daji zapsat take bez begin end nebo s nim. Podle toho, co se ti hodi. Osobne radeji pouzivam begin end.
for i:=1 to m do
	for j:=1 to n do
		begin
			... prikazy ...
		end;
for i:=1 to m do
	begin
		... prikazy ...
		for j:=1 to n do
			begin
			... prikazy ...
			end;
		... prikazy ...
	end;

Cili, ta uplne nejmensi verze, ktera by mela fungovat je
for i:=1 to m do
	for j:=1 to n do
		a[i,j] := random(99) + 1;
Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:38...–
MilanL+1
Grafoman
20. 4. 2018   #12
-
0
-

menší guláš v zadání

#1 ondřej

v podprogramu sestav matici m x n s čísly 1..99 a sečti 1. sudé řádky 2. liché řádky 

#3 ondřej

a je to nutné sečíst jenom sudé řádky a  jenom liché sloupce a čísla do pole jsou náhodná

#10 gna
nejenže volá proceduru 2x takže součet bude mít zdvojený, navíc mu to v každé proceduře vygeneruje znovu nové pole (pravděpodobně jiné - randomize by mělo brát seed bud z času na ms nebo ze system tiků,

U vstupů m,n by měla být kontrola na 1-100, aby se smyčky nedostaly mimo rozsah pole.

Na začátku procedury by možná bylo dobré znulovat ty proměnné na sumy.

Array bych definoval v globální části, pomocné proměnné I,J,Z lokálně pro proceduru.

Nahlásit jako SPAM
IP: 91.139.9.–
ondřej
~ Anonymní uživatel
156 příspěvků
20. 4. 2018   #13
-
0
-

#10 gna
#12 MilanL

děkuji za rady už jsem to nějak splácal ještě to upravím ale potřeboval bych vědět jestli by jste byli hodní a napsali mi jak mám vypsat matici (dělá mi problém syntaxe :D ). 

Nahlásit jako SPAM
IP: 88.101.6.–
gna
~ Anonymní uživatel
1853 příspěvků
20. 4. 2018   #14
-
0
-

#13 ondřej
Hodnoty řádku můžeš postupně vypsat pomocí write a na konci vypsat odřádkování pomocí writeln, tak jak jsem to udělal v té první ukázce.

Nahlásit jako SPAM
IP: 213.211.51.–
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, 1 host

Moderátoři diskuze

 

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