Witam mam do napisania program w Turbo Pascalu który po wczytaniu liczby z wejscia obliczy ilość kółek w tej liczbie np jeśli wczytamy 88 to na wyjściu ma pojawić się 4 ( jedna ósemka to dwa kółka) jak wczytamy np 2581 na wyjściu ma pojawic sie dwa ( bo jest tu jedna ósemka) natomiast jak wczytamy inną luiczbe np 7 4 3 na wyjsciu powinno pojawic sie zero. Nie mam za bardzo pomysłu jak to zrealizować Prosiłbym o jakieś wskazówki.

- Rejestracja:około 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
To jest skomplikowana sprawa. Musisz użyć sieci neuronowej która będzie bawić się w rozpoznawanie obrazu i stwierdzać ile jest kółek...

- Rejestracja:ponad 21 lat
- Ostatnio:około 5 godzin
function ile_kolek(liczba:integer)
const kolka:array[0..9] of integer = (1,0,0,0,0,0,1,0,2,1);
var s:string;
i, ile:integer;
begin
str(liczba, s);
ile:=0;
for i:=0 to length(s)-1 do
inc(ile,kolka[s[i]]);
ile_kolek:=ile;
end;
Nie sprawdzane.
Ponadto, celowo jest tu pewien błąd.


Dziękuje wszystkim za odpowiedzi myślałem że jednak obejdzie sie bez korzystania z funkcji łańcuchowych a tu jednak trzeba było a z tym miałem największy problem ;) z tablicą widze że dobrze myślałem tu ktoś pytał jeszcze jak to ma byc jesli mamy 80 to są trzy kołka ósemka to dwa a 0 no to wiadomo trzecie.

że jednak obejdzie sie bez korzystania z funkcji łańcuchowych
A nie obejdzie się? Nikt tak nie powiedział. Tak po prostu jest łatwiej.
z tablicą widze że dobrze myślałem tu ktoś pytał jeszcze jak to ma byc jesli mamy 80 to są trzy kołka ósemka to dwa a 0 no to wiadomo trzecie.
Znaków interpunkcyjnych nie umiesz stawiać to ciężko quotować.
Ja zamiast tablicy bym użył case, sądzę że by czytelniej było...

- Rejestracja:ponad 19 lat
- Ostatnio:4 dni
merkury napisał(a):
... że jednak obejdzie sie bez korzystania z funkcji łańcuchowych a tu jednak trzeba ...
Wcale nie trzeba:
const Map:array['0'..'9'] of Byte=(1,0,0,0,0,0,1,0,2,1);
var Ch:Char;
var Cnt:Integer;
var F:Boolean;
begin
while true do
begin
Write('Podaj liczbe: ');
F:=true;
Cnt:=0;
while true do
begin
Read(Ch);
if Ch=#13 then Continue;
if Ch=#10 then Break;
if ('0'<=Ch)and(Ch<='9') then Inc(Cnt,Map[Ch]) else F:=false;
end;
if F then WriteLn('Ilosc kolek wynosi ',Cnt)
else WriteLn('To nie jest liczba');
WriteLn;
end;
end.
- Rejestracja:prawie 13 lat
- Ostatnio:ponad rok
- Postów:13
Też się zaciekawiłem tematem, ale cos mi nie wychodzi. Mógł by mi ktoś wytłumaczyć gdzie mam błąd?
program kolka;
uses Crt;
var liczba,ilosc2:integer;
function liczba_kolek(liczba:integer):integer;
const kolka:array[0..9] of integer =(1,0,0,0,0,0,1,0,2,1);
var i,b,kod,ile:integer;
s,t:string;
begin
str(liczba,s);
ile:=0;
for i:=0 to length(s)-1 do
begin
t:=copy(s,i,1+i);
val(t,b,kod);
ile:=ile+kolka[b];
end;
liczba_kolek:=ile;
end;
Begin
ClrScr;
write('Podaj liczbe, aby policzyc w niej kolka: ');
read(liczba);
ilosc2:=liczba_kolek(liczba);
Writeln('Liczba ma kolek: ',ilosc2);
readkey;
end.

- Rejestracja:ponad 20 lat
- Ostatnio:około rok
function cyrklesy(w:cardinal; i:integer):integer;
begin
if i>9 then cyrklesy:=cyrklesy(w, i div 10) + (w shr (2*(i mod 10))) and 3
else cyrklesy:= (w shr ((i mod 10)shl 1)) and 3;
end;
var i: integer;
begin
readl( i );
writeln( cyrklesy(397313, i) );
end.


- Rejestracja:ponad 14 lat
- Ostatnio:prawie 10 lat
można dużo prościej:
function cyrklesy(w, y: cardinal):integer;
begin
cyrklesy := (w shr (y mod 10) and (w shr 1 shr (y mod 10))) and 1 + (w shr (y mod 10)) and 1;
if y > 9 then Inc(cyrklesy, cyrklesy(w, y div 10));
end;
var i: cardinal;
begin
readln( i );
writeln( cyrklesy(833, i) );
end;

TomRiddle a czym jest elipsa jak nie spłaszczonym kołem :D


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.