Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Zistenie či cifry v čísle stupaju/klesaju

Registrovaný: 01.05.14
Prihlásený: 07.11.19
Príspevky: 152
Témy: 52
Bydlisko: Dubovce
Príspevok NapísalOffline : 08.02.2017 17:37

Zdravím, Potreboval by som zasa pomoc :roll:
Profesor nám na konci hodiny zadal DÚ: Vytvorte program ktorý zistí či cifry v zadanom čísle používateľom stúpajú alebo klesajú. Dodal k tomu že to máme robiť cez boolean ktorý sme ešte neskúšali :lol:
Snažil som sa to nejak urobiť ale ako prvá chyba v programe je tá že cifry sa napíšu od zadu napr.: 123 sa mi zapíše ako 321 + neviem ako tieto cifry porovnám.
Program:
Kód:
program Project1;
{
$APPTYPE CONSOLE}
uses SysUtils;
var  c:word;
     cf,cf2:byte;
     moznost:boolean;
begin
  
{ TODO -oUser -cConsole Main : Insert code here }
  write('Zadajte cislo: ');
  readln(c);
  while c<>0 do
  begin
    cf
:=c mod 10;
    c:=c div 10;
    cf2:=cf;
    if cf>cf2 then moznost:=true;
    if cf<cf2 then moznost:=false;
  end;
  writeln;
  if moznost=true then writeln('stupa');
  if moznost=false then writeln('klesa');
  readln;
end.


Offline

Užívateľ
Užívateľ
Zistenie či cifry v čísle stupaju/klesaju

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3
Bydlisko: Košice - ok...
Príspevok NapísalOffline : 08.02.2017 17:38

čisto technická otázka, čo v prípade, že bude číslo: 12321232123







_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Užívateľ
Užívateľ
Zistenie či cifry v čísle stupaju/klesaju

Registrovaný: 01.05.14
Prihlásený: 07.11.19
Príspevky: 152
Témy: 52
Bydlisko: Dubovce
Príspevok Napísal autor témyOffline : 08.02.2017 17:46

tak zmenim datovy typ


Offline

Užívateľ
Užívateľ
Zistenie či cifry v čísle stupaju/klesaju

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3
Bydlisko: Košice - ok...
Príspevok NapísalOffline : 08.02.2017 17:51

ja sa len pýtam, lebo tam nejak nie je zmienená táto situácia

// Spojený príspevok Str 08.02.17 18:36

Kód:
program cifry;
var
  cislo, pomocne_cislo: longint;
  cifra: byte;
  stav, p: boolean; { true ak stupa, false ak klesa }
begin
  write('Zadajte cislo: ');
  readln(cislo);
  pomocne_cislo := cislo div 10;
  cifra := cislo mod 10;
  stav := (cifra >= pomocne_cislo mod 10);

  while pomocne_cislo > 0 do
  begin
    p := cifra >= pomocne_cislo mod 10;
    if p <> stav then
        begin
          writeln('Cisla nestupaju, ani neklesaju.');
          break;
        end;
        cifra := pomocne_cislo mod 10;
        pomocne_cislo := pomocne_cislo div 10;
  end;

  if p = stav then
    if p then writeln('Cifry stupaju.')
        else writeln('Cifry klesaju.');
  readln();
end.


// Spojený príspevok Str 08.02.17 19:49

Vysvetlenie:
  1. V tom cykle opakovane vkladáš do [c]cf2[/c] hodnotu [c]cf[/c], čo sa bude samozrejme vždy rovnať, a teda to nesplní ani jednu z podmienok
  2. Podmienku nemôžeš meniť podľa posledného stavu. Uvediem príklad na prvočísla, vtedy overuješ či je dané číslo deliteľné niečím iným okrem 1 a sebou samým => nemôžeš ako výsledok považovať poslednú získanú hodnotu, napr. 7x4 = 28 pri použití efektívneho algoritmu posledné číslo, ktoré testuješ je 5 -> 28 nie je deliteľná 5, ale to nič nemení na tom, že nie je prvočíslo, lebo je deliteľná aj 7 a 4.
  3. Pri spracovávaní odzadu musíš brať do úvahy, že to ide odzadu. To znamená, že keď si určíme, že [c]true[/c] bude pre stúpajúce cifry, tak musíme kontrolovať či posledná cifra od konca je väčšia ako tá pred ňou... ak by si išiel zľava tak to presne naopak overuješ...
  4. V cykle mám použitý aj [c]break[/c], ten okamžite ukončí cyklus
  5. Vnorená podmienka na konci overuje či cyklus skončil tak ako má -> cifry buď klesajú alebo stúpajú, ak je to pravda, tak sa na základe hodnoty p alebo stavu (je to jedno, lebo sú rovnaké) určí čo sa vypíše

Nejaké otázky?







_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 09.02.2017 8:15

Ja to trochu zjednoduším, pseudokódom by to šlo nejako takto:
Kód:
boolean stupaju = true, klesaju = true; //na zaciatku cislo stupa aj klesa zaroven (ziadne cislo to splnuje)
integer stup_minule = 0; //nastavim na najmensiu moznu hodnotu
integer kles_minule = 9; //nastavim na najvacsiu moznu hodnotu

pre vsetky cifry (cifra) v cisle
begin
    if cifra < stup_minule then stupaju = false; //ak je cifra mensia, nez predchadzajuca, tak urcite nestupaju
    if cifra > kles_minule then klesaju = false; //ak je cifra vacsia, nez predchadzajuca, tak urcite neklesaju

    //obe nastavim na cifru, aby v dalsom cykle boli predchadzajuce
    stup_minule = cifra;
    kles_minule = cifra;
end

vysledok mam v premennych stupaju, klesaju



focko píše:
čisto technická otázka, čo v prípade, že bude číslo: 12321232123

Prečo by to mala byť nejaká výnimka? Ani neklesá, ani nestúpa, tam nie je čo riešiť.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Zistenie či cifry v čísle stupaju/klesaju

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3
Bydlisko: Košice - ok...
Príspevok NapísalOffline : 09.02.2017 8:20

Nie je špecifikované čo sa má vtedy diať... Teoreticky nemusíš všetky prechádzať, akonáhle narazíš na zmenu, tak môžeš cyklus ukončiť







_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 09.02.2017 8:22

Mám v paži, pri takto malých vstupoch bude overhead kontroly ukončenia podobný, ako to prejsť do konca bez nej. To bude mať zmysel až pri kontrole mnoho-ciferných čísel.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. C výpis cisle

v Assembler, C, C++, Pascal, Java

3

455

15.04.2017 13:00

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie teploty

v nVidia grafické karty

3

840

09.01.2006 20:53

jaffar Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie hesla

v Bezpečnosť a firewally

3

861

04.08.2011 21:02

Bajzik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie zostavy

v Služby a webstránky

1

278

13.12.2013 11:07

Icehammer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie suradnic

v JavaScript, VBScript, Ajax

1

332

16.08.2012 8:53

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie FSB

v Benchmarky a diagnostické programy

1

775

21.10.2009 10:57

f4r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie IP

v Sieťové a internetové programy

11

2262

18.08.2009 0:49

zmija31 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie hesla

v Sieťové a internetové programy

12

12895

06.07.2011 17:17

Etoeto Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie teplot

v AMD čipové sady

2

446

25.10.2011 11:58

MilanYX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie hostingu

v Webhosting a servery

2

999

10.03.2008 15:21

ove Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie id

v JavaScript, VBScript, Ajax

4

768

29.09.2010 19:40

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zistenie prehliadaca

v PHP, ASP

7

1248

31.08.2008 17:28

m4r14n Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie portu adresy

v Siete

2

1543

03.11.2009 12:40

maross99 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie pristopovych bodov

v Siete

6

478

28.08.2008 22:03

KatjushaMan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie nazvu pesniciek

v Audio programy

7

8750

25.05.2006 17:16

prostor Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie textoveho suboru

v Assembler, C, C++, Pascal, Java

2

497

12.05.2012 22:18

Siriuse Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra