3.7Code

基于顺序存储结构的图书信息表的排序

#include<iostream>
#include<sstream>
#include<stdlib.h>
#include<string.h>#define MAXSIZE 1000 //顺序表所能容纳的最大长度 
#define OK 0
typedef int status;using namespace std;typedef struct{char no[20];char name[50];float price;
}Book;typedef struct{Book* elem;int len;
}SqList; status InitList(SqList*L){L->elem=(Book*)malloc(MAXSIZE*sizeof(Book));if(!L->elem)exit(-1);L->len=0;return OK;
}status CreateList(SqList*L,char* no,char* name,float price){Book b;strcpy(b.no,no);strcpy(b.name,name);b.price=price;L->elem[L->len]=b;L->len++;return OK;
}status PrintList(SqList*L){//cout<<L->len<<endl;for(int i=0;i<L->len;i++){printf("%s %s %.2f\n", L->elem[i].no, L->elem[i].name, L->elem[i].price);}return OK;
}status SortList(SqList* L){for(int i=0;i<L->len-1;i++){for(int j=0;j<L->len-1-i;j++){if(L->elem[j].price<L->elem[j+1].price){Book book;book=L->elem[j];L->elem[j]=L->elem[j+1];L->elem[j+1]=book;}}}return OK;
}int main(){char no[20];char name[50];float price;SqList L;InitList(&L);while (1){cin>>no>>name>>price;if(!strcmp(no,"0")&&!strcmp(name,"0")&&price==0.0)break;CreateList(&L,no,name,price);}SortList(&L);PrintList(&L);return 0;
}

知识点:冒泡排序

基于顺序存储结构的图书信息表的修改 

#include<iostream>
#include<sstream>
#include<stdlib.h>
#include<string.h>#define MAXSIZE 1000 //顺序表所能容纳的最大长度 
#define OK 0
typedef int status;using namespace std;typedef struct{char no[20];char name[50];float price;
}Book;typedef struct{Book* elem;int len;
}SqList; status InitList(SqList*L){L->elem=(Book*)malloc(MAXSIZE*sizeof(Book));if(!L->elem)exit(-1);L->len=0;return OK;
}status CreateList(SqList*L,char* no,char* name,float price){Book b;strcpy(b.no,no);strcpy(b.name,name);b.price=price;L->elem[L->len]=b;L->len++;return OK;
}status PrintList(SqList*L){//cout<<L->len<<endl;for(int i=0;i<L->len;i++){printf("%s %s %.2f\n", L->elem[i].no, L->elem[i].name, L->elem[i].price);}return OK;
}/*status SortList(SqList* L){for(int i=0;i<L->len-1;i++){for(int j=0;j<L->len-1-i;j++){if(L->elem[j].price<L->elem[j+1].price){Book book;book=L->elem[j];L->elem[j]=L->elem[j+1];L->elem[j+1]=book;}}}return OK;
}*///图书价格处理 
status PriceChange(SqList* L,float Aprice){for(int i=0;i<L->len;i++){if(L->elem[i].price<Aprice)L->elem[i].price*=1.2;elseL->elem[i].price*=1.1;}
} int main(){char no[20];char name[50];float price;float sum=0.0;SqList L;InitList(&L);while (1){cin>>no>>name>>price;if(!strcmp(no,"0")&&!strcmp(name,"0")&&price==0.0)break;CreateList(&L,no,name,price);sum+=price;}float ans=sum/(L.len);printf("%.2f\n",ans);PriceChange(&L,ans);PrintList(&L);return 0;
}

基于顺序存储结构的图书信息表的逆序存储 

#include<iostream>
#include<sstream>
#include<stdlib.h>
#include<string.h>#define MAXSIZE 1000 //顺序表所能容纳的最大长度 
#define OK 0
typedef int status;using namespace std;typedef struct{char no[20];char name[50];float price;
}Book;typedef struct{Book* elem;int len;
}SqList; status InitList(SqList*L,int sum){L->elem=(Book*)malloc(sum*sizeof(Book));if(!L->elem)exit(-1);L->len=sum;return OK;
}status CreateList(SqList*L,char* no,char* name,float price){Book b;strcpy(b.no,no);strcpy(b.name,name);b.price=price;L->elem[L->len-1]=b;L->len--;return OK;
}status PrintList(SqList*L,int sum){//cout<<L->len<<endl;for(int i=0;i<sum;i++){printf("%s %s %.2f\n", L->elem[i].no, L->elem[i].name, L->elem[i].price);}return OK;
}//排序 
/*status SortList(SqList* L){for(int i=0;i<L->len-1;i++){for(int j=0;j<L->len-1-i;j++){if(L->elem[j].price<L->elem[j+1].price){Book book;book=L->elem[j];L->elem[j]=L->elem[j+1];L->elem[j+1]=book;}}}return OK;
}*///图书价格处理 
/*status PriceChange(SqList* L,float Aprice){for(int i=0;i<L->len;i++){if(L->elem[i].price<Aprice)L->elem[i].price*=1.2;elseL->elem[i].price*=1.1;}
} */int main(){char no[20];char name[50];float price;SqList L;int sum; //图书总数目 cin>>sum;InitList(&L,sum);int cnt=0;while (cnt<sum){cnt++;cin>>no>>name>>price;CreateList(&L,no,name,price);}PrintList(&L,sum);return 0;
}

基于顺序存储结构的图书信息表的最贵图书的查找 

#include<iostream>
#include<sstream>
#include<stdlib.h>
#include<string.h>#define MAXSIZE 1000 //顺序表所能容纳的最大长度 
#define OK 0
typedef int status;using namespace std;typedef struct{char no[20];char name[50];float price;
}Book;typedef struct{Book* elem;int len;
}SqList; status InitList(SqList*L){L->elem=(Book*)malloc(MAXSIZE*sizeof(Book));if(!L->elem)exit(-1);L->len=0;return OK;
}status CreateList(SqList*L,char* no,char* name,float price){Book b;strcpy(b.no,no);strcpy(b.name,name);b.price=price;L->elem[L->len]=b;L->len++;return OK;
}status ExpensiveList(SqList*L1,SqList*L2,float max){for(int i=0;i<L1->len;i++){if(L1->elem[i].price==max){L2->elem[L2->len]=L1->elem[i];L2->len++;}}return OK;
}status PrintExpensive(SqList*L){//cout<<L->len<<endl;cout<<L->len<<endl;for(int i=0;i<L->len;i++){printf("%s %s %.2f\n", L->elem[i].no, L->elem[i].name, L->elem[i].price);}return OK;
}int main(){char no[20];char name[50];float price;SqList L; //总表 InitList(&L);int n;cin>>n;float max=0.0; //维护最高价 int cnt=0; while (cnt<n){cnt++; cin>>no>>name>>price;if(!strcmp(no,"0")&&!strcmp(name,"0")&&price==0.0)break;CreateList(&L,no,name,price);if(price>max)max=price;}SqList newL;InitList(&newL);ExpensiveList(&L,&newL,max);PrintExpensive(&newL);return 0;
}

基于顺序存储结构的图书信息表的最爱图书的查找(这个用了纯C++风格字符串)

这样就很容易用数组来存储待查喜爱书名表了(真的搞不清char* char[] string[]之间的赋值和比较TAT)

#include <iostream>
#include<iomanip>
using namespace std;
#define MAXSIZE 10000typedef struct 
{string no;string name;double price;
}Book;typedef struct
{Book *elem;int num;
}SqList;void Input(SqList &L)
{int n;int i=0;cin>>n;string a,b;double c;while(i<n){	cin>>a>>b>>c;if(i==n) break;L.elem[L.num].no=a;L.elem[L.num].name=b;L.elem[L.num].price=c;L.num++;i++;}return ;
}void Output(SqList &L)
{int i;for(i=0;i<L.num-1;i++)cout<<L.elem[i].no<<" "<<L.elem[i].name<<" "<<setiosflags(ios::fixed)<<setprecision(2)<<L.elem[i].price<<endl;cout<<L.elem[L.num-1].no<<" "<<L.elem[L.num-1].name<<" "<<setiosflags(ios::fixed)<<setprecision(2)<<L.elem[L.num-1].price<<endl;return ;
}void InitList(SqList &L)
{L.elem=new Book[MAXSIZE];if(!L.elem) return;L.num=0;return;
}void favourite(SqList &L)//查找同名的多个目标 
{int n;cin>>n;//多个查找目标 的数量string nam[n];	//用数组存储多个查找目标的名称 int loc[MAXSIZE]; //不同于flag数组,用loc数组配合计数器k从0存储多个目标的下标 int i;for(i=0;i<n;i++){cin>>nam[i];//输入多个查找目标 }int k=0;//计数:查找到的目标的个数 int j;for(j=0;j<n;j++)//正在查找第j个目标 {for(i=0;i<L.num;i++)//遍历顺序表,对目标j 进行查找 {if(nam[j]==L.elem[i].name){loc[k]=i;//找到目标,用k计数并依次存储目标的下标 k++;}}if(k==0)cout<<"Sorry,there is no your favourite!"<<endl;else{cout<<k<<endl;for(i=0;i<k;i++)cout<<L.elem[loc[i]].no<<" "<<L.elem[loc[i]].name<<" "<<setiosflags(ios::fixed)<<setprecision(2)<<L.elem[loc[i]].price<<endl;}k=0; }}int main()
{SqList L;InitList(L);Input(L); favourite(L); return 0;
}

基于顺序存储结构的图书信息表的最佳位置图书的查找

这和上一道类似,这两个都是用一个数组存储待查表,然后遍历,找到的就输出

很简单,注意函数的封装,让主函数整洁一点 

#include<iostream>
#include<string>   
#include<stdio.h>    
#include<iomanip>
#define MAXSIZE 1000    
#define OK 1 
#define OVERFLOW -2
using namespace std;typedef struct        
{string isbn;                string name;double price;
}Book;typedef struct        
{                        Book *elem;                         int length;                           
}SqList;            int InitList(SqList &L)                
{                                L.elem=new Book[MAXSIZE];    if(!L.elem)exit(OVERFLOW);                 L.length=0;        return OK;            
}int Input(SqList &L)         
{int i,number,count;cin>>number;for( i = 0 ; i<number; i++){ cin>>L.elem[i].isbn>>L.elem[i].name>>L.elem[i].price;L.length++;}return OK;   
}
int Locate(SqList L){int loc[MAXSIZE];int count,i;cin>>count;for ( i = 0 ;i<count ; i++)cin>>loc[i];for( i = 0 ; i<count ; i++){if(loc[i]<1||loc[i]>L.length)   cout<<"Sorry,the book on the best position doesn't exist!"<<endl;elsecout<<L.elem[loc[i]-1].isbn <<" "<< L.elem[loc[i]-1].name <<" "<<	fixed<<setprecision(2)<<L.elem[loc[i]-1].price<<endl;}return OK;
}int main()
{SqList L;                 InitList(L);           Input(L);               Locate(L);            return 0;
}

其中整体查找遍历的思想大同小异,复健ing...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519168.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

评测本地部署的语音识别模型

1 引言 最近&#xff0c;朋友给我发来了一段音频&#xff0c;想转录成文字&#xff0c;并使用大型润色文本。音频中的普通话带有一定的口音&#xff0c;并且讲解内容较为专业&#xff0c;所以一般的语音识别工具很难达到较高的识别率。 于是试用了两个大模型。Whisper 是目前…

Python之Web开发中级教程----搭建SSH环境

Python之Web开发中级教程----搭建SSH环境 SSH 的全称是 “安全的 Shell(Secure Shell)”&#xff0c;它功能强大、效率高&#xff0c;这个主流的网络协议用于在两个远程终端之间建立连接。让我们不要忘记它名称的“安全”部分&#xff0c;SSH 会加密所有的通信流量&#xff0c…

详解float函数类型转换

函数描述 float([x]) 函数将数字或数字的字符串表示形式转换为与它等效的有符号浮点数。如果参数x是一个字符串&#xff08;十进制表示的数字串&#xff09;&#xff0c;数字前面可以添加符号来表示正数&#xff0c;或负数。符号和数字之间不能出现空格&#xff0c;但是符号前…

spring-jpa

一、介绍 1.1ORM 1.2 Java Persistence API 放在javaee版本 优点 支持持久化复杂的Java对象&#xff0c;简化Java应用的对象持久化开发支持使用JPQL语言进行复杂的数据查询使用简单&#xff0c;支持使用注解定义对象关系表之间的映射规范标准化&#xff0c;由Java官 方统一规…

两天学会微服务网关Gateway-Gateway简介

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

Vue2+3

vue相关介绍 Vue的两种使用方式&#xff1a; 1、vue核心包开发 场景&#xff1a;局部模块改造 2、vue核心包&vue插件工程化开发 场景&#xff1a;整站开发 概念&#xff1a;vue是用于构建用户界面的渐进式框架 创建vue实例 创建Vue实例&#xff0c;初始化渲染步骤&am…

DAWG库下载出现的问题

今天配置一些环境出现了报错需要下载DAWG-0.8.0-cp38-cp38-win_amd64&#xff0c; PyPi官网https://pypi.org/project/DAWG/#files 只找到了mac版本&#xff0c;没发现windows版本 于是找到了非官方网址&#xff1a; https://www.lfd.uci.edu/~gohlke/pythonlibs/#dawg 下载DA…

字节后端实习 一面凉经

心脏和字节永远都在跳动 深圳还有没有大厂招后端日常实习生啊&#xff0c;求捞&#xff5e;&#xff08;boss小公司也不理我&#xff09; 很纠结要不要干脆直接面暑期实习&#xff0c;又怕因为没有后端实习经历&#xff0c;面不到大厂实习。死锁了

专访|云安全攻防:从理论到应用的全面探索

2023年11月&#xff0c;美国核研究实验室&#xff08;INL&#xff09;遭遇数据泄露。同年10月&#xff0c;索尼的员工数据在MOVEit攻击事件中被泄露。2024年2月&#xff0c;某知名制造商因云存储服务器的配置错误导致了敏感数据泄露。 这些事件表示企业必须重视云安全建设&…

前端性能优化 | CDN缓存

前言 CDN&#xff08;Content Delivery Network&#xff09;是一种分布式的网络架构&#xff0c;通过在全球各地部署节点服务器来快速传输和分发网络内容。CDN的主要目标是提供快速、可靠的内容传输&#xff0c;以提升用户体验。 本文主要从以下方面讲解CDN 什么是CDNCDN的作…

npm ERR! code ERR_INVALID_URL报错解决

这个报错是URL错误&#xff0c;要排除两个点 npm的registry有没有搞错&#xff0c;也就是npm源有没有搞错 打开文件C:/User/<用户名>/.npmrc查看npm设置查看registry的设置有没有格式错误正确设置格式&#xff1a;registry"https://registry.npmmirror.com"或…

Mysql案例之GROUP_CONCAT函数详解

Hello&#xff0c;大家好&#xff0c;我是灰小猿&#xff0c;一个超会写bug的程序员&#xff01; 今天这篇文章记录一个最近开发中遇到的mysql实战场景&#xff0c;觉得还挺典型的&#xff0c;就在此做一下记录。 先看一下举例场景&#xff1a; mysql中学生表与学科表通过关…