C++:循环中的除法问题

C++ : Issue with division in loop

本文关键字:除法 问题 循环 C++      更新时间:2023-10-16

我正在学习C ++,第一学期的学生,

我正在尝试循环划分 2 个数组并将其结果存储在不起作用的第 3 个数组中。除除法外的所有其他操作都有效,以下是我的代码

#include<iostream>
using namespace std;
int main(){
int arr[6]={10,20,30,40,50,06};
int arr2[6]={10,20,20,30,40,50};
int input;
cout<<"please enter 1 for addition.... "<<endl;
cout<<"please enter 2 for subtraction.... "<<endl;
cout<<"please enter 3 for multiplication.... "<<endl;
cout<<"please enter 4 for division.... "<<endl;
cout<<"please enter 5 for %age...."<<endl;
cin>>input;
float arr3[6];
int i,j,k,l,m;
switch(input){
case 1: 
 for(i=0;i<6;i++){
 arr3[i]=arr[i]+arr2[i]  ;
  cout<<arr3[i]<<endl;
 }
 break;
case 2:
 for(j=0;j<6;j++){
  arr3[j]=arr[j]-arr2[j];
  cout<<arr3[j]<<endl;
  }
  break;
case 3:
 for(k=0;k<6;k++){
  arr3[k]=arr[k]*arr2[k];
  cout<<arr3[k]<<endl;
 }
 break;
case 4:
 for(l=0;l<6;l++){
  arr3[l]=arr[l]/arr2[l];
  cout<<arr3[l]<<endl;
 }
 break;
case 5:
 for(m=0;m<6;m++){
  arr3[m]=arr[m]/(arr[m]+arr2[m]);
  cout<<arr3[m]<<endl;
 }
 break;
}
}

对于除法输出为:

1
1
1
1
1
0

我厌倦了将其数据类型设置为 dobule 和 float,但它不起作用需要您的帮助。

您需要在除法之前强制转换操作数,否则它将使用整数除法,其小数被削掉。 使用 c 样式转换,它看起来像:

arr3[l]= (double)arr[l] / (double)arr2[l];

请注意,C++有自己的转换语法,但是我已经有一段时间没有使用它们了,并且不记得确切的了。我认为它看起来像:

arr3[l] = static_cast<double>(arr[l])
          / static_cast<double>(arr2[l]);