Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 25. 11. 2013 11:14

Sandrastrelcova
Příspěvky: 36
Škola: VŠE
Reputace:   
 

prosím pomozte opravit

Ahoj všem, sestavila jsem program na převedení arabského čísla do římského. Bohužel mi to pořád nejde opravit aby to bylo korektne..sedím tady nad tím už nějakou tu hodinu a pořád nevím..co je špatně na mé proceduře? prosím i o vysvětlení - chybama se člověk učí. Můj program zde"


   var cislo, x : integer;
begin
  read(cislo);
  procedure tisice(var N: integer);
  begin
    case N div 1000 of
    1 : write('m');
    2 : write ('mm');
    3 : write('mmm');
    4 : write('mmmm');
    end;
    N:= N mod 1000;
    end;
procedure stovky (var N: integer);
begin
   case N div 100 of
   1 : write ('c');
   2 : write ('cc');
   3 : write ('ccc');
   4 : write ('cccc');
   5 : write ('d');
   6 : write ('dc');
   7 : write ('dcc');
   8 : write ('dccc');
   9 : write ('cm');
   end;
   N:=N mod 100;
   end;
procedure desitky(var N: integer);
begin
   case N div 10 of
   1: write ('x');
   2: write ('xx');
   3: write ('xxx');
   4: write ('xl');
   5: write ('l');
   6: write ('lx');
   7: write ('lxx');
   8: write ('lxxx');
   9: write ('xc');
   end;
   N:= N mod 10;
   end;
procedure jednotky(var N: integer) ;
case N of
1: write ('i');
2: write ('ii');
3: write ('iii');
4: write ('iv');
5: write ('v');
6: write ('vi');
7: write ('vii');
8: write ('viii');
9: write ('ix');
end;
end;
begin
  read(cislo);
  if cislo=0 then write ('0');
  else begin
    tisice(cislo);
    stovky(cislo);
    desitky(cislo);
    jednotky(cislo);
    end;
end.

Offline

 

#2 25. 11. 2013 13:15

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: prosím pomozte opravit

co ti říká pascal?

Offline

 

#3 26. 11. 2013 07:50 — Editoval Honzc (29. 11. 2013 13:02)

Honzc
Příspěvky: 4641
Reputace:   248 
 

Re: prosím pomozte opravit

↑ Sandrastrelcova:
Program skoro dobře (myšlenka dobře, v provedení jsou drobné chyby)
Tedy
1. deklarované x nikde nepoužíváš - tedy tam nemusí být
    Pak var cislo: Integer;
2. Pokud používáš procedury, které máš nějak definované, pak jejich deklarace patří před tělo hlavního programu
    Pak vymaž řádky
    begin
      read(cislo);
3. Římská čísla se píší velkými písmeny a v proceduře stovky má být při 4 'CD' a ne 'CCCC'
4. U procedury jednotky ti hned po hlavičce chybí begin
5. Aby se ti program hned nezavřel, aniž bys viděla co udělal, pak před poslední (koncové) end napiš readln. (program pak čeká až dáš ENTER a teprve potom se ukončí)
6. Estetické a praktické rady
   a) je dobré aby uživatel věděl co se po něm chce (tedy napsat v těle programu před read(cislo) Write(' Zadej arabske cislo: '); a pak to read změnit na ReadLn(cislo);
   b) také to převedené číslo by chtělo nějak uvést (třeba před podmínku v hlavním těle programu napsat Write(' Prevedene cislo je: ');)

Zde je to jak by to mohlo vypadat:



A zde to je ještě jak to napsat jinak

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson