# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  [Help] Bài pascal đơn giản.

## daianevent

Giải giúp mình bài này với:
Nhập 4 số a,b,c,d.
Hãy đưa ra màn hình giá trị của 4 số trên trên cùng một dòng theo thứ tự không giảm.
(Các bạn chú ý thứ tự không giảm khác thứ tự giảm dần; thứ tự không giảm sắp xếp cả 2 hay nhiều số bằng nhau. Ví dụ: Đưa ra 4 số 6,7,9,6 thì kết quả hiện ra màn hình là: 9 7 6 6.)
Giúp mình nhé, mình thanks trước.[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG][IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG][IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG][IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## baobinhtb

Bài này chỉ cần sắp xếp thôi mà, mình nghĩ những bài này đều là bài cơ bản, các bạn có thể làm nó dễ dàng, chỉ cần học kĩ trên lớp là được.
Còn code của bạn đây: (mình làm với bài tổng quát nhập n số và sắp xếp, bạn có thể sửa lại tùy theo yêu cầu)



> Var: i,n,j,tg,vt:longint;
> mang : array[1..1000] of longint;
> begin
> write('Nhap N:'); readln(n);
> for i:=1 to n do read(mang_);
> for i:=1 to n-1 do
> begin
> vt:=i;
> for j:=i+1 to n do if mang[vt]<mang[j] then vt:=j;
> ...

----------


## wekhanh

*Phảm hồi*

Bài làm của Ginta_ITFam có lẽ là làm đúng nhưng mình mới học pascal được mấy buổi nên không hiểu gì cả. Mình mới được học If...then...else thôi, chưa được học for...to...do đâu!!!:down:#-o

----------


## hardest

```
Uses Crt;
Var max, a, b, c, d : Integer;
BEGIN
   Clrscr;
   Write('Nhap 4 so bat ki: ');
   Readln(a, b, c, d);
   max := a;
   If b > max Then max := b;
   If c > max Then max := c Else max := d;
   Write('Ket qua: ',max);
   Readln;
END.
```

----------


## thewitcher13

> ```
> Uses Crt;
> Var max, a, b, c, d : Integer;
> BEGIN
>    Clrscr;
>    Write('Nhap 4 so bat ki: ');
>    Readln(a, b, c, d);
>    max := a;
>    If b > max Then max := b;
> ...


Đâu phải là in ra max đâu anh :-?




> Bài làm của Ginta_ITFam có lẽ là làm đúng nhưng mình mới học pascal được mấy buổi nên không hiểu gì cả. Mình mới được học If...then...else thôi, chưa được học for...to...do đâu!!!:down:#-o


Chưa đc học vòng lặp mà thầy giáo lại cho bài này [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG].
Bạn sắp xếp dãy a,b ko giảm rồi sau đó là a,b,c ko giảm. rồi a,b,c,d ko giảm. Thế rồi xuất ra. Theo mình là vậy.



```
uses    crt;
var     a,b,c,d,tg:integer;
begin
        clrscr;
        gotoxy(25,1);
        writeln('Welcome to diendantinhoc.vn.');
        write('Nhap :');
        readln(a,b,c,d);
        clrscr;
        if a<b then
        begin
                tg:=a;
                a:=b;
                b:=tg;
        end;
        if c>=a then
        begin
                tg:=a;
                a:=c;
                c:=tg;
        end;
        if c>=b then
        begin
                tg:=b;
                b:=c;
                c:=tg;
        end;
        if d>=a then
        begin
                tg:=a;
                a:=d;
                d:=tg;
        end;
        if d>=b then
        begin
                tg:=b;
                b:=d;
                d:=tg;
        end;
        if d>=c then
        begin
                tg:=c;
                c:=d;
                d:=tg;
        end;
        writeln(a,' ',b,' ',c,' ',d);
        readln;
        clrscr;
        gotoxy(20,5);
        writeln('Dung quen nhan "Thank" de thay loi cam on. Ban nhe!');
        gotoxy(20,10);
        write('Chuc ban hoc tot!');
        gotoxy(20,11);
        write('Than!');
        readln;
end.
```

*Chúc bạn học tốt! 
Thân!*

----------


## annkhsouth

Anh Smod kô đọc kĩ bài mem viết nhá [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) 
Cách của tungthao đúng đấy, nếu chưa học tới for thì chỉ có thể làm như tungthao thôi.

----------


## hungnt021849

Hơi bị trâu bò nhưng nếu ko thì chẳng còn cách nào khác :-s

----------


## conggameviet

> Đâu phải là in ra max đâu anh :-?
> 
> 
> 
> Chưa đc học vòng lặp mà thầy giáo lại cho bài này [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG].
> Bạn sắp xếp dãy a,b ko giảm rồi sau đó là a,b,c ko giảm. rồi a,b,c,d ko giảm. Thế rồi xuất ra. Theo mình là vậy.
> 
> 
> 
> ...


ký hiệu max (x, y) là số lớn nhất trong 2 số x, y. min (x, y) là số nhỏ nhất trog 2 số ngc lại

So sánh a với b 
So sánh c với d 

Số lớn nhất = max (max (a,b), max (c,d)); 
số nhỏ nhất = min (min (a, b), min (c, d));
típ tục so sánh 2 số còn lại. [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## tvintec

> ký hiệu max (x, y) là số lớn nhất trong 2 số x, y. min (x, y) là số nhỏ nhất trog 2 số ngc lại
> 
> So sánh a với b 
> So sánh c với d 
> 
> Số lớn nhất = max (max (a,b), max (c,d)); 
> số nhỏ nhất = min (min (a, b), min (c, d));
> típ tục so sánh 2 số còn lại. [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]


Có thể cách này sẽ hay hơn vì thực hiện ít hơn cách của mình 1 lệnh if :-s

----------


## mrtrong181

Dễ quá mà bạn ! Bạn tạo mảng gồm 4 số ! Sau đó so sánh các phần tử trong mảng và tao một biến trung gian để hoán đổi các thành phần trong mảng đó ! Nếu mình ko nhầm thì trong sách tin học 11 có bài này !

----------


## teenhotvip

> Dễ quá mà bạn ! Bạn tạo mảng gồm 4 số ! Sau đó so sánh các phần tử trong mảng và tao một biến trung gian để hoán đổi các thành phần trong mảng đó ! Nếu mình ko nhầm thì trong sách tin học 11 có bài này !


Yêu cầu của chủ topic là ko đc dùng mảng mà dùng và chỉ dùng cấu trúc rẽ nhánh. 
Đọc kỹ trước khi post bài bạn nhé!
*
Chúc các bạn học tốt!
Thân!*

----------


## khuvucmuabannhadat

> Yêu cầu của chủ topic là ko đc dùng mảng mà dùng và chỉ dùng cấu trúc rẽ nhánh. 
> Đọc kỹ trước khi post bài bạn nhé!
> 
> *Chúc các bạn học tốt!*
> *Thân!*


vậy thì bạn dùng đến 4 var ! cái này chỉ có 4 biến thì việc dùng mảng hay dùng biến để xử lí vẫn như nhau mà !

----------


## Xitrum76

> vậy thì bạn dùng đến 4 var ! cái này chỉ có 4 biến thì việc dùng mảng hay dùng biến để xử lí vẫn như nhau mà !


Để mình nói lại nhé: Chủ topic là người mới học. Và mới học nên chỉ đc học lệnh rẽ nhánh, chưa học về mảng.
P.s: Code mình đã post ở trên. Bạn tham khảo nhé! Nếu có sai sót thì báo lại để mình sửa. Bằng ko bạn có thể trực tiếp post code của bạn lên. [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

*Chúc bạn học tốt!
Thân!
*

----------


## nguyenhuongit

Nếu vậy thì cách của 2 bạn ở trên chính xác rùi ! Tuy hơi dài nhưng dễ hình dung ! Nếu dc thì bạn tạo ra function max ( a, b ) rồi dùng so sánh từng cặp nhưng cách này hơi cao tí , tóm lại thì khi khai triển nó vẫn như bạn tungthao mà thoy !

----------


## dieulypretty

> Nếu vậy thì cách của 2 bạn ở trên chính xác rùi ! Tuy hơi dài nhưng dễ hình dung ! Nếu dc thì bạn tạo ra function max ( a, b ) rồi dùng so sánh từng cặp nhưng cách này hơi cao tí , tóm lại thì khi khai triển nó vẫn như bạn tungthao mà thoy !


Nhiệm vụ là phải đổi chỗ các phần tử để khi in ra theo đúng thứ tự yêu cầu chứ ko phải tìm max. Vì vậy bạn viết 1 func chẳng có tác dụng gì cả.
*
Thân!*

----------


## Hongthanhauto

> Nhiệm vụ là phải đổi chỗ các phần tử để khi in ra theo đúng thứ tự yêu cầu chứ ko phải tìm max. Vì vậy bạn viết 1 func chẳng có tác dụng gì cả.
> 
> *Thân!*


Function max cũng có thể đổi chỗ ! Cái bạn dùng với câu lệnh if ... then ... đó lặp đi lặp lại giống nhau chỉ khác nhau các cặp số bạn so sánh nên theo mình thì vẫn xài function dc ![IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## saudom

> Function max cũng có thể đổi chỗ ! Cái bạn dùng với câu lệnh if ... then ... đó lặp đi lặp lại giống nhau chỉ khác nhau các cặp số bạn so sánh nên theo mình thì vẫn xài function dc ![IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]


Vậy thì phải viết proce chứ :-??. Viết func làm gì khi mà ko dùng đến.

----------


## thapchidao

thaotung làm đúng đấy, ở trường thầy mình cũng gợi ý làm kiểu này nhưng về nhà làm thì lại quên cách [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## ananhhoang

> Function max cũng có thể đổi chỗ ! Cái bạn dùng với câu lệnh if ... then ... đó lặp đi lặp lại giống nhau chỉ khác nhau các cặp số bạn so sánh nên theo mình thì vẫn xài function dc ![IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]





> Vậy thì phải viết proce chứ . Viết func làm gì khi mà ko dùng đến.


function hay procedure đều làm đc tuốt. [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## dqua99

[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Các bạn bàn luân sôi nổi quá ha! Chủ topic mới học tới vòng If thôi mà.

----------


## xamhinhnghethuat

Các mem bàn luận ghê quá, quên là chủ pic mới học thôi à, chưa học mảng thì làm sao đã học tới chương trình con mà lôi pro với fun vào đây. Dù sao cũng là ý kiến đóng góp, bạn chủ pic hiểu được nhiêu thì hiểu nhé, hoặc không vào diễn đàn mọi người cùng học tập sẽ hay hơn [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Chúc bạn học tốt.

----------


## TruongTamPhong

Thì em cũng bảo thế. Nhưng mà ... mà thôi, ko nói :|

----------


## daianevent

Mình cung cấp thêm cho bạn sontrang2t




> tg:=a;
> a:=b;
> b:=tg;


Đoạn hoán vị trên có thể sử dụng cách sau:



> a:=a+b;
> a:=a-b;
> b:=a-b;


Từ cách này, bạn có thể vận dụng nhiều bài toán khác.
Chúc sontrang2t học tốt!

----------

