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

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
↑ 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:
Offline