Bàí1 Nhập dãy số thực a. Nhập số x. Thực hiện sắp xếp a theo chiều giảm. Kiểm tra x có thuộc dãy a không? Nếu không có hãy bổ xung x vào dãy sao cho không thay đổi tính sắp xếp của dãy. Bài 2Nhập vào dãy A; sau đó sắp xếp theo nguyên tắc: chia đôi dãy rồi đổi chỗ A[1] đổi chỗ cho A[n/2], A[n/2+1] đổi chỗ với A[n], a[2] với A[n/2=1], A[n/2+2] với A[n-1].....nếu n chẵn, Khi n lẻ thì phần tử chính giữa không bị đổi chỗ! Các bạn giải dùm mình nhé!!!!!! Thanks
Vào đây hỏi mấy cái này làm gì? Xác định X thuộc dãy ko Mã: Flag:=false For i:=1 to n do if a[i]=x then flag=true {Xử lí sau khi ko có , thêm cái đằng sau} a[n+1] = x; Sắp xếp giảm dần : Kiểu đơn giản nè : Selection Sort Mã: For i:=1 to n do For j:=i+1 to n do Begin if a[i] > a[j] Then {Thực hiện đổi chỗ a[j] và a[i] Kiểu đơn giản dùng biếtn tạm này) Begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; End; End; Câu 2 ko hiểu
Trời tôi muốn hỏi là phần nếu x ko thuộc thì bổ xung vào dãy mà không làm mất tính giảm của dãy chứ. Dù sao cũng thanks. Có ai làm được không chỉ giáo mình với. Bài 2 đã làm được rồi.
Mã: s=0 For i:=1 to n do If a[i]= x then s:=s+1; if s=0 then Begin For i:=1 to n do Begin if a[i]< x then Begin tg=a[i]; a[i]:=x; x:=tg; end; end; a[n+1]:=x; end;
Người ta đưa rồi đó, áp dụng thuật toán trên mà đưa vào thôi. Ko lẽ bạn muốn người ta đưa nguyên 1 bài giải sao? Nếu ý của bạn là dãy đã dc sắp xếp mà muốn thêm x vào ngay tại điểm mà nó phải đứng thì dùng thuật toán sắp xếp nào cũng dc, việc bạn phải làm là tăng dãy lên 1, đạp x vào dãy rồi sắp xếp lại.
Thông thường thì người ta chỉ đưa ra hướng giải rồi bạn tự viết code, viết ko những phải đúng mà còn phải gọn, dễ nhìn. Mà bạn làm kiểu gì? Viết lưu đồ cho thầy dò hả Còn vụ làm kiểu như thế ko dc là do ý thầy là ý trời, ko muốn dùng thuật toán thì viết đại vài dòng, đại ý là tăng mảng lên 1, dời vị trí của từng pt lên 1 rồi kiểm tra x với giá trị của từng pt, nếu x < pt i thì đặt nó vào i + 1. Như thế thì mới đúng í thầy >"<
Thì tui viết rùi đó Bữa đó cũng cho số vô dãy rồi sx lại -> ăn điểm kém, may mà có phần sx nó gỡ lại cho 1 nửa ko thì ::( --------Thân nặng :p-----------
cái này trông quen quen Ở đây có vẻ ít người quan tâm đến việc programming quá.... box vắng hoe. - Thân ... nặng :p
Ai đó giải hộ em bài này của Pascal nha Số tự nhiên n gọi là Amstrong nếu nó bằng tổng lập phương các chữ số của mình . Ví dụ: 153 = 1^3 + 5^3 + 3 ^3. Viết chương trình tìm tất cả các số Amstrong có 3 chữ số (sử dũng vòng lặp Repeat ... Until)
Bát can anh ko nhớ rõ kiểu viết trong pascal >"< anh viết trong C rồi anh giải thích cho em hiểu nha. từng dòng: - int num, tram, chuc, donvi, count = 0; <--- khai báo các biến num, tram, chuc, donvi, count có kiểu Integer. Num em có thể hiểu là number, count là biến đếm để coi có bao nhiêu số am xì trong. Tram, chuc, donvi là các biến số hàng trăm, hàng chục và hàng đơn vị. - for (num = 100; num < 1000; num++) <--- đây là lệnh For trong C nó tương đương với For num := 100 to 999 do trong Pascal - donvi = num % 10; - chuc = (num / 10) % 10; - tram = num / 100; + theo ví dụ của em thì donvi = 3, chục = 5 và tram = 1. Toán tử % tương đương với toán tử modtrong Pascal - if (donvi * donvi * donvi + chuc * chuc * chuc + tram * tram * tram == num) <--- đây là theo mẫu của em đưa 1*1*1 + 5*5*5 + 3*3*3. Mã này tương đương với If (dv*dv*dv + chuc*chuc*chuc + tram*tram*tram = Num) then .... ko bít ghi đúng cú pháp của Pascal ko nữa >"< em đang học thì tự viết dòng điều kiện If này nha - printf("\nSo %d thoa man", num); - count++; + Dòng printf có nghĩa là in ra màn hình những số nào là số Amstrong trong khi vòng lặp chạy, tương đương với lệnh writeln. %d biểu diễn cho dạng số là decimal dc in ra. Dòng count++ là biến đếm tăng lên 1 nếu số đó là số Amstrong, tương đương với count = count + 1 trong Pascal - printf("\nTong cong co %d so thoa man yeu cau", count); <--- dòng này chắc em hiểu ^__^ .... { và } giống như begin và end ::)
Bài số Amstrong hả. Làm bằng Pascal hả. Đây nè: Program Amstrong; Uses crt; Var a,b,c: integer; BEGIN clrscr; for a:=1 to 9 do for b:=0 to 9 do for c:= 0 to 9 do if 100*a+10*b+c = sqr(a)*a+Sqr(b)*b+sqr(c)*c then write (abc ); readln; END. Còn nếu muốn viết theo chương trình con thì cái Function cũng tương tự thế này rồi gọi vào trong chương trình chính Ok?
he her cái đó chí là kiểm tra số amstrong bậc 3 thôi, còn bậc khác thì làm sao kiểm tra được, phải có cái tổng quát chứ.!!!