#include <iostream> #include <cstring> #define MAX 10001 using namespace std; typedef char ElemType; typedef struct List{ ElemType elem[MAX]; int Length; }SqList; int n=0; void compare(SqList P); SqList L[MAX]; int main(){ while(cin>>L[n].elem){ if(L[n].elem[0]=='#') break; L[n].Length=strlen(L[n].elem); n++; } SqList P; while(cin>>P.elem){ if(P.elem[0]=='#') break; P.Length=strlen(P.elem); compare(P); } } void compare(SqList P){ int cnt=0,i; for(i=0;i<n;i++){ if(strcmp(L[i].elem,P.elem)==0) cout<<P.elem<<" is correct"<<endl; cnt=1; break; } if(cnt==0){ cout<<P.elem<<":"; int j,k; for(i=0;i<n;i++){ if(P.Length-L[i].Length==1){ int nt=0; for(j=0,k=0;L[i].elem[j]!='\0';j++,k++){ if(L[i].elem[j]!=P.elem[k]){ nt++; k--; } if(nt>=2) break; } if(nt<=1) cout<<" "<<L[i].elem; } if(L[i].Length-P.Length==1){ int nt=0; for(j=0,k=0;P.elem[k]!='\0';j++,k++){ if(L[i].elem[j]!=P.elem[k]){ nt++; k--; } if(nt>=2) break; } if(nt<=1) cout<<" "<<L[i].elem; } if(P.Length-L[i].Length==0){ int nt=0; for(j=0,k=0;P.elem[j]!='\0';j++,k++){ if(P.elem[j]!=L[i].elem[k]){ nt++; } if(nt>=2) break; } if(nt<=1) cout<<" "<<L[i].elem; } } cout<<endl; } }
时间: 2024-04-23 22:21:37 浏览: 62
这段代码是一个单词矫正程序,它会将用户输入的单词与一个预设的单词库进行比较,如果匹配则输出 "is correct",否则输出与用户输入单词差别最小的单词。该程序使用了 C++ 的结构体和数组来存储单词库中的每个单词的信息,使用了字符串比较函数 strcmp() 来比较单词是否相同,使用了循环来遍历单词库中的每个单词,并对每个单词与用户输入的单词进行匹配。
相关问题
/ #include <iostream>#include <stdio.h>#define MAXSIZE 10typedef int ElemType;typedef struct{ ElemType *elem; int length;}SqList;
这段代码是在C++中定义了一个名为`SqList`的结构体,它是一个动态数组,用于存储元素。以下是各个部分的解释:
1. `#include <iostream>` 和 `#include <stdio.h>`:分别包含了输入输出流库iostream和标准输入输出库stdio.h,iostream通常用于控制台输出和用户交互,而stdio.h包含了一些基本的文件操作函数。
2. `#define MAXSIZE 10`:这是一个预处理器宏定义,表示动态数组的最大容量是10个元素。
3. `typedef int ElemType;`:这行定义了一个新的类型别名`ElemType`,将整型(int)简称为`ElemType`,以便于在后面的代码中引用。
4. `typedef struct` 开始定义了一个名为`SqList`的结构体。结构体是一种自定义的数据类型,可以组合不同类型的数据成员。
5. `{ ... }` 内部包含了结构体的两个数据成员:
- `ElemType *elem;`:这是一个指向`ElemType`类型的指针,用于存储数组元素的地址。
- `int length;`:表示数组的实际长度,用于记录有多少个有效元素。
6. 结构体结束的}``关闭了定义。
要创建这个结构体的对象并操作它,你可以按照以下方式使用:
```cpp
SqList myList;
myList.elem = new ElemType[MAXSIZE]; // 分配内存
myList.length = 5; // 设置初始长度
// 使用 elem 指针存储和访问元素
myList.elem[0] = 10;
// 等待实际应用中对length的操作
```
顺序表插入操作 #include<iostream> using namespace std; #
顺序表插入操作是指在顺序表的第i个位置插入元素e,并将原来位于第i个位置及其之后的元素都后移一个位置。具体实现可以使用一个循环将第i个位置及其之后的元素后移,然后将元素e插入到第i个位置。以下是一个C++实现的示例代码:
```
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int datatype;
typedef struct {
datatype *elem;
int length;
} SqList;
int ListInsert_Sq(SqList &L, int i, datatype e) {
if ((i < 1) || (i > L.length + 1)) {
return ERROR;
}
if (L.length >= MAXSIZE) {
return ERROR;
}
for (int j = L.length; j >= i; j--) {
L.elem[j] = L.elem[j - 1];
}
L.elem[i - 1] = e;
L.length++;
return OK;
}
```
--相关问题--:
阅读全文