Parcourir la source

添加 '4634.'

wu.tong-606 il y a 5 ans
Parent
commit
60bb202059
1 fichiers modifiés avec 187 ajouts et 0 suppressions
  1. 187 0
      4634.

+ 187 - 0
4634.

@@ -0,0 +1,187 @@
+#include<bits/stdc++.h>
+using namespace std;
+typedef char atype;
+#define maxsize 100000
+typedef struct {
+    atype a[maxsize];
+    int size;
+}e_list;
+e_list s;
+e_list t;
+e_list p;
+void createlist(e_list &s,char str[]){
+    int n=strlen(str);
+    for(int i=0;i<n;i++){
+        s.a[i]=str[i];
+    }
+   s.size=n;
+}
+bool dislist(e_list s){
+    if(s.size==0)return false;
+    int j=0;
+    for(int i=0;i<s.size;i++){
+        printf("%c",s.a[i]);
+        j++;
+        if(j%20==0)printf("\n");
+    }
+    printf("\n");
+}
+void shuzinum(e_list s){
+    int n=0,i=0;
+    while(s.a[i]){
+        if(isdigit(s.a[i]))n++;
+        i++;
+    }
+    printf("%d\n",n);
+}
+void zimunum(e_list s)
+{
+    int n=0,i=0;
+    while(s.a[i]!=0)
+    {
+        if(isalpha(s.a[i]))
+            n++;
+        i++;
+    }
+    printf("%d\n",n);
+}
+void konggenum(e_list s)
+{
+    int n=0,i;
+    for(i=0; i<s.size; i++)
+    {
+        if(isspace(s.a[i]))
+            n++;
+    }
+    printf("%d\n",n);
+}
+void zongzinum(e_list s)
+{
+    printf("%d\n",s.size);
+}
+void delestr(e_list s,e_list p)
+{
+    int i=0,j,succ=0;
+    while((i<=s.size-p.size+1)&&(!succ))
+    {
+        j=0,succ=1;
+        while((j<=p.size-1)&&succ)
+            if(p.a[j]==s.a[i+j])
+                j++;
+            else
+                succ=0;
+        i++;
+    }
+    if(succ)
+    {
+        for(j=0; j<s.size-p.size-1; j++)
+        {
+            s.a[i-1]=s.a[i+p.size-1];
+            i++;
+        }
+        s.size=s.size-p.size;
+        printf("删除后的字符串:");
+        for(i=0; i<s.size; i++)
+        {
+            printf("%c",s.a[i]);
+        }
+        printf("\n");
+    }
+    else
+        printf("没有配对的子串\n");
+}
+bool TH(e_list s,int i,int j,e_list t){
+    int k;
+    e_list str;
+    str.size=0;
+    if(i<=0||j>s.size||i+j-1>s.size)
+        return false;
+    for(k=0;k<i-1;k++)
+        str.a[k]=s.a[k];
+    for(k=0;k<t.size;k++)
+        str.a[i+k-1]=t.a[k];
+    for(k=j+i-1;k<s.size;k++)
+        str.a[t.size+k-j]=s.a[k];
+    str.size=s.size-j+t.size;
+    printf("替换后的字符串为:");
+   dislist(str);
+}
+void TH_1(){
+    char n[]={"0"};
+    cin>>n;
+    createlist(t,n);
+    int i=3,j=3;
+    TH(s,i,j,t);
+}
+void TH_2(){
+    char m[maxsize],n[maxsize];
+    scanf("%s%s",m,n);
+    char *p;
+    p=strstr(s.a,m);
+    if(p){
+        int i=p-s.a;
+        int j=strlen(m);
+        e_list h;h.size=strlen(n);
+        for(int i=0;i<strlen(n);i++)
+        h.a[i]=n[i];
+        TH(s,i+1,j,h);
+    }
+    else printf("NOT Find!");
+}
+bool TQCR(e_list &s,int n,int m,int i){
+    e_list s1,s2,str;
+    str.size=0;
+    int l=0,j;
+    if(n+m>s.size)return false;
+    for(int j=n-1;j<n+m-1;j++)
+        s2.a[l++]=s.a[j];
+    s2.size=l;
+    for(j=0;j<i-1;j++)
+        str.a[j]=s.a[j];
+    for(j=0;j<s2.size;j++)
+        str.a[j+i-1]=s2.a[j];
+    for(j=i-1;j<s.size;j++)
+        str.a[j+s2.size]=s.a[j];
+    str.size=s.size+s2.size;
+    for(j=0;j<str.size;j++)
+        s.a[j]=str.a[j];
+    s.size=str.size;
+}
+void caidan(){
+    printf("********************文本编辑*******************************\n");
+    printf("*          1.全部字母个数                                 *\n");
+    printf("*          2.数字个数                                     *\n");
+    printf("*          3.空格个数                                     *\n");
+    printf("*          4.文章总个数                                   *\n");
+    printf("*          5.输出删除某一字符串后的文章                   *\n");
+    printf("*          6.查找替换指定位置开始的指定长度的字符串       *\n");
+    printf("*          7.查找替换指定的字符串                         *\n");
+    printf("*          8.在指定位置提取字符串在指定位置插入           *\n");
+    printf("*          9.退出编辑                                     *\n");
+    printf("***********************************************************\n");
+    int ch,i=1;
+    char n[]={"0"};e_list h;
+    while(i){
+         printf("\n请输入您所需要模块:");
+         scanf("%d",&ch);
+         switch(ch){
+            case 1:printf("全部字母个数:");zimunum(s);break;
+            case 2:printf("数字个数:");shuzinum(s);break;
+            case 3:printf("空格个数:");konggenum(s);break;
+            case 4:printf("文章总个数:");zongzinum(s);break;
+            case 5:printf("删除某一字符串后的文章:");printf("\n请输入您要删除的字符串:");
+                     cin>>n;createlist(h,n);delestr(s,h);break;
+            case 6:printf("查找替换指定位置开始的指定长度的字符串:");TH_1();break;
+            case 7:printf("查找替换指定的字符串:");TH_2();break;
+            case 8:printf("在指定位置提取字符串在指定位置插入");
+                int i,j,k;cin>>i>>j>>k;TQCR(s,i,j,k);dislist(s);break;
+            case 9:printf("退出编辑\n");exit(0);break;
+        }
+    }
+}
+int main(){
+    char wenben[]={"abcdefghijklmnopqrstuvwxyz"};
+    createlist(s,wenben);
+    caidan();
+    return 0;
+}