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

25 tháng 7 2021

uses crt;

var s:string;

i,tong,x,code:integer;

f,g:text;

k:boolean;

const fi='XAU.INP';

          fo='XAU.OUT';

begin

k:=false;

assign(f,fi); reset(f);

assign(g,fo); rewrite(g);

readln(f,s);

tong:=0;

for i:=1 to length(s) do

begin

if s[i] in ['0'..'9'] then

begin

k:=true;

val(s[i],x,code);

tong:=tong+x;

x:=0;

cod:=0;

end;

end;

if k=false then writeln(g,'Sai yeu cau')

else

begin

writeln(g,s);

writeln(g,tong);

end;

close(f);

close(g);

end.

#include <bits/stdc++.h>

using namespace std;

string a[1000],t,ln;

int n,i;

int main()

{

cin>>n;

for (i=1;i<=n; i++) cin>>a[i];

ln='';

for (i=1; i<=n; i++) if (ln<a[i]) ln=a[i];

t='';

for (i=1; i<=n; i++) t=t+a[i];

cout<<ln<<" "<<t;

return 0;

}

21 tháng 2 2022

có chương trình bằng pascal không ạ

Mn giúp mik bt Tin Học với ạ..! Mn lm đc bài nào thì làm nha ...!Câu 1 (7,0 điểm): Số chính phương.Cho trước số nguyên dương N (0< N≤ 106 ). Yêu cầu: Tìm số nguyên dương K nhỏ nhất sao cho tích của K và N là một số chính phương. Dữ liệu vào: File CP.INP chứa số N. Dữ liệu ra: File CP.OUT ghi số nguyên K tìm được.Câu 2 (6,0 điểm): Dòng lớn nhất.Cho một tệp tin gồm nhiều dòng. Trên mỗi dòng chứa...
Đọc tiếp

Mn giúp mik bt Tin Học với ạ..! Mn lm đc bài nào thì làm nha ...!

Câu 1 (7,0 điểm): Số chính phương.

Cho trước số nguyên dương N (0< N≤ 106 ). Yêu cầu: Tìm số nguyên dương K nhỏ nhất sao cho tích của K và N là một số chính phương. Dữ liệu vào: File CP.INP chứa số N. Dữ liệu ra: File CP.OUT ghi số nguyên K tìm được.

Câu 2 (6,0 điểm): Dòng lớn nhất.

Cho một tệp tin gồm nhiều dòng. Trên mỗi dòng chứa một xâu kí tự chỉ gồm các kí tự chữ cái và chữ số, độ dài của mỗi xâu không quá 255 kí tự.

Yêu cầu: Đưa ra dòng có nhiều kí tự chữ cái nhất, nếu có nhiều dòng thỏa mãn thì đưa ra dòng đầu tiên có nhiều kí tự chữ cái nhất. Dữ liệu vào: File DLN.INP gồm:

+ Dòng đầu ghi số N là số lượng dòng chứa các xâu kí tự.

+ N dòng tiếp theo: mỗi dòng ghi một xâu kí tự. Dữ liệu ra: File DLN.OUT ghi ra dòng có nhiều kí tự chữ cái nhất, nếu có nhiều dòng thỏa mãn thì đưa ra dòng đầu tiên có nhiều kí tự chữ cái nhất.

Câu 3 (4,0 điểm): Dãy con đối xứng.

Một dãy số liên tiếp gọi là dãy đối xứng nếu đọc các số theo thứ tự từ trái sang phải cũng giống như khi đọc theo thứ tự từ phải sang trái. Cho dãy số A gồm N số nguyên dương: a1, a2,..., aN (1≤ N≤ 10000; 1≤ ai≤ 32000; 1≤ i≤ N)

Yêu cầu: Hãy tìm dãy con đối xứng dài nhất của dãy A. Nếu có nhiều dãy con thoả mãn thì lấy dãy con xuất hiện đầu tiên trong dãy A. Dữ liệu vào: File DX.INP gồm 2 dòng:

- Dòng 1: ghi số nguyên dương N.

- Dòng 2: ghi N số nguyên dương lần lượt là giá trị của các số trong dãy A, các số được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: File DX.OUT ghi dãy tìm được trên cùng một dòng, các số được ghi cách nhau một dấu cách.

Câu 4 (3,0 điểm): Dãy nguyên tố.

Cho một dãy số B gồm n số nguyên dương (n ≤ 1000), mỗi phần tử trong dãy có giá trị không quá 30000. Yêu cầu:

+ Tìm dãy con dài nhất (liên tiếp hoặc không liên tiếp) các phần tử là những số nguyên tố có giá trị tăng dần của dãy B và thứ tự của các phần tử không đổi so với ban đầu. Ví dụ: Dãy 8 phần tử {4, 2, 5, 6, 3, 3, 7, 9} có dãy con nguyên tố tăng dài nhất là {2, 5, 7}.

+ Nếu có nhiều dãy con thoả mãn thì lấy dãy con xuất hiện đầu tiên trong dãy B. Dữ liệu vào: File NT.INP gồm 2 dòng:

- Dòng 1: Ghi số nguyên dương n.

- Dòng 2: Ghi n số nguyên dương, các số được ghi cách nhau một dấu cách. Dữ liệu ra: File NT.OUT ghi dãy con tìm được trên cùng 1 dòng, giữa 2 phần tử liền kề trong dãy có một dấu cách.

0
27 tháng 3 2022

var s:string;

i:integer;

begin

write('Nhap xau ki tu S = ');readln(s);

for i:=1 to length(s) do

begin

if s[i] <> '0' then write('Vi tri cua so 0 cuoi cung la ',i-1);

i:=length(s);

end;

readln;

end.