页面“每天一命令之telnet”与“求圆的面积”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
(导入1个版本)
 
docker>Evan
 
第1行: 第1行:
=要注意 =
+
增量式开发
 +
  编写一个程序求圆的面积,圆的半径以两个端点的坐标(x1,y1) 和(x2,y2) 给出. 首先 分析和分解问题 ,把大问题分解成小问题,再对小问题分别求解
 +
 
 +
=初始版本=
 
<pre>
 
<pre>
 +
#include <math.h>
 +
#include <stdio.h>
 +
double distance(double x1, double y1, double x2, double y2)
 +
{
 +
      double dx = x2 - x1;
 +
        double dy = y2 - y1;
 +
//        printf("dx is %f\n dy is %f\n",dx,dy);
 +
        //printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
 +
        double dsquared = dx * dx + dy * dy;
 +
//        printf("dsquared is %f\n", dsquared);
 +
        double result = sqrt(dsquared);
 +
        return result;
 +
}
 +
 +
double area(double radius)
 +
{
 +
        return 3.1416 * radius * radius;
 +
}
 +
 +
int  main(void)
 +
{
 +
//      printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
 +
// distance is 5.000000
 +
//      printf("area is %f\n",);
 +
      double radius=distance(1.0, 2.0, 4.0,6.0);
 +
      double result = area(radius);
 +
      printf(" area is %f\n",result);
 +
      // area is 78.540000
 +
 +
      return 0;
 +
}
 +
 +
/****
 +
evan@kalipc:~/github/learn-c/one-stop-c$ gcc -Wall  p57.c
 +
/tmp/ccbMqPPq.o:在函数‘distance’中:
 +
p57.c:(.text+0x69):对‘sqrt’未定义的引用
 +
collect2: error: ld returned 1 exit status
 +
 +
gcc -Wall -lm  p57.c
 +
 +
***/
 +
 +
</pre>
 +
 +
=改进=
 +
<pre>#include <math.h>
 +
#include <stdio.h>
 +
double distance(double x1, double y1, double x2, double y2)
 +
{
 +
      double dx = x2 - x1;
 +
        double dy = y2 - y1;
 +
//        printf("dx is %f\n dy is %f\n",dx,dy);
 +
        //printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
 +
        double dsquared = dx * dx + dy * dy;
 +
//        printf("dsquared is %f\n", dsquared);
 +
        double result = sqrt(dsquared);
 +
        return result;
 +
}
 +
 +
double area(double radius)
 +
{
 +
        return 3.1416 * radius * radius;
 +
}
  
#这个其实是机房开了端口 但是程序哥自己加的程序没起来 所以 refused 不是telnet 不通
+
double area_point(double x1, double y1, double x2, double y2)
evan@freebsd-512mb-sfo2-01:~ % telnet 15.66.11.15 9096
+
{
Trying 148.66.11.153...
+
        return area(distance(x1, y1, x2, y2));
telnet: connect to address 15.66.11.15: Connection refused
+
}
 +
int  main(void)
 +
{
 +
//      printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
 +
// distance is 5.000000
 +
// radius=distance(1.0, 2.0, 4.0,6.0);
 +
        //    double result = area(radius);
 +
      printf(" area is %f\n",area_point(1.0, 2.x, 4.0, 6.0));
 +
      // area is 78.540000
 +
      return 0;
 +
}
 
</pre>
 
</pre>
  
[[category:ops]] [[category:shell]]
+
[[category:c]]

2018年3月20日 (二) 04:00的版本

增量式开发
 编写一个程序求圆的面积,圆的半径以两个端点的坐标(x1,y1) 和(x2,y2) 给出. 首先 分析和分解问题 ,把大问题分解成小问题,再对小问题分别求解

初始版本

#include <math.h>
#include <stdio.h>
double distance(double x1, double y1, double x2, double y2)
{
       double dx = x2 - x1;
        double dy = y2 - y1;
//        printf("dx is %f\n dy is %f\n",dx,dy);
        //printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
        double dsquared = dx * dx + dy * dy;
//        printf("dsquared is %f\n", dsquared);
        double result = sqrt(dsquared);
        return result;
}

double area(double radius)
{
        return 3.1416 * radius * radius;
}

int  main(void)
{
//       printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
// distance is 5.000000
//       printf("area is %f\n",);
       double radius=distance(1.0, 2.0, 4.0,6.0);
       double result = area(radius);
       printf(" area is %f\n",result);
       // area is 78.540000

       return 0;
}

/****
evan@kalipc:~/github/learn-c/one-stop-c$ gcc -Wall  p57.c 
/tmp/ccbMqPPq.o:在函数‘distance’中:
p57.c:(.text+0x69):对‘sqrt’未定义的引用
collect2: error: ld returned 1 exit status

gcc -Wall -lm   p57.c 

***/

改进

#include <math.h>
#include <stdio.h>
double distance(double x1, double y1, double x2, double y2)
{
       double dx = x2 - x1;
        double dy = y2 - y1;
//        printf("dx is %f\n dy is %f\n",dx,dy);
        //printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
        double dsquared = dx * dx + dy * dy;
//        printf("dsquared is %f\n", dsquared);
        double result = sqrt(dsquared);
        return result;
}

double area(double radius)
{
        return 3.1416 * radius * radius;
}

double area_point(double x1,  double y1, double x2, double y2)
{
        return area(distance(x1, y1, x2, y2));
}
int  main(void)
{
//       printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
// distance is 5.000000
// radius=distance(1.0, 2.0, 4.0,6.0);
        //     double result = area(radius);
       printf(" area is %f\n",area_point(1.0, 2.x, 4.0, 6.0));
       // area is 78.540000
       return 0;
}