【特征值处理】
💐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💐点点关注,收藏不迷路💐
|