1

電子機器を扱うときに行う微積分を自動化しようとしました。残念ながら、すべての結果が 0.000000 であるため、私のコードは機能しないようです (以下を参照)。

これが私が試したことです: - double または int の変数 - 計算部分を削除し、入力から出力を取得しようとします - scanf_s と scan_f。

これらのどちらも機能しませんでした。奇妙なのは、最後のprintfがbase_vを出力することさえできなかったことです(たとえば)。

コード自体は次のとおりです。

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"

int _tmain(int argc, _TCHAR* argv[])
{
    // variable declaration
    double base_r, mod_r, base_v, mod_v=0;
    double coeff=1;
    int asdf=1;

    // welcome message
    printf("vMod calculator\n");
    printf("Please enter resistances in Ohms and voltages in Volts\n");

    // retrieve info about vmod
    printf("Enter base resistance\n");
    scanf_s("%f", &base_r);
    printf("Enter modified resistance\n");
    scanf_s("%f", &mod_r);
    printf("Enter base voltage\n");
    scanf_s("%f", &base_v);

    // calculus of modified voltage
    coeff=asdf*((1/base_r)+(1/mod_r));
    mod_v=base_v*base_r*coeff;


    // results
    printf("Base voltage: %f \n", &base_v);
    printf("Base resistance: %f \n", &base_r);
    printf("Modified voltage: %f \n", &mod_v);
    printf("Modified resistance: %f \n", &mod_r);

    system("pause");

    return 0;

}

微積分がわからない場合は、次の画像を参照してください: http://pbrd.co/1g6KWLp

ありがとう

4

4 に答える 4

4

value の代わりにprintf引数のアドレスを渡しています。要するに、手放します&base_vbase_v&

printf("Base voltage: %f \n", base_v);
printf("Base resistance: %f \n", base_r);
printf("Modified voltage: %f \n", mod_v);
printf("Modified resistance: %f \n", mod_r);
于 2013-10-11T19:35:38.027 に答える
3

まず、ポインターを浮動小数点数として出力するため、未定義の動作があります。

于 2013-10-11T19:35:44.907 に答える
1

printfアドレスではなく変数を直接受け取ります。

printf("Base voltage: %f \n", base_v);
printf("Base resistance: %f \n", base_r);
printf("Modified voltage: %f \n", mod_v);
printf("Modified resistance: %f \n", mod_r);
于 2013-10-11T19:36:03.183 に答える