【特征值处理】
【特征值处理】
💐The Begin💐点点关注,收藏不迷路💐 |
在处理机器学习的相关数据时,需要把特征值与目标组成二组,请您输出处理后的结果。
输入
第一行输入特征值向量,第二行输入目标向量。
输出
输出处理后的结果。
样例输入
1 2 3 4 5 6 7
a v b k d g h
样例输出
[(1, 'a'), (2, 'v'), (3, 'b'), (4, 'k'), (5, 'd'), (6, 'g'), (7, 'h')]
#include <stdio.h>
#include <stdlib.h>// 结构体定义用于存储特征值与目标的组合
typedef struct {int feature;char target;
} FeatureTargetPair;// 函数用于处理输入并输出组合结果
void processData() {int num_features;int *features;char *targets;// 读取特征值向量,先确定特征值的数量num_features = 0;int temp;// 正确读取特征值向量,以空格作为分隔符while (scanf("%d", &temp) == 1) {num_features++;}// 回退输入流指针,以便重新读取特征值向量和目标向量(这里可能不需要回退,先注释掉试试)// if (num_features > 0) {// ungetc(' ', stdin);// ungetc(temp + '0', stdin);// }// 动态分配特征值数组和目标值数组的内存features = (int *)malloc(num_features * sizeof(int));targets = (char *)malloc(num_features * sizeof(char));// 重新设置输入流指针到开头(因为之前读取特征值向量到了末尾)rewind(stdin);// 重新正确读取特征值向量for (int i = 0; i < num_features; i++) {scanf("%d", &features[i]);}// 读取目标向量,确保与特征值一一对应for (int i = 0; i < num_features; i++) {scanf(" %c", &targets[i]);}FeatureTargetPair *pairs = (FeatureTargetPair *)malloc(num_features * sizeof(FeatureTargetPair));// 将特征值与目标组合成结构体数组for (int i = 0; i < num_features; i++) {pairs[i].feature = features[i];pairs[i].target = targets[i];}// 输出组合后的结果printf("[");for (int i = 0; i < num_features; i++) {if (i > 0) {printf(", ");}printf("(%d, '%c')", pairs[i].feature, pairs[i].target);}printf("]\n");// 释放动态分配的内存free(features);free(targets);free(pairs);
}int main() {processData();return 0;
}
💐The End💐点点关注,收藏不迷路💐 |