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,
máme za úkol napsat v pascalu program, který z čísla sebere první číslici. Tj. z 1234 bude 234
jdu na to tak, že nejdřív spočítám logaritmus o zakladu 10, vezmu z toho dolni celou cast (floor) a udelam modulo.
program odebranicislice;
uses math;
var a,c,d,e:integer;
b:real;
begin
readln(a);
begin
b:=(log10(a));
//spocita logaritmus
begin
c:=(floor(b));
//dolni cela cast z b
begin
d:=(power(10,c));
//desata mocnina
begin
e:=(a mod d); //a mod 10^c
begin
write(e);
readln();
end.Kompilator mi ale hlasi error u d:=(power(10,c));
Nevi nekdo proc? Diky
Offline
↑ rama27:
Modulo pro změnu nekamarádí s reálnými typy. Neboj se přetypování, to se, pokud si Pascal ještě vybavím, dělá takhle:
d:=integer(power(10,c))
Offline
↑ rama27:
Tak pokud to nejde přeložit, tak asi nejde;-) V tom případě se podívej to manuálu, jak je definovaná některá z konverzních funkcí Int, Round a Trunc, jedna z nich by měla dělat přesně to, co chceš.
Offline
↑ rama27:
Můžeš mi vysvětlit, proč to děláš tak složitě?
Co to udělat takto?
program odebranicislice;
uses SysUtils;
var i: integer;
c,c1: string;
begin
write(' Zadej cislo: ');
readln(c);
c1 := '';
for i := 2 to Length(c) do
c1 := c1+c[i];
writeln;
writeln(' ',c1);
readln;
end.Offline