1

Тема: Потрібен код на Си.

Задані гіпотенуза і один з катетів прямокутного трикутника. Знайти другий
його катет і площу трикутника.

2

Re: Потрібен код на Си.

Вам потрібен - ви й пишіть.
П.3.3 Правил
П.3.4 Правил
П.3.5 Правил
Усе погано.

Подякували: Chemist-i1

3 Востаннє редагувалося bebyk (26.03.2021 18:39:53)

Re: Потрібен код на Си.

#include <math.h>

int* pythagorean(int hypotenuse, int cathetus) {
  int other_cathetus, square;
  other_cathetus = sqrt((hypotenuse*hypotenuse) - (cathetus*cathetus));

  square = (cathetus + other_cathetus) / 2;

  int *result = malloc(sizeof(int) * 2);
  result[0] = other_cathetus;
  result[1] = square;

  return result;
}

Не тестував, але має бути якось так.

UPD. Потестував, поправив.

Подякували: isopesku051

4

Re: Потрібен код на Си.

koala написав:

bebyk, ви відповідаєте за тих, кого приручили.

Подякували: koala1

5

Re: Потрібен код на Си.

tchort написав:
koala написав:

bebyk, ви відповідаєте за тих, кого приручили.

Задача мене зацікавила, я її вирішив. Я відповідаю тільки за своє рішення.   *PARDON*

6 Востаннє редагувалося tchort (26.03.2021 19:08:54)

Re: Потрібен код на Си.

Ви відповідаєте перед громадою України, та перед душами живих, мертвих і ненароджених.
Рішення Суду:
*Читати швидко монотонним голосом, без зупинок аби слова зливалися разом*

Прихований текст

Суд постановив: Визнати винним Бебика Інженеро Девопсовича, 1999 року народження,
у порушенні статей чинного законодавства: Статі 0. пункту 42. "Про співчуття до меншин",
Статі 16 пункту FF. "Про надання прохаючому лінивцю милостині", Статі 255. пункту 2**8.
"Прийняття власних рішень що привели до написання функціонуючого відразу коду, загально небезпечним чином".
Та присудив, - Бебику Інженеро Девопсовичу покарання у вигляді громадських робіт по обійманню
випадкових сумно виглядаючих студенток,  одягнувшись у стандартне траншейне пальто та тримаючи їх
не менше 60-секунд передаючи душевне тепло, у розмірі що найменше 32 студентко/діб, або штраф
у вигляді *вартість середньої пачки цигарок* на користь громадянина tchort, для відшкодування
морально-судових збитків. Підпис__Суддя____. Від Сьогодні 17:09:40."

Подякували: leofun01, Betterthanyou2

7

Re: Потрібен код на Си.

Прихований текст
tchort написав:

Суд постановив: ... покарання у вигляді громадських робіт по обійманню випадкових сумно виглядаючих студенток...

Клопотання
про матеріальне забезбечення засудженого

Прошу надати Бебику Інженеро Девопсовичу 32 сумно виглядаючих студентки для виконання громадських робіт призначених постановою суду №65535 від Сьогодні 17:09:40.

Дата   Підпис

Подякували: tchort1

8

Re: Потрібен код на Си.

Веселуни веселяться, а я навчився нарешті розділяти файли в С. На коді за мотивами цього завдання.  :D

https://github.com/bebyx/pythagorean

9

Re: Потрібен код на Си.

bebyk написав:

навчився нарешті розділяти файли в С.

Це було би добре розбити на 2 функції без malloc.

Подякували: tchort1

10

Re: Потрібен код на Си.

leofun01 написав:
bebyk написав:

навчився нарешті розділяти файли в С.

Це було би добре розбити на 2 функції без malloc.

То ви покажіть приклад як треба, бо з вашого речення не зрозуміло, про що йдеться.  *DONT_KNOW*

11 Востаннє редагувалося tchort (27.03.2021 01:43:30)

Re: Потрібен код на Си.

То ви покажіть приклад як треба.

Прихований текст
//#include <stdlib.h>
#include <math.h>
//#include "pythagorean.h"

// а чому не float?
int other_cathetus(int hypot, int cat) {return sqrt((hypot*hypot) - (cat*cat));}

int square_result(int cathetus, int other_cat) {return (cathetus * other_cat) / 2;}
Подякували: bebyk, leofun01, koala3

12

Re: Потрібен код на Си.

tchort написав:

То ви покажіть приклад як треба.

Прихований текст
//#include <stdlib.h>
#include <math.h>
//#include "pythagorean.h"

// а чому не float?
int other_cathetus(int hypot, int cat) {return sqrt((hypot*hypot) - (cat*cat));}

int square_result(int cathetus, int other_cat) {return (cathetus + other_cat) / 2;}

О, точно, погано я засвоїв «чистий код».  *CRAZY*

Прихований текст

Не float з тієї ж причини, що нема перевірки вводу, виводу помилок і т.і. — бо це початкові коміти.

13 Востаннє редагувалося koala (27.03.2021 10:50:02)

Re: Потрібен код на Си.

А якщо вже дуже потрібно повертати кілька значень (у цьому випадку - не потрібно), то робіть це структурою:

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

typedef struct 
{
    float cathetus1;
    float cathetus2;
    float hypotenuse;
    float area;
} Triangle;

void print_triangle(Triangle* t)
{
    printf("Elements of triangle: cathetus1=%0.2f, cathetus2=%0.2f, hypotenuse=%0.2f, area=%0.2f",
                                  t->cathetus1,    t->cathetus2,    t->hypotenuse,    t->area);
}

Triangle fill_triangle(float cathetus, float hypotenuse)
{
    Triangle result;
    result.cathetus1  = cathetus;
    result.cathetus2  = sqrt(hypotenuse*hypotenuse-cathetus*cathetus);
    result.hypotenuse = hypotenuse;
    result.area       = result.cathetus1 * result.cathetus2 / 2.0;
    return result;
}

int main(void) {
    Triangle egyptian = fill_triangle(3,5);
    print_triangle(&egyptian);
    return 0;
}

Звісно, можна повертати з функції структуру лише на 2 значення, але тоді це виглядає якось куцо.

Подякували: bebyk, tchort2

14

Re: Потрібен код на Си.

Прихований текст

Дякувати богу пан koala написав ту версію яка відразу спала мені на думку, і моя підозріла одержимість захопленість struct-ами та class-ами, їх плануванням, ієрархією та схемування відношень між ними в C++ не була розкрита.

15

Re: Потрібен код на Си.

tchort написав:
koala написав:

bebyk, ви відповідаєте за тих, кого приручили.

Автор вислову мав на увазі тварин...