K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

14 tháng 6 2021

program xau_so_hoc;
uses crt;
procedure xu_li;
var s, x, xau : string; i, tinh, j, f1, f2 : integer;
begin
write('nhap xau: '); readln(xau);
 i:=1;
 repeat
        x:=''; s:='';
        while (xau[i] in ['0'..'9']) and (i<=length(xau)) do
        begin
        x:=x+xau[i];
           inc(i); {tim dau '+' hoac tru '-'/tim so truoc dau do}
        end;
                for j:=i+1 to length(xau) do
                if xau[j] in ['0'..'9'] then s:=s+xau[j] else
                                                         break;
       val(x,f1); val(s,f2); {chuyen doi xau thanh so};
        if xau[i]='-' then
                        tinh:=tinh +(f1-f2) else
                        if xau[i] = '+' then
                                                tinh:=tinh + (f1+f2);
       {tinh toan voi xau va dau da tim duoc}
       i:=j;
 until i>=length(xau);
        write('xau da tinh toan: ', tinh);
end;
{chuong trinh chinh}
        begin
                clrscr;
                xu_li;
        end.

 

14 tháng 6 2021

có một số chỗ mình chú thích hơi sai

đại khái ý tưởng của mình là như này nè:

đầu tiên mình tìm dấu - hoặc + và tìm số đầu tiên trước dấu cộng hoặc trừ (vòng while đầu tiên), rồi tìm số sau dấu đó (vòng for sau đó).

rồi chuyển thành xâu, nếu - thì cộng biến với hiệu 2 số, nếu + thì mình cộng với hiệu hai số 

lưu ý: vòng while chỉ dùng cho lần lập đầu tiên thôi, để tránh sai số những vòng repeat tiếp theo thì dùng vòng for để tìm số tiếp theo dấu vừa tìm được (số sau dấu vừa tìm được đã tìm ở vòng for lần lặp trước);

ví dụ để dễ mường tượng nè

1+1 

i sẽ bằng 1 để tránh trường s[0] sẽ bị exit code

vòng repeat 1:

tìm được vị trí dấu + và số trước dấu + (vòng while);

tìm được số 1 (vòng for);

vòng for: sẽ được chạy từ giá trị của biến i+1 (do i đang ở vị trí của dấu vừa tìm được, không phải số nên nếu chạy từ i lúc cộng dồn sẽ là +1 chứ không phải là 1);

+ nếu như s[j] mà không phải số thì mình dừng vòng for lại (break)

đổi 2 số '1' thành kiểu số

biến 'tính' =0 

tính:=tính + (1+1) ( vì đây là dấu +); => tính=2;

biến i sẽ bằng giá trị cuối của biến j nhận được 

tức là bằng 3

mà 3 = độ dài của xâu nên vòng repeat dừng lại

vòng lặp của repeat chỉ có  1 vòng

Số điện thoại di động của một hãng Viễn Thông được đánh số theo quy tắc như sau: 091N XXX XXX( trong đó N là chữ số tự nhiên từ 2 đến 5, X là các chữ số tự nhiên từ 0 đến 9). Ta định nghĩa các loại số điện thoại như sau: + Số điện thoại loại I: Là những số điện thoại mà tổng sáu chữ số cuối cùng của nó là một số chia hết cho 10 Ví dụ số 0913.104.401 ( vì 1+0+4+4+0+1=10, chia hết cho...
Đọc tiếp

Số điện thoại di động của một hãng Viễn Thông được đánh số theo quy tắc như sau: 091N XXX XXX( trong đó N là chữ số tự nhiên từ 2 đến 5, X là các chữ số tự nhiên từ 0 đến 9). Ta định nghĩa các loại số điện thoại như sau:

+ Số điện thoại loại I: Là những số điện thoại mà tổng sáu chữ số cuối cùng của nó là một số chia hết cho 10

Ví dụ số 0913.104.401 ( vì 1+0+4+4+0+1=10, chia hết cho 10)

+Số điện thoại loại II là những số điện thoại mà sáu chữ số cuối cùng của nó đọc xuôi từ trái sang phải hay từ phải sang trái ta đều được một số có sáu chữ số giống nhau. Ví dụ 0913.556.855

a, Có bao nhiêu số điện thoại loại I ?

b, Có bao nhiêu số điện thoại loại II ?

Đưa kết quả ra màn hình

( Viết chương trình pascal)

3
27 tháng 2 2019

bạn giải thích rõ hơn về sđt loại II đi+1 số VD về nó nữa

mik ra dc loại 1 là 400000

27 tháng 2 2019

cho mik thêm 1 vài vd về sđt loại II đi

#include <bits/stdc++.h>

using namespace std;

int main()

{

string st;

int d,i,dem=0;

getline(cin,st);

d=st.length();

for (int i=0; i<d; i++)

if (st[i]=' ') dem++;

cout<<dem+1;

return 0;

}

6 tháng 3 2021

ai làm giúp mình

 

22 tháng 11 2019

Luư ý đây không phải là dạng viết chương trình nên sẽ không chạy được trên pascal nhé!

1)

Var i, n: Integer;

For i:=3;

If n mod i = 0 then write('n chia het cho 3');

2)

Var m, n: integer;

i: real;

For n:= 7;

If m mod 7 = 0 then write('m chia het cho 7') else write('m khong chia het cho 7');

If 0 < i <= 100 then write('i la so duong khong vuot qua 100');

22 tháng 11 2019

Luư ý đây không phải là dạng viết chương trình nên sẽ không chạy được trên pascal nhé!

1)

Var i, n: Integer;

For i:=3;

If n mod i = 0 then write('n chia het cho 3');

2)

Var m, n: integer;

i: array[0..100] of real;

For n:= 7;

If m mod 7 = 0 then write('m chia het cho 7') else write('m khong chia het cho 7');

If i <> 0 then write ('i la so duong khong vuot qua 100');

sai rồi kìa bạn

ngôn ngữ C++ mà sao bạn lại viết bằng pascal

11 tháng 10 2020

Bài 1:

uses crt;

var a:integer;

begin

clrscr;

write('Nhap a='); readln(a);

writeln('Chu so hang don vi cua ',a,' la: ',a mod 10);

readln;

end.

Bài 2:

uses crt;
var s:ansistring;
i,d,dem:integer;
begin
clrscr;
write('Nhap xau S:'); readln(s);
d:=length(s);
dem:=0;
for i:=1 to d do
if s[i] in ['A'..'Z'] then inc(dem);
writeln('So luong chu so trong chuoi ky tu ',s,' la: ',dem);
readln;
end.

Phần I. Trắc nghiệm. (5 điểm) 1. Nhặt thóc ra khỏi gạo cho đến khi trong gạo không còn lẫn thóc là hoạt động: a. Lặp 10 lần c. Lặp vô số lần (lặp vô hạn) b. Lặp với số lần chưa biết trước d. Lặp với số lần biết trước 2. Trong câu lệnh lặp For i:=1 to 10 do begin.... end bao nhiêu vòng lặp được thực hiện? a. Không lần nào b. 10 lần c. 1 lần d. 2 lần 3. Điều kiện kết thúc vòng lặp For... do của...
Đọc tiếp

Phần I. Trắc nghiệm. (5 điểm)
1. Nhặt thóc ra khỏi gạo cho đến khi trong gạo không còn lẫn thóc là hoạt động:
a. Lặp 10 lần c. Lặp vô số lần (lặp vô hạn)
b. Lặp với số lần chưa biết trước d. Lặp với số lần biết trước
2. Trong câu lệnh lặp For i:=1 to 10 do begin.... end bao nhiêu vòng lặp được thực hiện?
a. Không lần nào b. 10 lần c. 1 lần d. 2 lần
3. Điều kiện kết thúc vòng lặp For... do của Pascal là:
a. Biến đếm lớn hơn giá trị cuối c. Giá trị đầu bằng giá trị cuối
b. Biến đếm lớn hơn hoặc bằng giá trị cuối d. Giá trị đầu lớn hơn giá trị cuối
4. Trong các câu lệnh Pascal sau, câu lệnh nào hợp lệ?
a. For i:=1 to 10; do x=x+1; c. For i:=1 to 10 do x:=x+1;
b. For i:=10 to 1 do x:=x+1; d. For i:=1.5 to 10 do x:=x+1;
5. Trong lệnh lặp For... do của Pascal, sau từ khóa “do” nếu có từ 2 câu lệnh trở lên (câu lệnh
ghép) thì câu lệnh ghép đó phải đặt trong cặp từ khóa nào sau đây?
a. Begin.....readln; b. Begin.....and;
c. End.....Begin d. Begin.....end;
6. Câu lệnh sau đây cho kết quả như thế nào?
For i:=1 to 10 do Writeln(‘A’);
a. In dãy số từ 10 đến 1 ra màn hình c. In dãy số từ 1 đến 10 ra màn hình
b. In 20 ký tự A ra màn hình d. In 10 ký tự A ra màn hình
7. Sau khi thực hiện đoạn chương trình sau, giá trị của biến T bằng bao nhiêu?

i := 0; T := 0;
While i &lt; 3 do
begin T := T + 1; i := i + 1; end;

a. T = 2 b. T = 3 c. T = 4 d. T = 5
8. Cú pháp của câu lệnh lặp với số lần chưa biết trước trong Pascal:
a. While <câu lệnh> do <điều kiện>; c. While <điều kiện> do <câu lệnh>;
b. While <giá trị cuối > do <giá trị đầu>; d. While <giá trị đầu> do <giá trị cuối>;
9. Trong lệnh lặp While... do của Pascal, nếu điều kiện đúng thì:
a. Tiếp tục vòng lặp c. Vòng lặp vô tận
b. Lặp 10 lần d. Thoát khỏi vòng lặp
10. Trong các câu lệnh Pascal sau, câu lệnh nào hợp lệ?
a. x:=1; while x:= 10 do x:=x+5; c. x =1 while x>10 do x:=x+5;
b. x:=1; while x <10 do x:=x+5; d. x:=10; while x<10 do x=x+5;
Phần II. Bài tập. (5 điểm)
Câu 1: Cho đoạn chương trình sau: (2đ)

m:=2; k:=3;
For i:= 0 to 4 do begin

m:=m+1;
k :=k+m;
end;

Sau khi thực hiện đoạn chương trình trên giá trị của các biến m, k bằng bao nhiêu?
1. Câu 2: (3đ)Viết chương trình tính tổng: S= 1+ 1/2 + 1/3 + ….. + 1/N

(n là số nguyên được nhập từ bàn phím)

Làm giúp mình trước ngày 29/04/2020 nha !

1
27 tháng 4 2020

Cảm ơn ạ !haha

Phần II: Bài tập

Câu 1:

Sau khi thực hiện chương trình, chương trình sẽ báo lỗi thiếu begin

Câu 2:

uses crt;

var i,n:integer;

s:real;

begin

clrscr;

write('n='); readln(n);

s:=0;

for i:=1 to n do

s:=s+1/i;

writeln(s:4:2);

readln;

end.

1, Cho s và i là biến nguyên. Khi chạy đoạn chương trình: s:=0;for i:=1 to 3 do s := s+3*i; s:=s+5;writeln(s); Kết quả in lên màn hình là? * A.12 B. 10 C.23 D. 26 2, Kêt quả của câu lệnh For i:=1 to 20 do if i mod 3=2 then write(i:3); * A.In ra các số lẻ từ 1 đến 20; B. In ra các số chẵn từ 1 đến 20; C. In ra các số chia hết cho 3 từ 1 đến 20; D. In ra các số chia hết cho 3 dư 2 từ 1 đến 20; 3, Trong...
Đọc tiếp
1, Cho s và i là biến nguyên. Khi chạy đoạn chương trình: s:=0;for i:=1 to 3 do s := s+3*i; s:=s+5;writeln(s); Kết quả in lên màn hình là? * A.12 B. 10 C.23 D. 26

2, Kêt quả của câu lệnh For i:=1 to 20 do if i mod 3=2 then write(i:3); *

A.In ra các số lẻ từ 1 đến 20; B. In ra các số chẵn từ 1 đến 20; C. In ra các số chia hết cho 3 từ 1 đến 20; D. In ra các số chia hết cho 3 dư 2 từ 1 đến 20;

3, Trong câu lệnh lặp For i:=3 to 15 do s:=s+i; Có bao nhiêu vòng lặp? *

A. 15; B. 12; C. 13 D. 3;

4, Cho k,m,n nhận giá trị tương ứng 4,5,6; kết thúc câu lệnh sau:X:=n; If ((x mod 2=0)) or (x<=5) then x:=m*k else x:=m div k; thì x có giá trị là ? *

A. 1 B. 0 C. 5. D. 20 5, Cho biết đoạn chương trình Pascal sau đây chương trình thực hiện bao nhiêu vòng lặp?s:=0; n:=0; while s<=5 do n:= n+1;s:= s+n; * A. 3 B. 6 C. 10 D. kết quả khác 6, Cho a,b,c lần lượt nhận giá trị 10,30,20 . Hỏi sau đoạn chương trình Begin X:=a; If x>a then x:=a; if x>b then x:=b;if x>c then x:=c;end; x có giá trị là? * A. 20 B. 10 C. 30 D. Cả ba đáp án đều sai. 7, Cho x:=7; kết thúc câu lệnh If ((x mod 3=0)) and (x<=8) then x:=x+10; thì x có giá trị là ? * A. 8 B. 10 C. 17 D. 7 8, Cho s và i là biến nguyên. Khi chạy đoạn chương trình s := 1; for i:=1 to 5 do s := s+i; Kết quả in lên màn hình là của s là ? * A. 15 B. 16 C. 11 D. 22 9, Cho biết đoạn chương trình Pascal sau đây, khi kết thúc giá trị của S bằng bao nhiêu? S:=0; n:=0;while S<=3 do begin n:= n+1;S:= s+n; end; * A. 15 B. 10 C. 6 D. 3
1
10 tháng 12 2020

1. C

2. D

3. C

4. D

5. D

6. B

7. D

8. B

9. C

 

26 tháng 2 2022

Sai

21 tháng 12 2018

Sử dụng hàm Upcase

Vd

var

s:string;

begin

readln(s);

s:=upcase(s);

write(s);

readln

end.