Почему я получаю 0 в качестве выхода? Вы можете найти ошибку? - PullRequest
0 голосов
/ 08 июня 2019

Проблема заключается в вводе двух сторон и включенного угла для 6 различных треугольных графиков.Нам нужно найти площадь каждого из этих графиков.

Я написал этот код, используя двумерные и одномерные массивы и передавая двумерный массив в функцию void, которая печатает области каждого изучастки.Это входы и их соответствующие выводы, которые я получил.Я использую терминал Ubuntu 18.04 LTS.

РАБОТА ПРОГРАММЫ

Ввод:

1
137.4
80.9
0.78
2
155.2  
92.62
0.89
3
149.3
97.93
1.35
4
160.0
100.25
9.00
5
155.6
68.95
1.25
6
149.7
120.0
1.75

Выход:

Entered Data is:
1.000000 137.399994 80.900002 0.780000 
2.000000 155.199997 92.620003 0.890000 
3.000000 149.300003 97.930000 1.350000 
4.000000 160.000000 100.250000 9.000000 
5.000000 155.600006 68.949997 1.250000 
6.000000 149.699997 120.000000 1.750000 

Area of plot 1 is: 0.000000.
Area of plot 2 is: 0.000000.
Area of plot 3 is: 0.000000.
Area of plot 4 is: 0.000000.
Area of plot 5 is: 0.000000.
Area of plot 6 is: 0.000000.

Программа:

#include <stdio.h>
#include <math.h>
void area(float p[6][4],int m,int n);
int main()
{
    float a[6][4];
    int i,j;
    printf("Enter the plot no.,two sides and included angle.\n");
        for(i=0;i<6;i++)
        {
        for(j=0;j<4;j++)
        {   
            scanf("%f",&a[i][j]);
        }
    }
    printf("Entered Data is:\n");
    for(i=0;i<6;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("%f ",a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    area(a,6,4);
    return 0;    
}

void area(float p[6][4],int m,int n)
{

    float ar[6];
    int i;
    for(i=0;i<6;i++)
    {
        ar[i] = (1/2)*(p[i][1])*(p[i][2])*sin(p[i][3]);
        printf("Area of plot %d is: %f.\n",i+1,ar[i]);
    }
}

Ответы [ 2 ]

3 голосов
/ 08 июня 2019

В этом выражении:

ar[i] = (1/2)*(p[i][1])*(p[i][2])*sin(p[i][3]);

(1/2) оценивается как ноль, что означает, что все получается как ноль (потому что ноль раз все равно нулю).Причина, по которой он равен нулю, состоит в том, что это целочисленное деление, которое дает усеченное целое число в качестве результата.Вместо этого используйте 0.5.

0 голосов
/ 08 июня 2019
(1.0/2.0) * (p[i][1]) * (p[i][2]) * sin(p[i][3]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...