- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须编写一个能够读取 .txt 文件的程序。在此 .txt 文件中是传感器上激光束的测量结果,传感器前面有 Blade 阻挡光束。慢慢地, Blade 下降并测量光强度。我必须编写一个程序,用 txt 文件中的测量值计算激光束的宽度(给出了公式,(((0,9*max)-(0,1*max))/1,28 )。
但是如果我在没有函数的情况下执行此操作,它就可以正常工作。但这个程序有一些要求。我必须使用函数。你可能会认为我的程序有点狡猾,但这主要是因为我必须这样做。如果有些事情令人困惑,请向我询问更多解释,我会立即给您。
这是我当前的程序:
#include <stdio.h>
#define ROW 45
#define COLUMN 2
FILE *measurements;
float x,width, intensity, a[ROW][COLUMN]={0}, total_2 = 0, maximum = 0;
float max = 0, min = 0, difference_1 = 0, difference_2 = 0, w = 0;
float background=0, amount=0, total_1=0;
int menu=0, check_1 = 0, check_2 = 0, min_2 = 0, max_2 = 0;
//Functions
float background_radiation(float a[ROW][COLUMN]);
float average_maximum(float a[ROW][COLUMN]);
float beam_width(float a[ROW][COLUMN], float maximum);
//Integers for loops
int i = 0, r = 0, k = 0, d = 0;
main()
{
measurements = fopen("PATH\\TO\\TEXT\\FILE\\.txt", "r");
rewind(measurements);
//Menu
printf("Menu: \n\n");
printf("1. Calculate background_radiation: \n");
printf("2. Calculate average maximum signal: \n");
printf("3. Calculate beam width: \n");
printf("4. All measurements: \n");
printf("5. Quit \n\n");
printf("\nChoose:\n");
scanf("%d", &menu);
rewind(measurements);
//All data in array
while(!feof(measurements))
{
for(i=0; i<45; i++)
{
fscanf(measurements, "%f%f", &a[i][0], &a[i][1]);
}
}
//Menu loop
while (menu!=5)
{
switch(menu)
{
case 1: printf("\n------ background_radiation ------ \n");
//case check
check_1 = 1;
x= background_radiation(a);
for(i=0; i<45; i=i+1)
{
a[i][1]=a[i][1]-x;
}
break;
case 2: printf("\n------ Maximale signaal ------ \n");
//case check
check_2 = 1;
y = average_maximum(a);
break;
case 3: printf("\n------ beam_width ------ \n");
//check if the cases 1 and 2 are used
if(check_1 == 1 && check_2 == 1)
{
z = beam_width(a, y);
}
else
{
//If case 1 and 2 aren't used
printf("The backgroundradiation and maximum output aren't calculated\n");
printf("You have 2 options:\n");
printf("1. Use the first and last measurements to calculate the beamwidth.\n");
printf("2. Choose an other option of the menu.\n");
scanf("%d", &d);
//Print the beam width
if(d==1)
{
printf("\nBeamwidth:\t%f mm", ((a[0][44]-a[0][0])/1.28));
}
}
break;
case 4: printf("\n------------ Measurements ------------\n\n");
rewind(measurements);
while(!feof(measurements))
{
fscanf(measurements, "%f%f", &a[i][0], &a[i][1]);
printf("\t%2.2f mm\t\t%2.2f V\n", a[i][0], a[i][1]);
}
break;
}
rewind(measurements);
printf("\n\nChoose an option: ");
scanf("%d", &menu);
}
fclose(measurements);
return 0;
fflush(stdin);
}
float background_radiation(float a[ROW][COLUMN])
{
printf("\nHow many numbers would you like to take an average?\n");
scanf("%d", &amount);
for(i=0; i<amount; i++)
{
total_1 = total_1 + a[i][1];
}
//Calculate average
background = total_1 / amount;
printf("\nThe average background_radiation:\n%2.2f\n", background);
return(background);
}
float average_maximum(float a[ROW][COLUMN])
{
printf("\nHow many numbers would you like to take an average?\n");
scanf("%d", &amount);
for(i=44; i>(44-amount); i--)
{
total_2 = total_2 + a[i][1];
}
//Calculate average
maximum = total_2 / amount;
printf("\nAverage maxixum signal:\n%2.2f\n", maximum);
return(maximum);
}
float beam_width(float a[ROW][COLUMN], float y)
{
max = 0.9 * y;
min = 0.1 * y;
//Find a point in array
for(r=0; r<45; r++)
{
difference_1 = max - a[r][1];
if ((difference_1 < difference_2) && difference_1 > 0)
{
max_2 = r;
}
difference_2 = difference_1;
}
difference_2 = 100;
for(k=0; k<45; k++)
{
difference_1 = min - a[k][1];
if (difference_1 < difference_2 && difference_1>0)
{
min_2 = k;
}
difference_2 = difference_1;
}
//calculate width with the given formula
w = (a[max_2][0] - a[min_2][0]) / 1.28;
printf("\nBeamwidth:\t%2.2f", w);
return(w);
}
文本文件由两列和 45 行组成。第一列是 Blade 向下的高度。所以如果它是0。这意味着 Blade 完全挡住了光束。第二列是光强度。由于传感器周围的光(背景辐射),它始终具有一个值。这是文本文件:
0.00 0.25
0.10 0.20
0.20 0.18
0.30 0.21
0.40 0.23
0.50 0.30
0.60 0.30
0.70 0.40
0.80 0.50
0.90 0.80
1.00 1.30
1.10 1.80
1.20 2.30
1.30 3.80
1.40 4.50
1.50 6.30
1.60 8.04
1.70 10.55
1.80 13.10
1.90 16.20
2.00 19.80
2.10 22.56
2.20 25.10
2.30 29.90
2.40 31.20
2.50 33.44
2.60 36.80
2.70 41.05
2.80 40.83
2.90 43.40
3.00 44.44
3.10 44.90
3.20 45.40
3.30 46.00
3.40 46.30
3.50 46.50
3.60 46.60
3.70 46.50
3.80 46.35
3.90 46.40
4.00 46.60
4.10 46.30
4.20 46.00
4.30 45.90
4.40 46.00
您可能会认为第二列在开始时下降很奇怪,但这与测量的准确性有关。
非常感谢您!
什么不起作用?:
所有功能(background_radiation、average_maximum、beam_width)都不起作用。
情况 1 的输出(总是):
1.#J
案例 2 的输出(始终):
0.00
案例3的输出
如果使用情况 1 和 2:
0.00
其他
工作正常
最佳答案
当 y
和 z
未定义时,此代码不会编译。在这些变量前面添加 float
并更改运行路径,我发现以下错误:
首先,将数据加载到 a
对我来说失败了:
a[ROW][COLUMN] = {0}
产生了一个垃圾数组,所以我放弃了初始化以获得:
a[ROW][COLUMN]
允许数据加载工作。
下一个问题是您希望将 amount
视为 float 和整数。在background_radiation()中,我为循环创建了一个额外的参数并更改了scanf():
scanf("%f", &amount);
int max = (int)amount;
for(i=0; i<max; i++)
在这些更改之后,如果我输入“12.0”作为 amount
float ,我会得到以下输出:
------ background_radiation ------
How many numbers would you like to take an average?
12.0
The average background_radiation:
0.54
average_maximum() 可以类似地工作。 beam_width() 可能遇到数据加载问题。它似乎对我来说工作得很好。
关于c - 功能无法按照我希望的那样工作 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401304/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!