| | mảng trong pascal. | |
| | Tác giả | Thông điệp |
---|
AnhCoYeuEm Member
Tổng số bài gửi : 25 Points : 25718 Rep power : 0 Join date : 25/04/2010 Age : 30 Đến từ : Ninh Bình.
| Tiêu đề: mảng trong pascal. Mon Apr 26, 2010 3:33 am | |
| đề: nhập vào 1 mảng số thực. + sắp xếp theo thứ tự tăng dần + nhập vào 1 số thực x kiểm tra xem x có trong mảng không? nếu có thì in ra tất cả vị trí của x trong mảng, nếu không có thì chèn x vào mảng sao cho mảng vẫn tăng.
ai biết giúp em nhé. | |
| | | sun Moderator
Tổng số bài gửi : 72 Points : 26147 Rep power : 26 Join date : 17/02/2010 Age : 30 Đến từ : Thái Nguyên City
| Tiêu đề: Re: mảng trong pascal. Wed Apr 28, 2010 12:51 am | |
| cái này cũng dễ mà - Code:
-
program sun; uses crt; const nmax=100; var a:array[1..nmax]of real; n,x:integer; procedure nhap; var i:integer; begin write('Nhap so phan tu: ');readln(n); for i:=1 to n do write('Nhap so thu ',i,': ');readln(a[i]); inc(i); end; procedure dc(var i,j:integer); begin a[i]:=a[i]+a[j];a[j]:=a[i]-a[j];a[i]:=a[i]-a[j]; end; procedure sap_xep; var i:integer; begin for i:=1 to n do for j:= 1 to n do if a[i]>a[j] then dc(i,j); end; procedure chen(x,i:integer); var j:integer; begin for j:=n+1 downto i+1 do a[j]:=a[j-1]; a[i]:=x; end; procedure tim(x:integer); var i:integer; begin for i:=1 to n do if x<=a[i] then begin if x=a[i] then begin writeln('Co');exit; end else chen(x); end; end; BEGIN clrscr; nhap; sap_xep; write('Nhap so can tim: ');readln(x); tim(x); readln; END. Có gì sai thì cứ pm nick chat của tớ nhá YH P/s: Lần sau bỏ code vào thẻ code cho dễ nhìn nhé bạn. Lần này mình sửa hộ. | |
| | | AnhCoYeuEm Member
Tổng số bài gửi : 25 Points : 25718 Rep power : 0 Join date : 25/04/2010 Age : 30 Đến từ : Ninh Bình.
| Tiêu đề: Re: mảng trong pascal. Wed Apr 28, 2010 3:40 am | |
| - sun đã viết:
- cái này cũng dễ mà
program sun; uses crt; const nmax=100; var a:array[1..nmax]of real; n,x:integer; procedure nhap; var i:integer; begin write('Nhap so phan tu: ');readln(n); for i:=1 to n do write('Nhap so thu ',i,': ');readln(a[i]); inc(i); end; procedure dc(var i,j:integer); begin a[i]:=a[i]+a[j];a[j]:=a[i]-a[j];a[i]:=a[i]-a[j]; end; procedure sap_xep; var i:integer; begin for i:=1 to n do for j:= 1 to n do if a[i]>a[j] then dc(i,j); end; procedure chen(x,i:integer); var j:integer; begin for j:=n+1 downto i+1 do a[j]:=a[j-1]; a[i]:=x; end; procedure tim(x:integer); var i:integer; begin for i:=1 to n do if x<=a[i] then begin if x=a[i] then begin writeln('Co');exit; end else chen(x); end; end; BEGIN clrscr; nhap; sap_xep; write('Nhap so can tim: ');readln(x); tim(x); readln; END. Có gì sai thì cứ pm nick chat của tớ nhá YH mình mới biết pascal mà bạn viết cái chương trình ra rồi nói thế thì làm sao mà hiểu được? bạn có thể phân tích hộ mình được không? | |
| | | Khách vi Khách viếng thăm
| Tiêu đề: Re: mảng trong pascal. Wed Apr 28, 2010 4:16 am | |
| - sun đã viết:
- Code:
-
procedure nhap; var i:integer; begin write('Nhap so phan tu: ');readln(n); for i:=1 to n do write('Nhap so thu ',i,': ');readln(a[i]); inc(i); end; cái nhập này đáng nhẽ phải nằm trong begin - end; chứ? - Code:
-
procedure nhap; var i:integer; begin write('Nhap so phan tu: ');readln(n); for i:=1 to n do begin write('Nhap so thu ',i,': ');readln(a[i]); end; { inc(i);} end; inc(i) là tăng i lên 1 đơn vị phải không nhỉ? lâu không xem lại nên cũng không nhớ, nếu đúng thì trong vòng for tăng lên làm gì? - Code:
-
procedure dc(var i,j:integer); begin a[i]:=a[i]+a[j];a[j]:=a[i]-a[j];a[i]:=a[i]-a[j]; end; procedure sap_xep; var i:integer; begin for i:=1 to n do for j:= 1 to n do if a[i]>a[j] then dc(i,j); end; 2 cái thủ tục này sao không viết thành 1 cho gọn? Và dùng luôn 1 biến tạm sắp xếp cho nhanh, sao dùng j mà không khai báo? - Code:
-
var i,j:integer; tam: real; begin for i:=1 to n - 1 do for j:= i + 1 to n do if a[i]>a[j] then begin tam:=a[j]; a[j] := a[i]; a[i] := tam; end; end; còn cái chèn này thì cũng chưa biết. Để xem lại xem sao. - Code:
-
procedure chen(x,i:integer); var j:integer; begin for j:=n+1 downto i+1 do a[j]:=a[j-1]; a[i]:=x; end; Cũng chưa biết bài này có đúng không nữa. Chưa test, nhờ mấy bạn test thử rồi cho ý kiến về bài của Sun nhé.
Được sửa bởi DucMjnh1992 ngày Wed Apr 28, 2010 7:37 am; sửa lần 2. |
| | | AnhCoYeuEm Member
Tổng số bài gửi : 25 Points : 25718 Rep power : 0 Join date : 25/04/2010 Age : 30 Đến từ : Ninh Bình.
| Tiêu đề: Re: mảng trong pascal. Wed Apr 28, 2010 4:56 am | |
| 2 Mod cãi nhau không biết ai thắng đây nhỉ? mọi người giúp em làm nhanh mấy bài hộ em với em đang cần. Hj, thanks mọi người nhiều. | |
| | | Khách vi Khách viếng thăm
| Tiêu đề: Re: mảng trong pascal. Thu Apr 29, 2010 2:50 am | |
| - Code:
-
program mang_thuc; uses crt; var a:array[1..100] of real; i, j, n: integer; tam, x: real; kt: boolean; begin clrscr; writeln('nhap vao so luong phan tu cua mang: '); readln(n); {**** Nhap mang. ****} for i := 1 to n do begin write('nhap vao phan tu thu ',i,' cua mang: '); readln(a[i]); end; {**** ket thuc nhap mang bat dau sap xep. ****} for i := 1 to n - 1 do for j := i + 1 to n do if a[i] > a[j] then begin tam := a[i]; a[i] := a[j]; a[j] := tam; end; {**** ket thuc sap xep, bat dau in ra mang da sap xep. ****} writeln('mang sau khi sap xep la:'); for i := 1 to n do write(a[i]:6); {**** ket thuc in, xuong dong, nhap vao 1 so thuc x. ****} writeln; writeln('nhap vao 1 so thuc:'); readln(x); {**** gan kt = false de lam bien danh dau. ****} kt := false; {**** ket thuc nhap, bat dau kiem tra x co nam trong mang hay khong. ****} {**** neu x nam trong mang thi xuat ra tat ca cac vi tri cua x. ****} {**** va dung bien kt = true de danh dau x co trong mang. ****} for i := 1 to n do if x = a[i] then begin write(i:6); kt := true; end; {**** ket thuc kiem tra x, neu x co trong mang thi bo qua day lenh sau. ****} {**** neu x khong co trong mang thi thuc hien day lenh duoi. ****} if kt = false then begin for i := n downto 0 do begin j := i + 1; {**** x lon nhat, nam trong mang hoac x la nho nhat thi deu thuc hien. ****} if (x > a[i]) and (kt = false) then begin a[j] := x; kt := true; end {**** neu x la lon nhat hoac x khong lon nhat. ****} {**** nhung dieu kien tren da duoc thuc hien 1 lan thi lam. ****} else if (x > a[i]) and (kt = true) then a[j] := a[i + 1] {**** khi x la nho nhat thi lam. ****} else a[j] := a[i]; end; {**** ket thuc chen x vao mang, in mang da sap xep ra man hinh. ****} writeln('mang sau khi chen la:'); for i := 1 to n + 1 do write(a[i] : 6); end; {**** ket thuc chuong trinh. ****} readln; end. Trên đây là chương trình mình viết, trong chương trình có chú thích giải thích code rồi nên không cần giải thích nữa. Mình làm như trên và đã test, những lần mình test đều đúng nhưng chưa test được hết tất cả các trường hợp vì không có nhiều thời gian. Ai test thấy sai chỗ nào thì cho mình ý kiến để sửa hoặc sửa hộ mình nhé. Ai có cách khác nhanh hơn thì chỉ mình nhé, mình không được thong minh lắm nên chỉ nghĩ ra được như thế thôi, code hơi dài hơn so với code của Sun. Cũng chưa test code của Sun nên chưa biết là đúng hay sai. |
| | | sun Moderator
Tổng số bài gửi : 72 Points : 26147 Rep power : 26 Join date : 17/02/2010 Age : 30 Đến từ : Thái Nguyên City
| Tiêu đề: Re: mảng trong pascal. Fri Apr 30, 2010 12:52 am | |
| hihi tại hôm đấy buồn ngủ quá nên chưa test lại! Sory nha Sao anh lại để hết vào chương trình chính thế ! Viết chương trình con thì dễ hiểu hơn mà đỡ phải chú thích nhiều như anh ) nhìn hoa hết mắt kaka | |
| | | Khách vi Khách viếng thăm
| Tiêu đề: Re: mảng trong pascal. Sat May 01, 2010 8:21 am | |
| - sun đã viết:
- hihi tại hôm đấy buồn ngủ quá nên chưa test lại! Sory nha
kiểu này thì chết con người ta rồi còn gì ) =)). - Sun đã viết:
- Sao anh lại để hết vào chương trình chính thế ! Viết chương trình con thì dễ hiểu hơn mà đỡ phải chú thích nhiều như anh ) nhìn hoa hết mắt kaka
thực ra cũng không cần chú thích nhưng mà chú thích thế để cho em đó hiểu thôi. Còn chương trình con thì với chương trình đơn giản như thế không cần thiết phải dùng. |
| | | AnhCoYeuEm Member
Tổng số bài gửi : 25 Points : 25718 Rep power : 0 Join date : 25/04/2010 Age : 30 Đến từ : Ninh Bình.
| Tiêu đề: Re: mảng trong pascal. Sat May 01, 2010 8:36 am | |
| Thế là bài trên đúng rồi à? hj` chép về đi chấm điểm cái. Thứ 2 phải nộp bài rồi, cảm ơn mọi người nhé. | |
| | | Sponsored content
| Tiêu đề: Re: mảng trong pascal. | |
| |
| | | | mảng trong pascal. | |
|
Trang 1 trong tổng số 1 trang | |
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |