Вычислить гипотенузу прямоугольного треугольника, используя массив в C - PullRequest
0 голосов
/ 04 ноября 2018

У меня проблемы с заданием, и я надеюсь, что кто-то там сможет помочь. Цель состоит в том, чтобы использовать многомерный массив, чтобы пользователь поместил в сторону 1 и сторону 2 прямоугольного треугольника для определения гипотенузы. Прямо сейчас я застрял в двух точках:

  • Как установить массив с переменными
  • Как сохранить эти переменные в массив и обработать уравнение

Мой код в настоящее время выглядит следующим образом:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

double hypotenuse(double x, double y, double z);

int main(void)
{

    double side1, side2, side3, counter;
    side3 = 1;
    int table[4][3] =
    {
/* Column 0  1  2 */
        { 1, 2, 3 }, // Initializers for for indexed by 0 or row 1
        { 4, 5, 6 }, // Initializers for for indexed by 1 or row 2
        { 7, 8, 9 }, // Initializers for for indexed by 2 or row 3
        { 10, 11, 12 } // Initializers for for indexed by 3 or row 4
    };

    for (int i = 0; i < 4; i++);
    {
        for (int j = 0; j < 3; j++)
        {
            printf("Table [%d] [%d] = %d \n", i, j, table[i][j]);
        }
    }


    for (counter = 0; counter <= 2; counter++) {
        printf("Enter values for two sides: ");
        scanf("%lf %lf", &side1, &side2);

        printf("%.2f\n", hypotenuse(side1, side2, side3));
    }

    return 0;
}

double hypotenuse(double x, double y, double z) {
    x *= x;
    y *= y;
    z = sqrt(x + y);

    return z;
}

Прямо сейчас в строке 26 есть ошибка, что я не определен, но я не понимаю, как это не так, поскольку строка 22 должна была это определить, или я так подумал.

Любая помощь будет принята с благодарностью! ~ CRob

1 Ответ

0 голосов
/ 05 ноября 2018

следующий предложенный код:

  1. чисто компилирует
  2. правильно проверяет (и обрабатывает) ошибки
  3. отформатирован для удобства чтения
  4. производит желаемую функциональность

и теперь предложенный код:

#include <stdio.h>    // printf(), fprintf(), scanf()
#include <stdlib.h>   // exit(0, ESIT_FAILURE
//#include <string.h>
#include <math.h>     // sqrt()

#define ROWS 4
#define COLS 3
#define NUM_CALCULATIONS 3

double hypotenuse( double x, double y );

int main( void )
{

    double side1;
    double side2;

    int table[ ROWS ][ COLS ] =
    {
/* Column 0  1  2 */
        { 1, 2, 3 },    // Initializers for for indexed by 0 or row 1
        { 4, 5, 6 },    // Initializers for for indexed by 1 or row 2
        { 7, 8, 9 },    // Initializers for for indexed by 2 or row 3
        { 10, 11, 12 }  // Initializers for for indexed by 3 or row 4
    };

    // display table to user
    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            printf("Table [%d] [%d] = %d \n", i, j, table[i][j]);
        }
        puts( "" );
    }

    // input triangle legs, then display hyp to user
    for ( size_t counter = 0; counter < NUM_CALCULATIONS; counter++) 
    {
        printf("Enter values for two sides: ");

        if( scanf( "%lf %lf", &side1, &side2 ) != 2 )
        {
            fprintf( stderr, "scanf failed to read the two user inputs, exiting\n" );
            exit( EXIT_FAILURE );
        }

        printf( "%.2f\n", hypotenuse( side1, side2 ) );
    }

    return 0;
}

double hypotenuse( double x, double y )
{
    x *= x;
    y *= y;
    return  sqrt(x + y);
}

типичный запуск программы приводит к:

Table [0] [0] = 1 
Table [0] [1] = 2 
Table [0] [2] = 3 

Table [1] [0] = 4 
Table [1] [1] = 5 
Table [1] [2] = 6 

Table [2] [0] = 7 
Table [2] [1] = 8 
Table [2] [2] = 9 

Table [3] [0] = 10 
Table [3] [1] = 11 
Table [3] [2] = 12 

Enter values for two sides: 6 7
9.22
Enter values for two sides: 2 3
3.61
Enter values for two sides: 3 4
5.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...