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 31. 10. 2010 12:32 — Editoval myrek (31. 10. 2010 12:35)

myrek
Příspěvky: 223
Reputace:   
 

pascal číslo bez první cifry

Dobrý den

Úkolem je odebrat z čísla jeho první číslici
tak to vůbec nevím jak na to - je na to nějakej příkaz?

Celé zadání: Na standardním vstupu je jedno kladné celé číslo menší než 32768. Určete číslo, které vznikne odebráním první cifry ze zápisu zadaného čísla, a vypište ho na standardní výstup. Případné vedoucí nuly ve výsledném čísle nevypisujte, ledaže by mělo výsledné číslo hodnotu 0.

Příklad vstupu:
23551

Odpovídající výstup:
3551

Děkuji za nápady

Offline

  • (téma jako vyřešené označil(a) myrek)

#2 31. 10. 2010 12:57

xxsawer
Příspěvky: 196
Reputace:   
 

Re: pascal číslo bez první cifry

↑ myrek:

Nenačítej číslo, ale načti pole znaků. Ověř si jestli se jedná o číslo a pak ho vypiš bez prvního znaku

Offline

 

#3 31. 10. 2010 13:05

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal číslo bez první cifry

v programovani zacinam takze prosim popsat nejak formalneji s prikazy

Offline

 

#4 31. 10. 2010 13:23

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal číslo bez první cifry

Ahoj, pokud to načteš jako string:

var text:string;
      i:byte;
readln(text);
{ string je pole znaků s indexy číslovanými od jedné, já potřebuji vypsat všechny znaky s indexy od dvou:}
for i:= 2 to length(text) do
   write(text[i])

Pokud to načteš jako číslo, pak jsi schopen pomocí desítkového logaritmu zjistit počet cifer zadaného čísla:
   pocet_cifer = dolni_cela_cast(log10(zadane_cislo)+1)
V pascalu existuje funkce pow(základ, exponent), pomocí které vytvořím číslo 10^(pocet_cifer-1).
Výsledek získám jako zbytek po dělení zadaného čísla tímto číslem 10^(pocet_cifer-1).

Tento postup funguje pro čísla větší nebo rovna deseti.

Offline

 

#5 31. 10. 2010 13:39

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

já sem to dělal takhle ale splnil sem ten ukol jenom na 60% ulítávaj mi čísla jako 1001

Program pocetcifer;
const m=ln(10);
var x,v,h,z: integer;b,c,d,e,y,w:real;
begin
read(v);
y:=ln(v);
w:=y/m;
x:=Trunc(w);
b:=exp(x*m);
z:=trunc(b);
c:=v/z;
d:=frac(c);
e:=d*b;
h:=trunc(e);
writeln(h);
end.

Offline

 

#6 31. 10. 2010 13:50 — Editoval septolet (31. 10. 2010 13:50)

septolet
Příspěvky: 334
Reputace:   
 

Re: pascal číslo bez první cifry

↑ vojta01: Ještě to chce ošetřit odebrání případných 0. Třeba pro číslo 10002 by ti tvůj program vypsal 0002.

Jinak myslím, že rozumnější to bude s využitím stringu.

Offline

 

#7 31. 10. 2010 13:52

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

tak už to mám a jede to pro všechny čísla
Program pocetcifer;
const m=ln(10);
var x,v,i,z: integer;b,c,d,e,h,y,w:real;
begin
read(v);
y:=ln(v);
w:=y/m;
x:=Trunc(w);
b:=exp(x*m);
z:=trunc(b);
c:=v/z;
d:=frac(c);
e:=d*b;
h:=round(e);
i:=trunc(h);
writeln(i);
end.

Offline

 

#8 31. 10. 2010 14:20

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

↑ vojta01:
hele a to i:byte mám umístit v programu před nebo za begin ?

Offline

 

#9 31. 10. 2010 15:17

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal číslo bez první cifry

Proměnné text a i jsou globální pro celý program, umísti je obě na začátek programu.

Offline

 

#10 31. 10. 2010 15:39

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

hele a jak ted z tý řady čísel vyberu například jen 2 druhý číslo ?

Offline

 

#11 31. 10. 2010 17:47

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal číslo bez první cifry

Myslíž z řady cifer vyberu druhou cifru? znak := text[2]

Offline

 

#12 31. 10. 2010 17:57

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

↑ vojta01:to sem zkoušel a nějak mi to právě nešlo

Offline

 

#13 31. 10. 2010 18:02

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal číslo bez první cifry

Když máš podobnej problém, zkus uvést také prostředí, ve kterém pracuješ a co to hlásí za chybu.

Jinak ve stringu jsou indexy od 1 do length(text).
Ale netuším, kde by mohla být chyba.

Offline

 

#14 31. 10. 2010 18:15

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

v pascalu mám sečíst sudý cifry
tak sem napsal tohle
program soucetsudych;
var d:string;z,w,y:char;
    i:byte;q:integer;
begin
readln(d);
for i:=1 to length(d) do y:=d[2];z:=d[4];w:=[6];
q:=(y+z)+w;
write(q);
end.

ale furt mi to hlásí dvě chyby

Offline

 

#15 31. 10. 2010 18:21

septolet
Příspěvky: 334
Reputace:   
 

Re: pascal číslo bez první cifry

↑ Mr.Pinker:

Jaký chyby? Jinak v tom cyklu máš napevno zadaný indexy, spíš by to chtělo ověřovat, zdali i je sudé a pokud ano, tak sčítat.

Offline

 

#16 31. 10. 2010 18:30

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: pascal číslo bez první cifry

↑ Mr.Pinker:
by mě zajímalo jak chceš sčítat nějaký 2 znaky, nevím jestli to v pascalu jde, ale třeba v javě to určo nejde + jak římal ↑ septolet: tam máš napevno danné indexi takže buď tam musíš mít to i místo těch pevných a nebo tam máš naprd ten cyklus

já bych to přepsal trošku jinak... for i:=1 to length(d)/2 do y:=[2*i];

a tak by jsi měl v y postupně uloženy všechny sudé číslice...jak dále snimi pracovat už nevím a ani nevím jak převést v pascalu cahr na integer a jestli je to vůbec potřeba....jo a to kouzlení s tím length(d)/2 je proto, že ty chceš všechny čísla sudá, proto si délku vydělám 2mi a jelikoř se mi i pokžadé zvedne o 1 tak mi to nepřesáhne délku když ho poté násobím dvěmi(neumím vysvětlovat to se omlouvám, ale snad jsi to pochopil)

Offline

 

#17 31. 10. 2010 19:01

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal číslo bez první cifry

myslíš cifry na sudých pozicích zprava?

c ,soucet: integer;
...
readln(c);
while c > 0 do
begin
    c := c div 10; {odeberu poslední - lichou cifru}
    soucet := soucet + c mod 10; {přičtu aktuálně poslední cifru}
    c := c div 10; {odeberu i tu sudou cifru}
end;
writeln(soucet);


Pokud to mají být sudé cifry zleva, tak sečtu cifry na lichých i sudých pozicích zprava a nakonec vypíšu součet lichých nebo sudých cifer podle toho, jestli byla poslední přičtená cifra na liché pozici zleva (vypíšu sudé) nebo na sudé pozici zleva (vypíšu lichou).

Offline

 

#18 31. 10. 2010 19:49

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

Re: pascal číslo bez první cifry

nakonec sem to dokopal k tomuhle

Code:

program soucetcifer;
const m=ln(10);
var c,x,a,q:integer;w,y:real;
begin
readln(c);
y:=ln(c);
w:=y/m;
x:=Trunc(w)+1;
a:=x mod 2;
if a=1 then while c>0 do
begin
c:=c div 10;
q:=q + c mod 10;
c:=c div 10;
end
else
while c>0 do
begin q:=q + c mod 10;
      c:=c div 100;
end;
writeln(q);
end.

Offline

 

#19 01. 11. 2010 13:11 — Editoval myrek (02. 11. 2010 20:01)

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal číslo bez první cifry

číslo bez první cifry i součet sudých fungují a jak že je to s tím počtem cifer?
děkuji moc všem za řešení a nápady
téma považuji za bohatě vyřešené

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson