Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Глюки!!!

Автор: Миног 7.02.2003 21:15

Помогите кто может!
Такая часть программы: вводится число,все его цифры записываются в массив.Если это число заканчивается на 1 то вместо того чтобы записать 1 в массив оно пишет 0.Вот код программы:program chisla;

Код
const
k1=12;
var
S:array[1..k1] of integer;
A:array[0..9] of integer;
M:array[0..9] of integer;
k,c,g,c1:integer;
n:longint;
n1:real;
begin
writeln('Введите число');
readln(n);
n1:=n;
k:=0;
while n1>1 do
 begin
   n1:=n1/10;
   k:=k+1;
   s[k]:=trunc((n1-trunc(n1))*10);
 end;
 for n:=0 to 9 do
  begin
  c1:=0;
   for g:=1 to k do
    if s[g]=n then c1:=1;
    if c1=1 then c:=c+1;
  end;
writeln('Используется цифр:',c);
for n:=0 to 9 do
begin
for g:=1 to k do
 if s[g]=n then m[n]:=m[n]+1;
 if m[n]<>0 then writeln(n,': ',m[n]);
 end;
readln;
end.

Автор: mj 8.02.2003 3:27

ты зря сделал через вещественный тип...

Вот нормальный пример:

Код
var
 n: Longint;
 t: Byte;
 m: array[0..9] of Byte;
begin
 writeln('Введите число');
 readln(n);
 if n<0 then  n := -1*n;
 while n<>0 do
 begin
   t := n mod 10;
   n := n div 10;
   inc(m[t]);
 end;
 n := 0;
 for t := 0 to 9 do
   if m[t]>0 then Inc(n);
 writeln('Используется цифр:', n);
 for t := 0 to 9 do
   if m[t]>0 then writeln(t,': ',m[t]);
 readln;
end.