计算两个向量的点积
程序员文章站
2022-04-01 07:56:33
...
描述
给定两个向量,计算它们的点积(内积)。
输入
输入数据有若干行。每行上有两个向量(维数皆不超过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
C实现:
#include<stdio.h>
int GetData(int *p,char c,int f){
int n=0;
int i=0;
while(c!=')'){
if(c=='-'){
scanf("%d",p+i);
*(p+i)=0-*(p+i);
i++;
}else if(c=='('||c==' '){
scanf("%d",p+i);
i++;
}else if(c==','){
n++;
}else if(c==' '){
scanf("%d",p+i);
i++;
}
scanf("%c",&c);
if(c=='\n') return 0;
}
*(p+i)='\0';
return n+1;
}
int main(){
int a1[22],a2[22];
double sum;
int n,m,j,flag;
j=1;
flag=1;
char c;
while(scanf("%c",&c)==1){
sum=0.0;
n=GetData(a1,c,flag);
if(n==0) break;
scanf("%c",&c);
scanf("%c",&c);
flag=1-flag;
m=GetData(a2,c,flag);
flag=1-flag;
if(m==n){
for(int i=0;i<n;i++) sum+=a1[i]*a2[i];
printf("Case %d: %.2lf\n",j,sum);
}else
printf("Case %d: none\n",j);
j++;
}
return 0;
}
上一篇: opencv 图像直方图匹配
下一篇: css中元素的变化