Thứ Tư, 7 tháng 11, 2012

Tổng m số tận cùng của n trong pascal


Nhập vào 1 số tự nhiên n* và nhập vào m, sau đó tính tổng m các số tận cùng của n.

vd: n = 365 m =2 tổng = 5+6=11.

Cách 1:  

uses crt;
var n: longint;
    m,tong,i: integer;
BEGIN
   clrscr;
   write('Nhap n: '); readln(n);
   write('Nhap m: '); readln(m);
   for i:=1 to m do
     begin
        tong:=tong+(n mod 10);
        n:=n div 10;
     end;
   write('Tong ',m,' chu so cuoi cua so vua nhap = ',tong);
   readln;
END.

Cách 2: Sử dụng xâu: Xâu giúp lưu trữ thoải mái hơn kiểu số nguyên, nên ta có thể khái báo N có ở string thay vì Integer. Như vậy, ở những trường hợp lớn (vd N bao gồm 100 chữ số chẳng hạn) thuật toán vẫn có thể hoạt động bình thường.

uses crt;
var n: string;
    m,i,a,tong: integer;
BEGIN
   clrscr;
   write('Nhap so n: '); readln(n);
   write('Nhap m: '); readln(m);
   for i:= length(n) downto length(n)-m+1 do
     begin
         val(n[i],a);
         tong:=tong+a;
     end;
   write(tong);
   readln;
END.

Bài tập dãy Fibonaci và số nguyên tố


Dãy FIBONACI là dãy được xác định như sau: F(0) = 0; F(1) = 1 và F(n) = F(n-1) + F(n-2) với n = 2, 3...

Hãy viết chương trình máy tính để nhập từ bàn phím số nguyên dương M (2<M<2000000000), rồi xuất ra màn hình số FIBONACI lớn nhất là nguyên tố và nhỏ hơn M.

Ví dụ: Với M=10 thì các số FIBONACI nhỏ hơn M là: 0, 1, 1, 2, 3, 5, 8. Số 5 là số nguyên tố lớn nhất trong các số FIBONACI nhỏ hơn M. Vậy cần đưa ra màn hình dòng thông báo kết quả: Số cần tìm là: 5.

uses crt;
var j,i,m,a,b,t:longint;

{----------------------}

Function kt(n:longint):boolean;
 var i,d:integer;
  begin
  kt:=false;
  d:=0;
   For i:=1 to n do
    if n mod i=0 then inc(d);
  if d=2 then kt:=true;
 end;

{----------------------}

begin
 clrscr;
 Write('Nhap m= ');
 readln(m);
 a:=0;
 b:=1;
  Repeat
   a:=a+b;
   b:=a+b;
  Until (a>=m) and (b>=m);

   if a<b then begin t:=a;a:=b;b:=t;end;

  Repeat
   a:=a-b;
   b:=b-a;
  Until ( (kt(a)) and (a<m))  or ( (kt(b)) and (b<m) );
If a>b then writeln(a);
 if b>a then writeln(b);

{----------------------}

  readln
 end.

Bài tập Tin học 8

Đề bài: Nhập ngày tháng năm. Hãy cho biết ngày tháng năm sau đó N ngày.


var d,m,y,n:integer;
Function      Songay(thang,nam: Integer):Integer;
Var             sn:Integer;
Begin
       Case thang of
                1,3,5,7,8,10,12 : sn:= 31;
                4,9,11             : sn:= 30;
                2:   If  (nam MOD 4 = 0) Then
                           sn:= 29
                      Else
                            sn:= 28;
        End;
        Songay:= sn;
End;
BEGIN
     Writeln('Nhap ngay thang nam');Readln(d,m,y);
     Writeln('Nhap N');Readln(N);
     d:=d+N;
     While d > Songay(m,y) Do
     Begin
         d:= d - Songay(m,y);
         m:= m+1;
         IF m > 12 Then
         Begin
              m:= 1;
              y:= y + 1;
         End;
    End;
Writeln('Ket qua ',d,'/',m,'/',y);
Readln;
END. 

Bài tập Tin 8

Bài 1:nhập vào 1 dãy số thực, tìm xem có bao nhiêu phần tử là số dương, số âm và số không

uses crt;
var i,sduong,sam,skhong,n:integer;
a:array [1..100] of real;
begin
clrscr;
write('nhap so so hang ');
readln(n);
for i:=1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
for i:=1 to n do
begin
if a[i]<0 then sam:=sam+1;
if a[i]>0 then sduong:=sduong+1;
if a[i]=0 then skhong:=skhong+1;
end;
write('so so am trong day so la ',sam,' va so so duong trong day so la ',sduong,' va so so 0 trong day so la ',skhong);
readln;
end.

Bài 2:Nhập vào 1 dãy số nguyên và nhập 1 số x, tìm xem có bao nhiu phần tử giống x? Ở vị trí nào? Kết quả in ra màn hình


uses crt;
var i,n,x:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap x : ');
readln(x);
write('nhap so so hang: ');
readln(n);
for i:=1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
write('vi tri cac so giong phan tu x la : ');
for i:=1 to n do
begin
if a[i] = x then write (i,' ');
end;
readln;
end.

Bài 3:Nhập vào một dãy số nguyên, tìm phần tử nhỏ nhất rồi hoán đổi vị trí của nó với phần tử đầu tiên, in ra màn hình


uses crt;
var i,n,min,vtri:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:=1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
writeln('ta co mang luc dau la: ');
for i:=1 to n do
write(a[i],' ');
min:=a[1];
for i:=2 to n do
begin
if min> a[i] then
begin
min:=a[i];
vtri:=i;
end;
end;
writeln;
a[vtri]:=a[1];
a[1]:=min;
writeln('ta co mang sau do la : ');
for i:=1 to n do
write(a[i],' ');
readln;
end.

Bài 4:Nhập vào 1 dãy số nguyên, in ra các phần tử là số chính phương

uses crt;
var i,n,c:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:=1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
for i:=1 to n do
begin
for c:=1 to a[i] do
if c*c=a[i] then writeln(a[i],' la so chinh phuong');
end;
readln;
end.

Bài 5: Nhập vào 1 dãy số nguyên, đếm có bao nhiêu phần tử là số ngtố?

uses crt;
var i,n,dem,c,snt:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:= 1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
for i:=1 to n do
begin
dem:=0;
for c:=1 to a[i] do
if a[i] mod c =0 then dem:=dem+1;
if dem=2 then snt:=snt+1;
end;
write('so so nguyen to la ',snt);
readln;
end.

Bài 6: Nhập vào 1 danh sách hs của 1 tổ, rồi in danh sách ra màn hình

uses crt;
var i,n:integer;
a:array[1..100] of string;
begin
clrscr;
write('nhap so hoc sinh: ');
readln(n);
for i:= 1 to n do
begin
write('nhap ten hoc sinh thu ',i,' : ');
readln(a[i]);
end;
writeln('ta co danh sach hs: ');
for i:=1 to n do
begin
writeln(a[i]);
end;
readln;
end.

Bài 8: Nhập vào 1 dãy số nguyên, in ra màn hình phần ử có giá trị tuyệt đối lớn nhất (cho biết hàm abs là hàm lấy giá trị tuyệt đối)

uses crt;
var i,n,max:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:= 1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
for i:=1 to n do
begin
if abs(a[i])>abs(max) then max:=a[i];
end;
write('so co gia tri tuyet doi lon nhat la: ',max);
readln;
end.

Bai 8 nhập vào 1 dãy số nguyên, in ra màn hình những phần tử là SNT

uses crt;
var i,n,dem,c,snt:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:= 1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
write('ta co cac so nguyen to la : ');
for i:=1 to n do
begin
dem:=0;
for c:=1 to a[i] do
if a[i] mod c =0 then dem:=dem+1;
if dem=2 then write(a[i],' ');
end;
readln;
end.

Bai 9: Nhập vào 1 dãy số nguyên, in ra màn hình phần tử là số fibonaci
uses crt;
var i,n,b,c,linhcanh:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:= 1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
write('cac phan tu la so fibo la: ');
for i:= 1 to n do
begin
b:=0;
c:=1;
linhcanh:=0;
while (b begin
b:=b+c;
if a[i]=b then linhcanh:=1;
c:=c+b;
if a[i]=c then linhcanh:=1;
end;
if linhcanh=1 then write(a[i],' ');
end;
readln;
end.

bai 10: Nhập vào 1 dãy số nguyên, sắp xếp lại các ptử từ nhỏ đến lớn rồi in ra màn hình

uses crt;
var i,n,c,trungian:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:= 1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;
writeln('ta co mang truoc khi sap xep la : ');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln('ta co mang sau khi sap xep la : ');

for i:=1 to n do
begin
for c:=i to n do
begin
if a[i]>a[c] then
begin
trungian:=a[i];
a[i]:=a[c];
a[c]:=trungian;
end
end;
end;
for i:=1 to n do
write(a[i],' ');
readln;
end.


Lưu ý các bài luôn luôn có phần này:
uses crt;
var i,n:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so so hang: ');
readln(n);
for i:= 1 to n do
begin
write('nhap so thu ',i,' : ');
readln(a[i]);
end;