mam pytanie, jeżeli ktoś zna odpowiedz to będę wdzięczny...
Zadanko jest następujące: Dana jest liczba naturalna n. Znajdź: liczbę jej cyfr, sumę jej cyfr, pierwszą najbardziej znaczącą cyfrę tej liczby.
Czy da się zrobić program w ten sposób że wczytywana będzie bezpośrednio jednolita liczba jako zmienna i dopiero potem jakoś ta zmienna zostanie podzielona na kilka innych względem cyfr które potem trzeba rozpatrzeć. Oczywistym jest że da się to zrobić pytając w programie o wpis poszczególnych cyfr liczby ale to jest pójście na łatwizne
Dana jest liczba naturalna n. Znajdź: liczbę jej cyfr, sumę jej cyfr, pierwszą najbardziej znaczącą cyfrę tej liczby.
Zakładam, że to Turbo Pascal.
var
s : string;
i,j : integer;
begin
write('Podaj liczbę: '); readln(s);
writeln('Liczba cyfr: ',length(s));
j := 0;
for i := 1 to length(s) do inc(j,byte(s[i])-48);
writeln('Suma cyfr: ',j);
writeln('Najbardziej znacząca cyfra: ',s[1]);
end.
nie kompilowane, więc mogą być jakieś drobne błędy.
p.s. następnym razem pomyśl sam, to nie jest przedszkole programistyczne.
sorki że robie przedszkole ale jestem na bardzo początkowym etapie zabawy z TP także jeszcze jedno małe pytanie. Wyjaśnij mi jak działa ta wartość o którą zwiększasz parametr w poleceniu inc, mianowicie wartość 'byte(s[i])-48'. Do czego jest to polecenie i czemu jest odjęte akurat 48. Sorry że tak płytkie pytanie ale dla mnie to jak mówiłem początki. Dzięki z góry za odpowiedz a z dołu za poprzedni algorytm :
'byte(s[i])-48'
Bo kody ascii cyferek zaczynają się od 48, a każdy znak w ciągu znaków to kod ascii. Jeśli konwersja char na byte nie odpowiada, to zawsze możesz użyc np. ord(s[i])-48, albo val(s[i],k,j) - w k masz szukaną wartość, albo int(s[i])-$30... itepe itede, etece.
// help + tablica ascii i już wiesz, co i jak.
No wiem że 48 to w kodzie ASCII jest 0 ale czemu akurat tyle jest odjęte ?
albo co oznacza $30 i czemu akurat tyle jest odjęte?? proszę kogoś o odpowiedz
ludzie pomóżcie mi z powyższym ! Potrzebne mi to jest ...
Niech help będzie z tobą.