《电路计算C++与MATLAB》学习笔记(四)

来源:互联网 发布:远东水利造价软件 编辑:程序博客网 时间:2024/06/02 05:59

(一)梯形网络输入电阻的计算程序

#include "stdafx.h"#include<iostream>using namespace std;typedef double vector[20];/*vector是有20个元素的实型一维数组类型名,不是类*/double value(vector a, int n)//a是实型一维数组名,不是vector的对象,数组a是非动态的,有20个元素{double val;//以下为递归公式if (n == 1)val = a[1];else if (n > 1)val = 1.0 / value(a, n - 1) + a[n];return (val);}/*value函数*/void main(){int n, i; double value1; vector a;cout << "Enter n and G or R in array a[i]" << endl;cin >> n;//梯形网络电阻数cout << "n=" << n << endl;for (i = 1; i <= n; i++)cin >> a[i];//输入a[i],i=1,2...nfor (i = 1; i <= n; i++)cout << "a[" << i << "]=" << a[i] << endl;//及时响应打印所输入的数据是编程的好习惯value1 = value(a, n);//调用value函数cout << "value=" << value1 << endl;}/*main函数*/

(二)问题与总结

总结:采用递归函数计算输入电阻,核心是连分式的求值。原本以为电阻个数必须为偶数,后来发现不需要为偶数也满足条件

问题

typedef double vector[20];

此处vector是一维数组类型名称,不太理解,查找书籍

typedef属于自定义数据类型关键字,在编程中目的一般有两个,需要注意的是typedef只是定义类型名,不能用来定义变量

  • 给变量一个易记且意义明确的新名字
  • 简化一些比较复杂的类型声明
  • a、定义一个类型名代表一个结构体类型
  • b、定义数组类型或指针类型

本例为定义数组类型

typedef int Num[10];//定义Num为整型数组类型,包含10个元素Num c,d;//c,d为包含10个元素的整型数组变量

另外数组可以作为函数的参数,形参或者实参。

a、当函数要对一批数据进行处理时,定义函数时可以采用数组作为函数的形参,数组名代表数组存储区域的首地址,因此调用函数时实参应该采用数组名或者地址值

b、数组元素相当于单个变量,因此数组元素和含有数组元素的表达式同样可以作为函数的实参,函数调用时,系统将数组元素的值传给形参,形参的变化不会影响实参数组元素,即参数值传递是单向的

修改如下,经过debug发现也能输出正确的结果

#define N 20double value(double a[], int n)void main(){    int n, i; double value1;     double a[N];    cout << "Enter n and G or R in array a[i]" << endl;    cin >> n;//梯形网络电阻数为偶数,n<=20&&n>=2    cout << "n=" << n << endl;    for (i = 1; i <= n; i++)cin >> a[i];//输入a[i],i=1,2...n    for (i = 1; i <= n; i++)cout << "a[" << i << "]=" << a[i] << endl;//及时响应打印所输入的数据是编程的好习惯    value1 = value(a, n);//调用value函数    cout << "value=" << value1 << endl;}/*main函数*/


阅读全文
0 0
原创粉丝点击