忧默的小男孩 2022-08-09 22:32 采纳率: 92.6%
浏览 224
已结题

浮点数怎么存入数组再拿出来计算?

题目要求把随意输入的三个浮点数按照从大到小的顺序排列,我就想把三个浮点数存入数组,然后递归一下求最大值和最小值,然后去三个数相加再减去最大值和最小值求中间值(见注释部分),但是不知道怎么把浮点数存入数组,貌似没有float类型的浮点数吧,用string貌似也不行,string存入的不是一个字符串吗,char就更不用提了,能不能帮忙操作一下,源代码在下边,已经跑过了,把if操作的abc按顺序排列注释掉就可以自己操作了。

img

img


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>

using namespace std;

int main(){
    float a,b,c,d;
    cin >> a >> b >> c;
/*  float a[3]={a,b,c};             //怎么把浮点存入数组再拿出来计算
    string a[3]={a,b,c};
    int max=a[0],min=a[0];
    for(int i=0;i<3,i++){
        max=((max+a[i]+abs(max-a[i]))/2;
        min=((min+a[i]-abs(min-a[i]))/2;
    }
    b=(a+b+c-max-min)/2;
    a=max;
    c=min;
 */ 
    if(a>=b){
        if(b>=c)
        ;
        else if(a>=c){
        d=b;
        b=c;
        c=d;
        }else{
        d=a;
        a=c;
        c=b;
        b=d;
        }
        
    }else {
        if(b<=c){
        d=a;
        a=c;
        c=d;
        }else if(a<=c){
        d=b;
        b=c;
        c=a;
        a=d;
        }
        else{
            d=b;
            b=a;
            a=d;
        }
        
        
    }
 
 
    if(b+c<=a)
        cout << "NAO FORMA TRIANGULO" << endl;
    else {
        if(a*a==b*b+c*c)
        cout << "TRIANGULO RETANGULO" << endl;
        else if(a*a>b*b+c*c)
        cout << "TRIANGULO OBTUSANGULO" << endl;
        else 
        cout << "TRIANGULO ACUTANGULO" << endl;
    }
    
    if(b+c>a){
        if(a==b && b==c)
        cout << "TRIANGULO EQUILATERO" << endl;
        
        if(a==b && a!=c || a==c && a!=b || b==c && b!=a)
        cout << "TRIANGULO ISOSCELES" << endl;
    }
}
  • 写回答

4条回答 默认 最新

  • 关注

    这样啊, 注意数组名不能和a变量重名

        float a,b,c,d;
        cin >> a >> b >> c;
        float arr[3];
        arr[0]=a;
        arr[1]=b;
        arr[2]=c;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 快乐小土狗 2022-08-09 22:46
    关注

    貌似没有float类型的浮点数??
    这是啥意思啊?

    float a[3] 不就是浮点数的数组??
    你是想用双精度的浮点数double??

    https://blog.csdn.net/dyw_666666/article/details/81784944

    评论
  • it_hao528 2022-08-09 22:49
    关注

    直接使用float数组来接收数据即可,代码参考如下:

    int main() {
        float a[3];
        cin >> a[0] >> a[1] >> a[2];
        float t;
        for (int i = 0; i < 2; i++) {
            for (int j = i + 1; j < 3; j++) {
                if (a[i] < a[j]) {
                    t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
        }
        if (a[0] >= a[1] + a[2]) {
            cout << "NAO FORMA TRIANGULO" << endl;
        } else {
            if (a[0] * a[0] == a[1] * a[1] + a[2] * a[2]) {
                cout << "TRIANGULO RETANGULO" << endl;
            } else if (a[0] * a[0] > a[1] * a[1] + a[2] * a[2]) {
                cout << "TRIANGULO OBTUSANGULO" << endl;
            } else if (a[0] * a[0] < a[1] * a[1] + a[2] * a[2]) {
                cout << "TRIANGULO ACUTANGULO" << endl;
            }
            if (a[0] * a[0] == a[1] * a[1] && a[0] * a[0] == a[2] * a[2]) {
                cout << "TRIANGULO EQUILATERO" << endl;
            } else if (a[0] * a[0] == a[1] * a[1] || a[0] * a[0] == a[2] * a[2] || a[1] * a[1] == a[2] * a[2]) {
                cout << "TRIANGULO ISOSCELES" << endl;
            }
        }
        return 0;
    }
    
    评论
  • 有问必答小助手 2022-08-09 23:08
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月9日
  • 已采纳回答 8月9日
  • 创建了问题 8月9日

悬赏问题

  • ¥15 vue引入sdk后的回调问题
  • ¥15 求一个智能家居控制的代码
  • ¥15 ad软件 pcb布线pcb规则约束编辑器where the object matpcb布线pcb规则约束编辑器where the object matchs怎么没有+15v只有no net
  • ¥15 虚拟机vmnet8 nat模式可以ping通主机,主机也能ping通虚拟机,但是vmnet8一直未识别怎么解决,其次诊断结果就是默认网关不可用
  • ¥20 求各位能用我能理解的话回答超级简单的一些问题
  • ¥15 yolov5双目识别输出坐标代码报错
  • ¥15 这个代码有什么语法错误
  • ¥15 给予STM32按键中断与串口通信
  • ¥15 使用QT实现can通信
  • ¥15 关于sp验证的一些东西,求告知如何解决,