数据结构-文章编辑

数据结构课设——文章编辑系统 kmp 文章编辑系统:菜单 输入文章 统计字符 童子字符串出现次数 删除某子串 查看文章 保存文章 加载文章 阅读详情

//文章编辑
//时间: 2005-7-6
//程序:张建波

#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include "Menu.h"
#include "key.h"
#include <stdlib.h>


typedef struct line{
    //char data[80];
    char *data;      //字符串指针需要时 动态分配内存
    struct line *next;
}LINE;

void CreateTXT(LINE * &head); //创建一张列表,同时向里面输入 文本数据
int Count_Space(LINE * &head); //统计空格数
int Count_ZM(LINE * &head);  //  统计字母数
int Count_All_Word(LINE * &head); //统计文章的总字数
int Find_Word(LINE * &head,char *sch); //统计 sch 在文章中出现的次数
int Count_Num(LINE * &head); //统计数字 数
void Del_String(LINE * &head,char *sch); //删除指定的字符串
void OutPutTxt(LINE * &head); //向屏幕输出 文章
void Tj(LINE * &head); //统计

int _f5_main(){

    LINE *head;         //文章的首结点

    Menu m[10];
    m[1].Name="新建文本链表 ";
   
    m[2].Name="浏览输入文本 ";
   
    m[3].Name="文本统计  ";
   
    m[4].Name="字符串统计";

    m[5].Name="字符串删除 ";
   
    m[6].Name="返回       ";
   


    int t=1,ID;
    while(t)
    {
        ShowMenu("数据结构----文章编辑",m,6);//显示菜单

        ID=SelectMenuID();
        switch(ID)
        {
        case 1:CreateTXT(head);break;

        case 2:{
    //        system("cls");   //清屏,调用系统shell命令

            OutPutTxt(head);     //向屏幕输出 文章
           
            InitKey();
               break;
               }
   
        case 3:{
         //   system("cls");   //清屏,调用系统shell命令

            Tj(head);
            InitKey();  //键盘中断

            break;
               }
        case 4:{
        //       system("cls");   //清屏,调用系统shell命令
               cout<<"/n请输入要统计的 字符串/n";
               char sch[20];
               cin>>sch;
               cout<<"/n"<<sch<<"出现的次数为:"<<Find_Word(head,sch);
               InitKey();
               break;
               }
        case 5:{
            cout<<"/n请输入要删除的某一字符串:"<<endl;
            char tmp_sch[20];
            cin>>tmp_sch;
            Del_String(head,tmp_sch);  //删除指定字符
            OutPutTxt(head);     //向屏幕输出 文章
            InitKey();
            break;
               }
        case 6:return 0;
        }
   
    }
        return 0;
}

void CreateTXT(LINE * &head){
    printf("/n请输入文本,每行最多输入80字符!/n");
    printf("输入 Ctrl + E (^E) 则结束输入/n");
    LINE *p=new LINE;  //首先为链表 建立一个附加表头结点
    head=p; //将p付给 表头指针
    char tmp[80];
    while(1)
    {
       gets(tmp);  //输入字符串!使用C的输入函数
      // printf("%d",strlen(tmp));     
       if(tmp[0]==5)break;  //如果发现输入 ^E,则退出输入     
       p=p->next=new LINE;
       p->data=new char[strlen(tmp)+1];//为结点分配空间     
       strcpy(p->data,tmp);
          if(tmp[strlen(tmp)-1]==5){    //除去最后一个控制符 ^E       
           p->data[strlen(tmp)-1]='/0';
           break;
       }
    }

    p->next=NULL;  //是最后的一个指针为空。
    head=head->next;
   
}

int Count_Space(LINE * &head){ //统计空格数
    LINE *p=head;
    int asc_space=32; //空格的ASCIC 码值
    int count=0;
   
    do
    {       
        int Len=strlen(p->data);           //计算当前 data 里的数据元素的个数
        for(int i=0;i<Len;i++)
        if(p->data[i]==asc_space)count++;  //计算空格数
    }   
    while((p=p->next)!=NULL);    //遍历 链表

    return count;
}

int Count_Num(LINE * &head){ //统计数字 数
    LINE *p=head;
    int count=0;
   
    do
    {       
        int Len=strlen(p->data);           //计算当前 data 里的数据元素的个数
        for(int i=0;i<Len;i++)
        if(p->data[i]>=48 && p->data[i]<=57)count++;  //计算空格数
    }   
    while((p=p->next)!=NULL);    //遍历 链表

    return count;
}

int Count_ZM(LINE * &head){  //  统计字母数
    int count=Count_All_Word(head); //总的字符数,包含空格
    int space_count=Count_Space(head); //空格数
    return count-space_count;  //返回文章的字母总数

}


int Count_All_Word(LINE * &head){ //统计文章的总字数
    LINE *p=head;  //保存链表的首地址
    int count=0;   //总字母数
    do
    {count+=strlen(p->data);}    //计算当前行内的字符数!除'/0'结束符外!注意,该统计包含“空格的长度!”
    while((p=p->next)!=NULL);    //遍历 链表
   
    return count;
}


int Find_Word(LINE * &head,char *sch){ //统计 sch 在文章中出现的次数

    LINE *p=head;
    int count=0;
    int h=0;

    int len1=0; //保存当前行的总字符数
    int len2=strlen(sch); //待统计字符串的长度

    int i,j,k;
    do
    {

    len1=strlen(p->data);//当前行的字符数

    for(i=0;i<len1;i++)
    {   
        if(p->data[i]==sch[0])
            {
                k=0;
                for(j=0;j<=len2-1;j++)
                    if(p->data[i+j]==sch[j])k=k+1;
            if(k==len2){count++;i=i+k-1;}
            }
    }
    }   
    while((p=p->next)!=NULL);    //遍历 链表
    return count;
}

void del_string_word(char *s,char *sch)
{
    // *s为输入的字符串
    // *sch 为将要删除的字符

    char *p=strstr(s,sch);    //查询结果
    char tmp[80];
    int len=strlen(s);
    int i=len-strlen(p);
    int j=i+strlen(sch);
    int count=0;
    for(int k=0;k<i;k++)tmp[count++]=s[k];
    for(int kk=j;kk<len;kk++)tmp[count++]=s[kk];
    tmp[count]='/0';

    strcpy(s,tmp); //返回新的字符串
}

void Del_String(LINE * &head,char *sch){ //删除指定的字符串
    LINE *p=head;
    do
    {
        if(strstr(p->data,sch)!=NULL)del_string_word(p->data,sch);
    }    while((p=p->next)!=NULL);    //遍历 链表
}


void OutPutTxt(LINE * &head){ //向屏幕输出 文章
    LINE *p=head;
   
    do
    {    cout<<p->data<<endl;
    }    while((p=p->next)!=NULL);    //遍历 链表
}


void Tj(LINE * &head){ //统计

        cout<<"文章统计信息结果如下:/n";
        cout<<"/n英文字母数:"<<Count_ZM(head);
        cout<<"/n空格数: "<<Count_Space(head);
        cout<<"/n文章中共出现数字:"<<Count_Num(head);
        cout<<"/n统计文章的总字数: "<<Count_All_Word(head);
   
}

文章编辑系统的设计与实现 输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行; 阅读详情

相关推荐

数据结构文章编辑

文章编辑数据结构文章编辑数据结构文章编辑数据结构

c语言数据结构课程设计 文章编辑系统

C语言数据结构课程设计 --文章编辑系统

theshycjj的博客 2960

文章编辑关于数据结构

#include #include #include #include #define MAX_LENGTH 4000 int ParseString(const char *parse_str, int *letter_num, int *space_num, int *total_num, const char *stat_str, int *str_num); int main(int argc, char **argv) { int letter_num, space_num, total_num, str_num; const char *stat_str = "abc "; char input_str[MAX_LENGTH]; char parse_str[MAX_LENGTH]; FILE *fd = NULL; fd = fopen( "data.txt ", "wb+ "); //err while ( 1 ) { fgets(input_str, MAX_LENGTH, stdin); //err if ( *input_str == '# ' ) break; fwrite(input_str, 1, strlen(input_str)-1, fd); //err *input_str = '\r '; *(input_str+1) = '\n '; fwrite(input_str, 1, 2, fd); //err } fseek(fd, 0, SEEK_SET); //err memset(parse_str, 0, MAX_LENGTH); fread(parse_str, 1, MAX_LENGTH, fd); //err fclose(fd); ParseString(parse_str, &letter_num, &space_num, &total_num, stat_str, &str_num); printf( "parse result : letter-%d, space-%d, total size-%d, num of '%s '-%d\n ", letter_num, space_num, total_num, stat_str, str_num); return 0; } int ParseString(const char *parse_str, int *letter_num, int *space_num, int *total_num, const char *stat_str, int *str_num) { int tmp_letter=0, tmp_space=0, tmp_total=0, tmp_str=0; char *p, *q; for ( p=parse_str; *p!=0; p++ ) { if ( isalpha(*p) != 0 ) tmp_letter++; //if ( isspace(*p) != 0 ) if ( *p == ' ' ) tmp_space++; } for ( p=parse_str; *p!=0; p++ ) { q = strstr(p, stat_str); if ( q != NULL ) { tmp_str++; p = q + strlen(stat_str); } else { break; } } *letter_num = tmp_letter; *space_num = tmp_space; *total_num = strlen(parse_str); *str_num = tmp_str; return 0; }

数据结构课程设计-——文章编辑(C语言编写)

功能:从间盘输入一页文字,静态存储在一个文件中。 要求: (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)同一字符串在文章中出现的次数,并输出次数; (3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母,任意数字和标点符号。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”; (3)输出删除某一字符串后的文章;

qq_43004592的博客 2032

数据结构文章编辑的源代码

文章编辑程序是一个面向用户的系统服务程序 明确规定:(1)输入的形式和输入值的范围; (2)输出的形式; (3)程序所能达到的功能; 功能: 输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行; 要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。  (4)存储结构使用线性表,分别用几个子函数实现相应的功能;  (5)输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

数据结构-文章编辑.doc

【完成题目4】文章编辑 【问题描述】 输入一页文字,程序可以统计出文字、数字、空格的个数; 静态存储一页文章,每行最多不超过80个字符,共N行。 【基本要求】 1.分别统计出其中英文字母数和空格数及整篇文章总字数; 2.统计某一字符串在文章中出现的次数,并输出该次数; 3.删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式: 1.分行输出用户输入的各行字符; 2.分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"; 3.输出删除某一字符串后的文章。 【算法设计】 统计str在文章中出现次数的思路 1.查找第一个字符,如果有第一个字符即p->data[i]==str[0],设计数器k=0。 2.查找这个字符后面的字符与要查找的字符串是否匹配即p- >data[i+j]==str[j],如果匹配k++。 3.重复第二步,如果k=len2,则查找到,count++;如果没查找到,重新进行第一步 。 删除指定字符串的思路 1.从字符串s中寻找str第一次出

C语言实现数据结构之文章编辑(KMP算法)

使用结构体存储文章,结构体成员包含每一行的字符串结点以及指向下一行结点的指针,采用链式存储。对于统计字符串使用KMP算法。静态存储一页文章,每行最多不超过80个字符,共N行。统计文中所出现的英文字母的个数、数字的个数、空格的个数、总字数等。

m0_60388174的博客 750

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

数据结构作业之文章编辑

数据结构作业,文章编辑(撤销,删除一行) #include <stdio.h> #include <stdlib.h> typedef struct snode { char *data; int top; }snode; int initstack(snode *S) { S->data=(char *)malloc(sizeof(char)*100); ...

氧化钙的博客 907

LS-DYNA中的流固耦合

在LS-DYNA中对流固耦合问题的求解提供了两种方法,ALE流固耦合和基于ICFD的流固耦合。本文将对两种方法的各自特点进行分析。 ALE方法的流固耦合 适用范围 ALE求解器主要用于层流。ALE求解器也不是完全的NS求解器,因此不考虑边界层的影响,比如阻力。流体粘性效应仅通过材料模型获得,也就是*mat_null的MU。ale求解器是为了求解高压高速度梯度的短时问题而开发的。该求解器并不适用于求解低压力梯度问题比如声学,也不适用于长时间问题(秒的尺度甚至更长)。时间的限制是显式时...

m0_69812055的博客 8556

Open3D 教程学习指南 (持续整理)

Open3D 是一个开源库,旨在为 3D 数据处理提供高效且易用的工具。它由 Intel 开发和维护,支持多种 3D 数据处理任务,如点云处理、3D 重建、几何处理和可视化等。

Chase Blog 5928

数据结构课设 文章编辑

【代码】数据结构课设 文章编辑。

m0_62616221的博客 768

检测头篇 | 手把手教你如何去更换YOLOv8的检测头为ASFF_Detect

自适应空间特征融合(ASFF)的主要原理旨在解决单次检测器中不同尺度特征的不一致性问题。具体来说,ASFF通过动态调整来自不同尺度特征金字塔层的特征贡献,确保每个检测对象的特征表示是一致且最优的。本文所做出的改进是将YOLOv8的检测头更换为ASFF_Detect。🌈

小哥谈 2497

文章编辑(数据结构程序设计)希望有人解答?

1.文章编辑l  功能:输入一页文字,程序可以统计出文字、数字、空格的个数。n  静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。l  存储结构使用线性表,分别用几个子函数实现相应的功能;l  输入数据的形式和范围:可以输入大

FYZCJJX的专栏 2139

执行HDevelop项目

这一节,我们讲述的是如何用HDevEngine加载和执行一个HDevelop项目。代码部分来源于示例程序exec_program(源文件exec_program.cpp),检测塑料零件边界上的毛刺。1.Step 1:初始化首先,我们包含HALCON/C++和HDevEngine头文件以及命名空间。注意到在这个示例程序中,HDevEngine头文件已经包含在my_hdevoperatorimpl中,所

Z's Palace 2994

Java的API帮助文档

JDK帮助文档 SUN公司为JDK工具包提供了一整套文档资料,我们习惯上称之为JDK文档。 JDK文档中提供了Java中的各种技术的详细资料,以及JDK中提供的各种类的帮助说明。 JDk文档是Java语言的完整说明,大多数书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料 如何理解API:就当做是一个“字典”,“使用手册”,API就相当于是一个电子的帮助文档,可以帮我们查看JDK提供的类的信息,平时查看的时候可结合百度一起看。 官网下载: 1、登录Oracle官网(Oracl.

人生得意须尽欢 2万+

文章编辑系统

数据结构课设源码,文章编辑系统。

m0_73406058的博客 325

在 ABAP SEGW OData 服务里,把 Function Import 参数长度校验真正跑起来

SAP Gateway服务中Function Import参数长度校验的实现机制解析:在SEGW中定义Max Length参数后,需通过模型特性USE_STRICT_FUNCTION_PARAM_CHK(7.52+版本支持)启用严格检查。该特性需在MPC_EXT的DEFINE方法中设置,框架会在URI解析阶段拦截超长参数,避免错误进入业务逻辑。对于低版本系统,建议在应用层手动添加校验。这种模型驱动的方式符合Clean Core原则,能有效提升接口健壮性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 493

文章编辑器的设计与实现

基于C语言的文章编辑器设计 引言 本文是以学校数据结构与算法课程设计要求为背景,利用了C语言、数据结构知识和VC++6.0开发平台,开发了文章编辑器,写这篇是为了记录学习过程,也为后来者提供一些参考和思路。 在实际应用中往往需要在编辑不同的文本信息时可完成文字信息录入、统计出文字、数字、空格等字符个数等使用功能。因此,本程序也需要完成类似的功能,通过依据现有知识对软件所需的功能进行评估分析,编写算法最终完成该程序设计。 设计目的 1.巩固和加深对C语言课程基本知识的理解和掌握; 2.掌握C语言编程和调试的基

敷衍zgf的博客 5552

educoder中Hive综合应用案例 — 用户搜索日志分析

Hive综合应用案例 — 用户搜索日志分析

weixin_46026136的博客 4764

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《数据结构》课程设计报告

<br />《数据结构》课程设计报告<br />题   目<br />文章编辑、纸牌游戏、猴子选大王<br /> <br /> <br />专    业:计算机应用技术  <br />班    级:      计应 0 7 0 1       <br />学    号:     3 0 1 0 7 0 1 3 0      <br />姓    名:       梁  光  贵       <br />指导教师:       陈  香  兰      <br />      二00八  年  10 月  

nixingwang的专栏 3824

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数据结构课程设计(Latex版本)

这个统计是通过遍历字符串中的每个字符来完成的,利用标准库函数如 \texttt{isalpha()}、\texttt{isdigit()} 和 \texttt{isspace()} 来判断字符类型,最终输出了各类字符的数量和文章的总字数。在本程序中,归并排序通过递归实现,展示了分治法的有效性。对于不同的排序算法,\texttt{vector} 允许算法高效地进行元素交换、插入和访问等操作,尤其是在快速排序和堆排序中,交换操作是常见的核心操作,而 \texttt{vector} 能够高效地支持这些操作。

2303_77845954的博客 1098

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 数据结构-猴子选王
下一篇: 数据结构-一元多项式加减程序
EX_NET
博客等级 码龄21年 953粉丝 270原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值