描述
给定两个向量,计算它们的点积(内积)。
输入
输入数据有若干行。每行上有两个向量(维数皆不超过20),对应一种情形。
输出
对于每一种情形,先输出"Case #: "(#为序号,从1起),然后输出结果(保留2位小数),当维数不同时,输出none。
样例输入1
(1, 2, 3, 4, 5) (5, 4, 3, 2, 1) (1, 2) (-2, 1) (1, 2, 3) (1, 2)
样例输出1
Case 1: 35.00 Case 2: 0.00 Case 3: none
初学者的第一篇博客 对原作者拙劣的模仿
代码与转载内容大体相同,对原代码进行了微调:删减了部分输入函数段内容,略微精简了case后数字的输出
#include <stdio.h>
#define N 20
int shuru(int *p,char a,int b){
int i=0;
int n=0;
while(a!=')'){
if(a=='('||a==' '){
scanf("%d",p+i);
i++;
}
else if(a==','){
n++;
}
else if(a=='-'){
scanf("%d",p+i);
*(p+i)=-*(p+i);
i++;
}
scanf("%c",&a);
if(a=='\n') return 0;
}
*(p+i)='\0';
return n+1;
}
int main(){
int p,q,i;
int x=0;
int flag=1;
char c;
int a[N];
int b[N];
double ans;
while(scanf("%c",&c)==1){
ans=0.0;
p=shuru(a,c,flag);
if(p==0) break;
scanf("%c",&c);
scanf("%c",&c);
flag=1-flag;
q=shuru(b,c,flag);
flag=1-flag;
if(p==q){
for(i=0;i<p;i++){
ans+=a[i]*b[i];
}
printf("Case %d: %.2lf\n",++x,ans);
}
else printf("Case %d: none\n",++x);
}
return 0;
}