Délka maximálního úseku stejných čísel obsaženého posloupnosti – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Délka maximálního úseku stejných čísel obsaženého posloupnosti – Pascal – Fórum – Programujte.comDélka maximálního úseku stejných čísel obsaženého posloupnosti – Pascal – Fórum – Programujte.com

 

kejta0
Návštěvník
29. 10. 2013   #1
-
0
-

   

program maximalniusek;
var  d, x: integer;

begin
d :=0;
writeln('Zadejte cisla posloupnosti (tuto posloupnost ukoncite cislem NULA):');
repeat
      read(x);
      if x<>0 then
      begin
      if x=x then
      d :=d+1

else d :=d+0


      end;
      until x=0 ;

writeln (d);

end.

Potřebuji z čísel zadaných v posloupnosti (zakončené nulou), zjistit délku maximálního souvislého úseku stejných čísel .

Vím, že to bude asi easy. Potřeboval bych trochu popostrčit.

Nahlásit jako SPAM
IP: 85.70.175.–
JoDiK
~ Anonymní uživatel
987 příspěvků
30. 10. 2013   #2
-
0
-

#1 kejta

if x=x then
tady bych viděl problém, tohle bude přece vždycky pravda...

asi si budeš muset pamatovat i jednu předchozí hodnotu v posloupnosti a s tou porovnávat...

Nahlásit jako SPAM
IP: 88.103.233.–
kejta0
Návštěvník
30. 10. 2013   #3
-
0
-

#2 JoDiK
jo, to ja vim že tohle bude problém.. ale nevim jak právě definovat tu předchozí hodnotu, jsem opravdový začátečník a teprve se učím:)

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #4
-
0
-

no pocitac si to sam pamatovat nebude... nepamatuje si absolutne nic, co mu nereknes. A jak mu to reknes? No priradis do nejake dalsi promenne

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #5
-
0
-

Takze pod tohle  

if x<>0 then

read (n);

begin

if x=n ... ?

To mi prave taky moc nefunguje.

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #6
-
0
-

n nacti pred cyklem a pak uz jen pred until c:=n; (tj na konci cyklu si do n ulozit hodnotu x... x se pak pri opakovani zmeni ale n je to co tam bylo v predchozim kole)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #7
-
0
-

Diky moc, uz to jakztakz mam. Jeste mi to ale furt vyhazuje vzdy o jedno cislo mensi vysledek, nez je ten maximalni usek.

Mam do ,,d" načíst základní hodnotu 1? Nebo na to jdu špatně?

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #8
-
0
-

pred cyklem ano... pak pokazde, kdyz nejsou stejne ty cisla tak si ulozit tu 1 (protoze aktualni neni stejne jako predchozi, ale nasledujici uz by pak bylo 2. stejne (kdyz by teda bylo stejne)) 

a samozrejme si nekam ukladat jen to nejvetsi maximum

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #9
-
0
-

To maximum si mam take definovat pred cyklem? jako m := d? 

Ale stale nechapu jakym zpusobem porovnat pak to d s maximem aby se mi do te delky nepricetlo vzdy kdyz jsou dve a vice cisel za sebou stejna.

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #10
-
0
-

hodis tam podminku... kdyz je d vetsi jak maximum, tak zmenis maximum := d;  nic slozityho to neni (ale je to dobry delat za prictenim k d, nebo jen kdyz si narazil na konec nejake sekvence stejnych znaku

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #11
-
0
-

Takze nejak takhle? 


begin
writeln('Zadejte cisla');
read(n);
d :=1;
m :=1;

repeat
      read(x);
      if x<>0 then
      begin
      if x=n then
      d :=d+1

else if x<>n then
             d :=d+0


      end;

      if d>m then d :=m
      else m :=m;

      c :=n;
      until x=0 ;

writeln ('Maximalni usek je:', m);

ale furt to nefunguje spravne.. :D

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #12
-
0
-

#11 kejta
 

begin
writeln('Zadejte cisla');
read(n);
d :=1;
m :=1;  // je priserne neprehledne pojmenovavat promenne jednim pismenem

repeat
      read(x);
      if x<>0 then
      begin     // odsazeni !!!! aby se v tom pak prase vyznalo
      if x=n then
      d :=d+1

else if x<>n then    // kdyz se to dostane do else vetve, tak je vcelku zarucene ze x se nerovnalo n ... precijen to byla hlavni podminka
             d :=d+0 // doufam ze si z matiky pamatujes ze   5 + 0 = 5 ....
      end;

      if d>m then d :=m // skvele prave sis prepsal d... 
      else m :=m;       // naprosto zbytecne... leda bys chtel treba v jednocipu preposlat prijaty znak na seriovym portu :D ale tady to muzes vynechat

      c :=n;  // co je sakra c?
      // proc nemenis  n ? takhle tam zustane jediny cislo a to to, ktery si nacetl pred cyklem
      until x=0 ;
writeln ('Maximalni usek je:', m);
Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #13
-
0
-

To s tim ,,c" si mi prece pred par prispevky poradil;)

A jakym zpusobem to mam tedy porovnat abych si neprepsal ,,d" ?

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #14
-
0
-

#13 kejta
no jo fakt.. sem asi myslel na neco jinyho... :D    ma tam byt samozrejme   n := x; (i kdyby to byl preklep, tak by to bylo obracene)

a d neprepisujes porovnanim ale tim  d := m;  (slovne:  do d prirad hodnotu m - tj. menis d na to, co je v m)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #15
-
0
-

#14 KIIV
Chapu ze to menim tim d :=m; , ale nevim cim to nahradit:) proste nechat tam to porovnani a pak co?

Nahlásit jako SPAM
IP: 85.70.175.–
kejta0
Návštěvník
30. 10. 2013   #16
-
0
-

#15 kejta
Prohodit to?

max :=d;  takhle?

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #17
-
0
-

#16 kejta
presne tak

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #18
-
0
-

   

begin
writeln('Zadejte cisla');
read(n);
d :=1;
max :=1;

repeat
      read(x);
           if x<>0 then
      begin
           if x=n then
                  d :=d+1
                  else d :=d


      end;

           if d>max then max :=d;

           n :=x;

       until x=0;

writeln ('Maximalni usek stejnych cisel v posloupnosti je:', max);

end.

Takze ted jsem na tom takhle :D ..ale furt to vyhazuje nejaky blbosti a uplne nesmyslny cisla. 

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #19
-
0
-

else d :=d    ja myslel ze tam potrebujes nastavit 1 ... ne tam jen nepricist...

kdyz budes mit    1 1 1 1 1 2 2 2  tak pri posledni 1 tam bude d=5 .. pri prvni dvojce se nic nepricte tj je tam furt d=5... a pak druha a treti dvojka udela  d=6 a d=7 ...

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kejta0
Návštěvník
30. 10. 2013   #20
-
0
-

#19 KIIV
takže else d :=1;  ..jo, uz to funguje!

Diky moc za obetovany cas a dobre rady! :)

Nahlásit jako SPAM
IP: 85.70.175.–
KIIV
~ Moderátor
+43
God of flame
30. 10. 2013   #21
-
0
-

hlavne o tom, co se tam deje, jeste poradne popremejslej... zkus si to predstavovat v hlave a prochazet "v krocich"... dobry je, ze si to zvladl - sice s pomoci - ale "sam" co se tyce primo programu....

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 11 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ý