# Trung tâm xử lý sự cố > Hỏi-Đáp về Lập trình >  cho mình hỏi tý passcal

## 10comblog

đề bài là
*nhập vào số tự nhiên n tìm tích tạo bởi các chữ số của n.*


mình làm thế này k biết sai ở đâu nhỉ 

var n:string; s,l,i:interger ; a:array[1..100];
begin
clrscr;
writeln('nhập số n : ');readln(n);
l:=length(n);
s:=1 ;
for i:=1 to l do
begin
clrscr;
writeln(n_);readln(a);
s:=s*a;
end;
writeln('tích ...',s);
readln;
end._

----------


## nguyenvanhoang99

> đề bài là
> *nhập vào số tự nhiên n tìm tích tạo bởi các chữ số của n.*
> 
> 
> mình làm thế này k biết sai ở đâu nhỉ 
> 
> var n:string; s,l,i:interger ; a:array[1..100];
> begin
> clrscr;
> ...


[i][i][i]
bài của bạn thiếu khai báo


```
uses crt;
```

đó là cái sai thứ nhất!
còn cái sai thứ 2 là:


```
writeln(n[i]);readln(a[i]);
```

kiểu integer ko đọc được kiểu string.
bạn thử sửa câu lệnh đó thành như sau xem:


```
writeln(n);
val(n,a,kt);

```

_biến kt là biến để kiểm tra xem xâu n có được chuyển sang thành số a không. nếu chuyển đổi thành công thì kt=0.
còn cái thứ 3:


```
a:array[1..100];
```

khai báo thiếu!
sửa thành:


```
a:array[1..100]of integer;
```

thanks mình phát nha!!!_

----------


## dinhduongchobe

> bài của bạn thiếu khai báo
> 
> 
> ```
> uses crt;
> ```
> 
> đó là cái sai thứ nhất!
> còn cái sai thứ 2 là:
> ...


[i][i]
thank bạn cái.
mình chỉ thắc mắc ở chỗ


```
 writeln(n);readln(a);
```

_ thôi còn mấy cái khác do thiếu sót gì đấy [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img][img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img].
mình tưởng writeln ra rồi readln lại thì k sao chứ. 
như lúc nhập dữ liệu ấy.làm sao biết lúc mình nhập là kiểu xâu hay số ???
khi chạy thử thì k báo lỗi nhưng k kết quả [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img]_

----------


## adminphim

up cái nhá [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img] .

----------


## drspillerseo

có ai ở đấy ko ????? .

----------


## banthe247

> uses crt;
> var n,a,s:integer;
> begin
> clrscr;
> write('nhập n:');readln(n);
> a:=n;
> repeat a:=a mod 10;
> s:=s*a;
> until a=0;
> ...


bạn thử cái này đi
lâu ko sờ vào pascal nên ko bik.nhưng thuật toán là cứ lấy số dư của n khi chia cho 10 rồi nhân với nhâu

----------


## hajdajgja

> bài của bạn thiếu khai báo
> 
> 
> ```
> uses crt;
> ```
> 
> đó là cái sai thứ nhất!
> còn cái sai thứ 2 là:
> ...


_

lệnh val sai này . ....................._

----------


## remcuaminhdang

> bạn thử cái này đi
> lâu ko sờ vào pascal nên ko bik.nhưng thuật toán là cứ lấy số dư của n khi chia cho 10 rồi nhân với nhâu


[img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img] chữ số n chưa biết là bao nhiêu chữ số cả nên k làm thế đc, thank bạn đã vào giúp tớ [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img]

----------


## congthanh2406

nếu bạn không hiểu lệnh val thì mình giải thích kòn ko thì thoy!!!
lệnh val có cú pháp như sau:


```
val(st:string; var num; var code:integer);
```

đổi xâu số st thành số và gán kết quả lưu vào biến num. nếu việc chuyển đổi thành công thì biến code có giá trị là 0, ngược lại biến code có giá trị khác 0(vị trí của lỗi)

----------


## Seoprok45

> up cái nhá .
> 
> có ai ở đấy ko ????? .


 ______________________________________________ 
ko spam nha bạn

----------


## phukotler5

> nếu bạn không hiểu lệnh val thì mình giải thích kòn ko thì thoy!!!
> lệnh val có cú pháp như sau:
> 
> 
> ```
> val(st:string; var num; var code:integer);
> ```
> 
> đổi xâu số st thành số và gán kết quả lưu vào biến num. nếu việc chuyển đổi thành công thì biến code có giá trị là 0, ngược lại biến code có giá trị khác 0(vị trí của lỗi)


mình chỉ thắc mắc tại sao wrieln ra rồi readln vào a lại k đc. còn hàm val mình biết mà [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img],
ý ông kia là hàm val của bạn bị sai chỗ dấu chấm sửa lại dấu phấy ấy


```
val(n[i].a[i],bt)
```

; sửa lại thành


```
val(n[i],a[i],bt])
```

---------------------------------bài viết đã được trộn ---------------------------------



> ______________________________________________ 
> ko spam nha bạn


up cho em nó lên cái mà [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img] .

----------


## thienanphuoc01

```
uses         crt;
               var n,a,s,du:integer;
begin
               clrscr;
               write('nhap n:');readln(n);
               a:=n;
               s:=1;
               repeat
                             if a>10 then
                             begin
                                            du:=a mod 10;
                                            a:=a div 10;
                                            s:=s*du;
                             end
                             else
                             begin
                                            s:=s*a;
                                            break;
                             end;
               until a=0;
               write('tich cac chu so:',s);
               readln;
end.
```

p/s : bài này mình chỉ chỉnh sửa lại 1 chút từ code của *dr.g .* thuật toán của bạn ý đúng rồi đó bạn ạ .

----------


## tungvu

lệnh *readln* là để đưa kía tự từ bàn phím vào nên ko thể làm như bạn đc .

----------


## jindovn

> lệnh *readln* là để đưa kía tự từ bàn phím vào nên ko thể làm như bạn đc .


thế ak tớ tưởng *readln* là ghi ký tự màn hình vào. thế thì toi rồi [img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img](
thank bạn nhá

----------

