Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2018, 15:56   #1
SKADD
Новичок
Джуниор
 
Регистрация: 01.12.2018
Сообщений: 1
По умолчанию Сформировать одномерный массив из двумерного

Дана матрица из m строк и трех столбцов. Элементы каждой строки имеют тип float и представляют собой длины треугольника. Вычислить площади всех m треугольников и записать их в новый массив. Если длины сторон таковы, что треугольник не образуется, то соответствующему элементу массива присвоить значение -1.

Что сделал: инициализировал массив, заполнил его случайными числами. Но если в новом массиве длины сторон не образуют новый массив, то консоль выдает 0 вместо -1. Помогите разобраться.

Код:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <time.h>
#include <limits.h>
#define M 5
#define N 3

float function (float[M][N], int, int);

int main()
{
   setlocale(LC_CTYPE, "RUSSIAN");
   int a,b;
   float matrix[M][N];
   srand(time(NULL)); //рандомизация
   printf("\t\tИсходная матица:\n");
   for(a=0; a<M; a++)
   {
       for (b=0; b<N; b++)
       {
           printf("%15f", matrix[a][b]=(float)(rand())/RAND_MAX); //Заполняем массив случайными значениями и печатаем очередное значение элемента
       }
       printf("\n");
   }
   printf("\nМатрица составленная из площадей треугольника:\n");
   printf("%15f", function(matrix, M, N));
   return 0;
}

float function(float matrix[M][N], int m, int n)
{
    int a;
    float mas[M], p; //полупериметр
    for(a=0; a<m; a++)
    {
        if (matrix[a][0]+matrix[a][1]<matrix[a][2] &&            // Проверка - могут ли числа быть сторонами треугольника
            matrix[a][0]+matrix[a][2]<matrix[a][1] &&
            matrix[a][1]+matrix[a][2]<matrix[a][0] &&
            matrix[a][0]>0 && matrix[a][1]>0 && matrix[a][2]>0)
        {
            p = (matrix[a][0]+matrix[a][1]+matrix[a][2])/2; //Вычисляем полупериметр
            mas[a] = sqrt(p*(matrix[a][0])*(matrix[a][1])*(matrix[a][2])); //Находим площадь по формуле Герона
        }
        else
        mas[a] = -1;
    }
    return mas[M];
}
SKADD вне форума Ответить с цитированием
Старый 04.12.2018, 16:05   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Код:
return mas[M];
А какой глубокий смысл возвращать из функции вместо массива одно число и то заграницей массива?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
Сформировать одномерный массив из двумерного Joose Общие вопросы C/C++ 0 14.11.2012 14:13
Сформировать одномерный массив, элементами которого являются все отрицательные элементы двумерного массива, после 1-го полож-го sev48fire Фриланс 5 23.06.2012 19:07
Сформировать одномерный массив Jambus Помощь студентам 4 29.09.2011 21:58
Из двумерного в одномерный массив elsin Общие вопросы Delphi 1 16.01.2009 03:58