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.

20 tháng 2 2023

Để chuẩn hóa xâu kí tự, ta sẽ loại bỏ các ký tự trống ở đầu và cuối xâu, sau đó loại bỏ các ký tự trống kề liền.

Để tìm số lượng kí tự chữ số trong xâu, ta sẽ duyệt qua từng ký tự của xâu và kiểm tra xem ký tự đó có phải là chữ số không.

Code Python để thực hiện yêu cầu đề bài như sau:

pythondef chuan_hoa_xau(s): # Xóa khoảng trắng ở đầu và cuối xâu s = s.strip() # Loại bỏ khoảng trắng kề nhau i = 0 while i < len(s) - 1: if s[i] == ' ' and s[i+1] == ' ': s = s[:i] + s[i+1:] else: i += 1 return s def dem_chu_so(s): count = 0 for c in s: if c.isdigit(): count += 1 return count # Đọc xâu kí tự từ input s = input() # Chuẩn hóa xâu s_chuan = chuan_hoa_xau(s) # Tìm số lượng kí tự chữ số so_luong_chu_so = dem_chu_so(s_chuan) # In ra kết quả print(s_chuan) print(so_luong_chu_so)

Ví dụ:

Input:

csharpThis is an example 1234 string .

Output:

csharpThis is an example 1234 string. 4
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

Bài 2. Viết chương trình nhập vào một xâu bất kỳ. In ra màn hình xâu đó sau khi đã xóa hếtký tự trắng dư thừa. Ký tự trắng dư thừa (hay còn gọi là dấu cách, ký tự trống) là kýtự trắng xuất hiện ở trước từ đầu tiên của xâu, sau từ cuối cùng của xâu và giữa cáctừ cách nhau nhiều hơn 1 ký tự trắng.Ví dụ: Giả sử * là ký tự trắng.Cho xâu: ’**xin***chao**’. =&gt; Xâu sau khi được xử lý ’xin*chao’Gợi ý:Kiểm...
Đọc tiếp

Bài 2. Viết chương trình nhập vào một xâu bất kỳ. In ra màn hình xâu đó sau khi đã xóa hết
ký tự trắng dư thừa. Ký tự trắng dư thừa (hay còn gọi là dấu cách, ký tự trống) là ký
tự trắng xuất hiện ở trước từ đầu tiên của xâu, sau từ cuối cùng của xâu và giữa các
từ cách nhau nhiều hơn 1 ký tự trắng.
Ví dụ: Giả sử * là ký tự trắng.
Cho xâu: ’**xin***chao**’. =&gt; Xâu sau khi được xử lý ’xin*chao’
Gợi ý:
Kiểm tra phần tử trong xâu có phải là ký tự trắng hay không? Nếu đúng thì xóa ký tự trắng đó
cho đến khi không còn ký tự trắng ở đầu xâu.
Kiểm tra từ đầu đến cuối xâu, nếu có 2 ký tự trắng liên tiếp =&gt; Xóa đi 1 ký tự trắng, thự hiện
công việc xóa cho đến khi giữa các từ trong xâu chỉ cách nhau 1 ký tự trắng.
Sau khi xử lý các ký tự trắng dư thừa ở đầu xâu, giữa xâu. Ta xử lý tiếp ký tự trắng dư thừa ở
cuối xâu bằng cách kiểm tra ký tự cuối cùng có phải là ký tự trắng hay không. Nếu đúng thì xóa
cho đến khi ký tự cuối cùng của xâu không phải là ký tự trắng.
B1: Khai báo.
B2: Nhập xâu bất kỳ.
B3: Xoá ký tự trắng dư thừa
B3.1: Xoá ký tự trắng dư thừa xuất hiện ở đầu tiên của xâu (nếu có).
Chừng nào ký tự đầu tiên trong xâu là ký tự trắng =&gt; xoá ký tự trắng đó cho đến khi đầu xâu
không phải là ký tự trắng.
B3.2: Xoá ký tự trắng dư thừa cuối cùng của xâu (nếu có).
Chừng nào trong xâu xuất hiện 2 ký tự trắng trong xâu =&gt; xoá đi 1 ký tự trắng dư thừa.
B3.3: Xoá ký tự trắng dư thừa giữa các từ (nếu có).
Chừng nào ký tự cuối cùng là ký tự trắng =&gt; Xoá đi ký tự đó.
B4: In ra kết quả

1

#include <bits/stdc++.h>

using namespace std;

string st;

int d,i;

int main()

{

getline(cin,st);

d=st.length();

for (i=0; i<=d-1; i++)

if ((st[i]==' ') and (st[i+1]=' ')) st.erase(i,1);

cout<<st;

return 0;

}

16 tháng 4 2023

program ChuyenXauSangChuThuong;
var
  str: string; 
  i: integer; 

begin
  write('Nhap mot xau ky tu: ');
  readln(str); 
  for i := 1 to Length(str) do
    str[i] := LowerCase(str[i]); 
  writeln('Xau ky tu chuyen thanh chu thuong la: ', str); 
end.

uses crt;

var s1,s2:string;

i,j,d1,d2:integer;

begin

clrscr;

readln(s1,s2);

d1:=length(s1);

d2:=length(s2);

for i:=1 to d1 do 

  if not(s1[i] in ['0'..'9']) then delete(s1,i,1);

for i:=1 to d2 do 

  if not(s2[i] in ['0'..'9']) then delete(s2,i,1);

writeln(s1);

writeln(s2);

writeln(s1+s2);

readln;

end.