PDA

View Full Version : giai quyet zum em,Ngay mai em phai nop do an rui



Lê A Rốp
12-11-2009, 18:48
Làm ơn giúp em giải giùm bài toán nay đi.huhuu

Viết chương trình hoán đổi giá trị 2 số a, b được nhập từ bàn phím.
a. Viết chương trình con hoán đổi giá trị 2 số a, b cho phép sử dụng biến trung gian.
b. Viết chương trình con hoán đổi giá trị 2 số a, b không sử dụng biến trung gian.


Thankyou!!!

sieunhien
12-11-2009, 18:56
Giỡn à. Tui cũng giỡn theo cho vui.
Đây là thuật toán, tùy ngôn ngữ lập trình mà áp dụng:
:)


a.
int a,b,temp;
{
temp=a;
a=b;
b=temp;
};

b.
int a,b,temp;
{
a=a^b;
b=a^b;
a=a^b;
}

mrbeanpig
12-11-2009, 20:16
Giỡn à. Tui cũng giỡn theo cho vui.
Đây là thuật toán, tùy ngôn ngữ lập trình mà áp dụng:
:)


a.
int a,b,temp;
{
temp=a;
a=b;
b=temp;
};

b.
int a,b,temp;
{
a=a^b;
b=a^b;
a=a^b;
}

câu a thì ok,nhưng câu b thì có vấn đề ak,cho mình hỏi dấu ^ là j dzi,với lại trong wa trình làm có đụng đến biến temp đâu sao bác cũng khai báo dzi

lehang_gb1
12-11-2009, 21:04
Bạn học Pascal or C vậy? Đây là cách viết chương trình bằng Pascal bạn ah
Cách 1. Sử dụng chương trình con là thủ tục hoán đổi giá trị của a và b bằng cách sử dụng biến trung gian tg


Var a,b:integer;
procedure hoandoi(Var a,b:integer);
var tg:integer;
Begin
tg:=a;
a:=b;
b:=tg;

write('Gia tri moi cua a va b:',a:3,b:3);
end;
Begin
write('Nhap vao a va b:'); Readln(a,b);
hoandoi(a,b);
Readln
End.


Cách 2. Tráo đổi không dùng biến trung gian


Var a,b:integer;
procedure hoandoi(Var a,b:integer);
var tg:integer;
Begin
a:=a+b;
b:=a-b;
a:=a-b;
write('Gia tri moi cua a va b:',a:3,b:3);
end;
Begin
write('Nhap vao a va b:'); Readln(a,b);
hoandoi(a,b);
Readln
End.

whatisor
12-11-2009, 21:18
thủ tục không dùng biến trung gian của bạn rất hay, nhưng sẽ bị sai khi xảy ra tràn số. Ví dụ a,b đều là interger,max là 255, a=200,b=100, bạn mà làm thế này chắc chắn kq sai

lehang_gb1
13-11-2009, 21:34
uh tráo đổi không dùng biến trung gian cũng có hạn chế nhỉ

professional27
14-11-2009, 22:00
hjx ... nhìn các bác mà em ngưỡng mộ ghê :D