Viết chương trình pascal nhập vào 1 xâu (gồm các ký tự khác như:khoảng trắng,dấu chấm câu,…) và đảo từng từ trong câu nhưng vẫn giữ nguyên các ký tự khác.
Vd:
IN: day la vi du. ok?
OUT: yad al iv ud. ko?
Mong các anh chị bro giúp!!!
Viết chương trình pascal nhập vào 1 xâu (gồm các ký tự khác như:khoảng trắng,dấu chấm câu,…) và đảo từng từ trong câu nhưng vẫn giữ nguyên các ký tự khác.
Vd:
IN: day la vi du. ok?
OUT: yad al iv ud. ko?
Mong các anh chị bro giúp!!!
#include <iostream>
using namespace std;
string dnx(string s)
{
string t=””;
for(int i=s.size()-1;i>=0;i–){
t+=s[i];
}
return t;
}
int main()
{
int n=0;
string s,t=””;
getline(cin,s);
while(n<s.size()){
if(s[n]>=’a’&&s[n]<=’z’){
t+=s[n];
}
else if(!(s[n]>=’a’&&s[n]<=’z’)&&t.size()>0){
s.replace(n-t.size(),t.size(),dnx(t));
t=””;
}
n++;
}
cout<<s;
//samon247
return 0;
}
#mod_ơi_đừng_xoá_của_em_mà:<
uses crt;
var s,a,k:string; i,j,m,n,x,l:longint; c:char; dau:array[1..255]of longint;
begin
clrscr;
write(‘In:’);readln(s);
k:=’:;?.,-()!`~}{[]”/”|\’;
write(‘OUT:’);
for i:=1 to length(s) do
begin
if((i=n)or(i=1)or((i>1)and(s[i-1]=’ ‘)))and(s[i]<>’ ‘) then
begin
j:=i; while (s[j+1]<>’ ‘)and(j<=length(s)) do inc(j);
a:=copy(s,i,j-i+1); m:=length(a); l:=m+1;
for x:=1 to m do
if pos(a[x],k)=0 then
begin
repeat dec(l); until pos(a[l],k)=0;
if dau[x]<>1 then begin c:=a[x]; a[x]:=a[l]; a[l]:=c; dau[l]:=1; end;
end;
write(a);
end;
if s[i]=’ ‘ then write(‘ ‘);
end;
readln
end.
////////////////////////////////////////
Bài này mình cũng có trả lời bên kia rồi nên không phải là copy của người khác đâu nhé
Một số text cho bạn tham khảo: