Go Back   VN-Zoom forum > Chia sẻ kiến thức > Lập trình > Pascal | C/C++

 


Server Counter Strike 1.6 miễn phí cho thành viên VZ

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 12-05-2008, 21:18   #16
Búa Gỗ Đôi
 
gico2107's Avatar
 
Tham gia: Dec 2007
Bài: 27
VZD: 566
Điểm: 16/4 bài viết
Default

Trích:
Mr_Dolphin View Post
Đúng cách này sẽ xóa hết kí tự trắng nhưng khi cần dùng xóa kí tự trắng thường là do yêu cầu chuẩn hóa sâu kí tự của đầu bài, tức là xóa hết trằng ỏ đầu, cuối và mỗi chữ trong chuỗi chỉ cách nhau bởi 1 kí tự trắng. Từ yêu cầu đó mới nảy sinh ra 3 bước chuẩn hóa xâu mà bạn đã biết.

@to gico2107 : giải thích của bạn sai hoàn toàn, đoạn mã 1 sẽ xóa hết kí tự trắng ở đầu xâu.
Còn đoạn thử 2 không xóa đc hết kí tự trắng ở đầu xâu, có thể giải thích đơn giản như sau:
Nếu xâu của bạn có 5 kí tự trắng đánh dấu là abcde
ban đầu s[1] là kí tự trắng a, vì a là kí tự trắng nến xóa a dẫn đến s[1] trở thành kí tự trắng b tăng i lến 1 tức i=2 mà hiện tại s[2] là kí tự trắng c và tiếp tục xét và xóa, như vậy nó bỏ qua kí tự trắng b.
Tóm lại đoạn code 2 cứ cách một kí tự lại xóa một kí tự trắng, code sai, thậm chí bạn nhập vào 1 chuỗi nhứ sau: a s d f g h (bắt đầu là 1 kí tự trắng và sau đó là xen kẽ nhau 1 kí tự thường và 1 kí tự trắng) code vẫn hoạt động và xóa hết kí tự trắng.
code pascal tối nghĩa wa.
đọc C riết rồi gà Pascal luôn.
múa rìu wa mắt thợ rồi.
gico2107 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2008, 21:18   #17
Búa Đá Đôi
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 77
VZD: 1.286
Điểm: 2/2 bài viết
Default

em chưa hiểu chỗ Upcase lên .. nói chung cứ giải thích rõ thuật toán và minh họa trên chương trình trên hộ em em cám ơn
__________________
Một buổi tối đẹp trời. Cô gái gọi điện cho cậu trai đang tán tỉnh mình : "Anh ơi... Nhà em đi hết cả rùi... Anh đến ngay nhé... Không có ai ở nhà đâu... !". Cậu trai hí hửng vội vàng phóng xe đến nhà cô bạn, bấm chuông, 5 phút... 10 phút... 15 phút... Sau nửa tiếng bấm chuông, anh mới nhận ra, đúng là... "KHÔNG CÓ AI Ở NHÀ THẬT". potay..^^!
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2008, 21:23   #18
Búa Đá Đôi
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 77
VZD: 1.286
Điểm: 2/2 bài viết
Post

Trích:
thienthan View Post
Code:
for i=1 to length(s) do
if s[i]=#32 then
begin
delete(s,i,1)
dec(i)
end
hiểu rồi có nghĩa là trong trường hợp mà s[i] = #32 thì xóa nó đi sau mỗi lần xóa thì phần tử của chuỗi giảm xuống 1 nên ta phải Dec(i)
__________________
Một buổi tối đẹp trời. Cô gái gọi điện cho cậu trai đang tán tỉnh mình : "Anh ơi... Nhà em đi hết cả rùi... Anh đến ngay nhé... Không có ai ở nhà đâu... !". Cậu trai hí hửng vội vàng phóng xe đến nhà cô bạn, bấm chuông, 5 phút... 10 phút... 15 phút... Sau nửa tiếng bấm chuông, anh mới nhận ra, đúng là... "KHÔNG CÓ AI Ở NHÀ THẬT". potay..^^!
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-05-2008, 18:20   #19
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 341
VZD: 4.438
Điểm: 70/47 bài viết
Cool

PHP Code:
Program Dem_Tu;
{
$V-}
Var
St:String;
Function 
Sochu(Dong:String):Integer;
Var
    
dem,i:Integer;
Begin
    Dem
:=0;
    
i:=1;
   
Repeat 
       
While ((UpCase(Dong[i]) < 'A') Or (UpCase(Dong[i]) > 'Z'))
           And (
<=Length(Dong)) Do
           
i:=i+1; {xet cac ki tu khong phai chu cai thi tang i len}
      If 
<= Length(DongThen 
          Dem
:=Dem 1;    {Neu i khong vuot qua do dai dong thi tang dem}
       While ((
UpCase(Dong[i]) >= 'A') And (UpCase(Dong[i]) <= 'Z'))
           And (
<=Length(Dong)) Do 
      
i:=i+1;{tang i cho den het cac ki tu cua chu do}
   
Until i Length(Dong);
   
Sochu:=Dem;
End;
{---------------------------}
BEGIN
    Write
('-Nhap mot cau ca dao tuc ngu: ');
   
Readln(St);
   
Writeln('-Cau nay co: ',Sochu(St),' tu');
   
Readln
END

- Bạn đọc code trên nhé. Có thể nói ý đồ ng` viết code này như sau: số chữ trong câu là tổng số chứ cái đầu tiên của các chữ trong câu. Tăng i từ 1 đến khi gặp chữ cái đầu tiên thì đếm > tăng i tiếp đến khi hết chữ đó (gặp kí tự không phải chữ cái). Lặp lại quá trình đó cho đến hết câu.
- Cách này rất sáng tạo có thể sửa code một chút dùng lệnh sau sẽ thoáng hơn upcase(dong[i]) in ['A'..'Z']
__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Thành viên đã cám ơn bài viết này của Mr_Dolphin:
so_0_lanh_lung (15-05-2008)
Old 15-05-2008, 21:38   #20
Búa Đá Đôi
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 77
VZD: 1.286
Điểm: 2/2 bài viết
Default

em viết thế này có gì sai tìm số dương đầu tiên xuất hiện ,Hàm
Code:
program bt3;
var i,n : integer;
    a   : array[1..100] of integer;
{Phan tu Duong dau tien xuat hien}
   procedure tim(n : integer);
    var i : integer;
        x : array[1..100] of integer;
        begin
         i:=1;
         While (x[i] < 0) and (i<=n) do
          i:=i+1;
          write('phan tu duong dau tien xuat hien la ',x[i],'vi tri' , i);
        end;
   begin
    write('nhap n ');
    readln(n);
    for i:=1 to n do
    a[i] :=i-5;
    tim(n);
    readln;
   end.
__________________
Một buổi tối đẹp trời. Cô gái gọi điện cho cậu trai đang tán tỉnh mình : "Anh ơi... Nhà em đi hết cả rùi... Anh đến ngay nhé... Không có ai ở nhà đâu... !". Cậu trai hí hửng vội vàng phóng xe đến nhà cô bạn, bấm chuông, 5 phút... 10 phút... 15 phút... Sau nửa tiếng bấm chuông, anh mới nhận ra, đúng là... "KHÔNG CÓ AI Ở NHÀ THẬT". potay..^^!
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-05-2008, 22:01   #21
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 341
VZD: 4.438
Điểm: 70/47 bài viết
Default

Bạn viết thủ tục như vậy là không đúng rồi, bạn muốn tìm số dương đầu tiên trong mảng a phải không vậy thì phải sửa như sau:
Code:
program bt3;
type mang=array[1..100] of integer;
var i,n : integer;
    a   : mang;
{Phan tu Duong dau tien xuat hien}
   procedure tim(n : integer;x:mang);
    var i,t : integer;
        begin
         t:=0;
         for i:=1 to n do
          if x[i]>0 then begin t:=i;break;end;
          if t>0 then 
          writeln('Thang dau tien xuat hien la ',x[t],'vi tri' , t)
           else writeln('Khong co thang nao trong mang')
        end;
   begin
    write('nhap n ');
    readln(n);
    for i:=1 to n do
    a[i] :=i-5;
    tim(n);
    readln;
   end.
Không thể dùng cái while của bạn đc vì nếu không có số dương nào thì vận có kết luận số dương là phần tử cuối mang.
*Chú ý: "duong" là con trai nên gọi là thằng :d
__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-05-2008, 22:02   #22
Rìu Sắt Đôi
 
thienthan's Avatar
 
Tham gia: Nov 2007
Bài: 280
VZD: 4.092
Điểm: 74/60 bài viết
Send a message via Yahoo to thienthan
Default

Code:
program bt3;
var n,i : integer;
    a   : array[1..100] of integer;
{Phan tu Duong dau tien xuat hien}
   procedure tim(n : integer);
    var j : integer;{Cần khai báo biến khác với biến toàn cục i đã khai báo.
                        Trong trường hợp này không cần khai báo cũng được}
        x : array[1..100] of integer;
        begin
         j:=1;
         While (x[i] <= 0) and (j<=n) do
          j:=i+1;
          write('phan tu duong dau tien xuat hien la ',x[j],'vi tri' , j);
        end;
   begin
    write('nhap n ');
    readln(n);
    for i:=1 to n do
    a[i] :=i-5;
    tim(n);
    readln;
   end.
thienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-05-2008, 19:07   #23
Búa Đá Đôi
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 77
VZD: 1.286
Điểm: 2/2 bài viết
Smile

em chưa hiểu đoạn in đậm trong bài sau
Code:
Program Tinh_luong;
USES CRT;
TYPE
	ConTro = ^Banghi;
   BanGhi = RECORD
   	HoLot       : String[17];
      Ten         : String[7];
      Bl,Pc,Tlinh : LongInt;
      Next        : ConTro;
   End;
VAR
	First, Last, Newp : ConTro;
   Ch                : Char;
   i                 : Integer;
   HeapTop           : ^Integer;
Begin
	ClrScr;
   GotoXY(5,25);
   Writeln('Bam <Esc> de thoat, bam<Enter> de tiep tuc nhap');
   Window(1,1,80,24);
	Writeln('MINH HOA CACH VIET CHUONG TRINH KIEU CON TRO');
   Writeln('--------------------------------------------');
   First := NIL;
   Mark(HeapTop);
   i := 0;
   Repeat
   	i := i + 1;
      New(Newp);
      With Newp^ Do
      	Begin
         	Write('-Ho lot cua nguoi thu: ',i:2,' la: ');
            Readln(HoLot);
            Write('-Ten cua nguoi nay la: ');
            Readln(Ten);
            Write('-Bac luong cua nguoi nay la: ');
            Readln(Bl);
            Write('-Phu cap cua nguoi nay la: ');
            Readln(Pc);
            Tlinh := Trunc(Bl * 102.27) + Pc;
         End;
      If First = NIL Then
      	First := Newp
      Else
      	Last^.Next := Newp;
         Last := Newp;
         Last^.Next := NIL;
      Ch := ReadKey;
   Until Ch = #27;
   Writeln;
   ClrScr;
   Writeln('DANH SACH LINH LUONG');
   Writeln('--------------------');
   While First <> NIL Do
   	With First^ Do
      	Begin
         	Writeln('+Ho ten: ',HoLot,' ',Ten);
            Writeln('+Bac luong : ',Bl);
            Writeln('+Phu cap   : ',Pc);
            Writeln('+Duoc linh : ',Tlinh:8,' dong');
            First := Next;
            Writeln;
         End;
   Release(HeapTop);
   Writeln;
   Writeln('        Bam <Enter> de ket thuc');
   Readln
End.
Giải thích hộ em với nhá thanks
__________________
Một buổi tối đẹp trời. Cô gái gọi điện cho cậu trai đang tán tỉnh mình : "Anh ơi... Nhà em đi hết cả rùi... Anh đến ngay nhé... Không có ai ở nhà đâu... !". Cậu trai hí hửng vội vàng phóng xe đến nhà cô bạn, bấm chuông, 5 phút... 10 phút... 15 phút... Sau nửa tiếng bấm chuông, anh mới nhận ra, đúng là... "KHÔNG CÓ AI Ở NHÀ THẬT". potay..^^!
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-06-2008, 18:52   #24
Rìu Sắt Đôi
 
thienthan's Avatar
 
Tham gia: Nov 2007
Bài: 280
VZD: 4.092
Điểm: 74/60 bài viết
Send a message via Yahoo to thienthan
Default

Chú thích của bạn đây:
Nhưng hình như bài này hơi có vấn đề mình đã sửa lại rồi không biết có đúng với ý tưởng của bạn không?
Code:
Program Tinh_luong;
USES CRT;
TYPE
	ConTro = ^Banghi;
	BanGhi = RECORD
		HoLot : String[17];
		Ten : String[7];
		Bl,Pc,Tlinh : LongInt;
		Next : ConTro;
	End;
VAR
	First, Newp, Head : ConTro;{Khai báo Last hình như là hơi nhầm}
	Ch : Char;
	i : Integer;
	HeapTop : ^Integer;
Begin
	ClrScr;
	GotoXY(5,25);
	Writeln('Bam <Esc> de thoat, bam<Enter> de tiep tuc nhap');
	Window(1,1,80,24);
	Writeln('MINH HOA CACH VIET CHUONG TRINH KIEU CON TRO');
	Writeln('--------------------------------------------');
	First := NIL;
	Mark(HeapTop);
	i := 0;
	Repeat
	i := i + 1;
	New(Newp);
		With Newp^ Do
			Begin
				Write('-Ho lot cua nguoi thu: ',i:2,' la: ');
				Readln(HoLot);
				Write('-Ten cua nguoi nay la: ');
				Readln(Ten);
				Write('-Bac luong cua nguoi nay la: ');
				Readln(Bl);
				Write('-Phu cap cua nguoi nay la: ');
				Readln(Pc);
				Tlinh := Trunc(Bl * 102.27) + Pc;
			End;
		{Đoạn này để kiểm tra nhập cho lần đầu tiên thôi. Nếu là lần đầu thì nhập vào first}
		If First = NIL Then 
                    begin
			First := Newp;
                        Head := Newp;
                    end;
		Else
			First^.Next := Newp;{Chỗ này phải là First mới đúng}
		{Hết đoạn kiểm tra}
		First := Newp;{Khởi tạo lại để tiếp tục tạo danh sách liên kết động}
		First^.Next := NIL;
		Ch := ReadKey;
	Until Ch = #27;
	Writeln;
	ClrScr;
	Writeln('DANH SACH LINH LUONG');
	Writeln('--------------------');
        First := Nil;
        First := Head;
	While First <> NIL Do
		With First^ Do
			Begin
				Writeln('+Ho ten: ',HoLot,' ',Ten);
				Writeln('+Bac luong : ',Bl);
				Writeln('+Phu cap   : ',Pc);
				Writeln('+Duoc linh : ',Tlinh:8,' dong');
				First := Next;
				Writeln;
			End;
	Release(HeapTop);
	Writeln;
	Writeln('        Bam <Enter> de ket thuc');
	Readln
End .
Nói thật sao bạn lại học pascal nhỉ!
Mình chúa ghét nó luôn. Đặc biệt là phần con trỏ của nó tối nghĩa kinh không như C++ đâu đọc khó chịu lắm.

thay đổi nội dung bởi: thienthan, 13-06-2008 lúc 14:23.
thienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2008, 18:12   #25
Búa Đá Đôi
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 77
VZD: 1.286
Điểm: 2/2 bài viết
Default

Pascal là nền tảng của lập trình mà học cho biết thuật toán ,để học ngôn ngữ khác dễ hơn
__________________
Một buổi tối đẹp trời. Cô gái gọi điện cho cậu trai đang tán tỉnh mình : "Anh ơi... Nhà em đi hết cả rùi... Anh đến ngay nhé... Không có ai ở nhà đâu... !". Cậu trai hí hửng vội vàng phóng xe đến nhà cô bạn, bấm chuông, 5 phút... 10 phút... 15 phút... Sau nửa tiếng bấm chuông, anh mới nhận ra, đúng là... "KHÔNG CÓ AI Ở NHÀ THẬT". potay..^^!
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2008, 18:15   #26
Búa Đá Đôi
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 77
VZD: 1.286
Điểm: 2/2 bài viết
Default

mình có thắc mắc về bài chèn này
Code:
 procedure chen(var p : contro);
var q : contro;
 begin
   new(q);
    q^.hoten:='luong bich huu';
    q^.tongtien:=300000;
    q^.cvu:='ktt';
    q^.next:=first;
    first:=q;
 end;
 
begin
chen(p);
p:=first;
While p <> Nil do
 begin
   Writeln('+',p^.hoten ,'chuc vu ',p^.cvu,' co phu cap ',p^.pcap,'luong ', p^.tongtien);
   p:=p^.next;
 end;
bài này muốn chèn vào đầu danh sách
bạn có thể giúp mình bít miinhf viết sai chỗ nào
cám ơn
__________________
Một buổi tối đẹp trời. Cô gái gọi điện cho cậu trai đang tán tỉnh mình : "Anh ơi... Nhà em đi hết cả rùi... Anh đến ngay nhé... Không có ai ở nhà đâu... !". Cậu trai hí hửng vội vàng phóng xe đến nhà cô bạn, bấm chuông, 5 phút... 10 phút... 15 phút... Sau nửa tiếng bấm chuông, anh mới nhận ra, đúng là... "KHÔNG CÓ AI Ở NHÀ THẬT". potay..^^!
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2008, 18:24   #27
Rìu Sắt Đôi
 
thienthan's Avatar
 
Tham gia: Nov 2007
Bài: 280
VZD: 4.092
Điểm: 74/60 bài viết
Send a message via Yahoo to thienthan
Default

Code:
 procedure chen(var p : contro);
var q : contro;
 begin
   new(q);
    q^.hoten:='luong bich huu';
    q^.tongtien:=300000;
    q^.cvu:='ktt';
    q^.next:=first;
    first:=Nil;
    new(first);
    first^:=@q;{Nếu viết như cũ thì First trỏ tới địa chỉ q mà khi thoát
chương trình còn thì q được giải phóng do nó không phải biến toàn chương trình}
 end;
 
begin
chen(p);
p:=first;
While p <> Nil do
 begin
   Writeln('+',p^.hoten ,'chuc vu ',p^.cvu,' co phu cap ',p^.pcap,'luong ', p^.tongtien);
   p:=p^.next;
 end;
Học giải thuật trước nhưng mình học nó bằng C++ hoặc VB chứ mình có thù với Pascal.

thay đổi nội dung bởi: thienthan, 13-06-2008 lúc 14:25.
thienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-06-2008, 00:44   #28
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 341
VZD: 4.438
Điểm: 70/47 bài viết
Default

Bạn khá mạnh về pascal thế mà lại có thù là sao. Học Pascal cũng có cái tốt, vì trên mạng có khá nhiều thuật toán hay nhưng vd minh hoạ toàn bằng Pascal, cả một số sách thuật toán cũng vậy nữa.
__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Tắt
Pingbacks are Tắt
Refbacks are Tắt
Chuyển đến


Múi giờ GMT +7. Hiện tại là 08:03.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Từ điển được cung cấp bởi VDict.com - Hosting được tài trợ bởi Rao vặt 123