Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 9
1

Работа с матрицами (программа завершается аварийно)

02.04.2017, 13:32. Показов 517. Ответов 6
Метки нет (Все метки)

Помогите, на Си, не С++. Выдает другие значения, к тому же аварийно завершает программу
Для заданной матрицы B(n × n) и матрицы того же типа и размерности C(n × n) найти значение выражения A = 1/2· B + C^2.
Сам код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    printf("Hello world!\n");
    int e=0, e1=0, l1=0;
    scanf("%d", &e);
    float C[e][e], B[e][e];
    for(e1 = 0; e1 < e; e1++)
        {
        for(l1 = 0; l1 < e; l1++)
            {
            scanf("%f", &B[e1][l1]);
            scanf("%f", &C[e1][l1]);
            }
        }
        //
 
    float alg(int e, float B[e][e], float C[e][e], float** Arr)
        {
        for(e1 = 0; e1 < e; e1++)
            {
            for(l1 = 0; l1 < e; l1++)
                {
                C[e1][l1]=pow(C[e1][l1], 2);
                B[e1][l1]=B[e1][l1]/2;
                Arr[e1][l1]=C[e1][l1]+B[e1][l1];
                }
            }
        return 0;
        }
    float ** A;
    A = (float**)malloc(e * sizeof(float*));
    for (l1 = 0; l1 < e; l1++)
    A[e1] = (float*)malloc(e * sizeof(float));
        //vozvrat A
    alg(e, B, C, A);
    for(e1 = 0; e1 < e; e1++)
        {
        for(l1 = 0; l1 < e; l1++)
            {
            printf("%f ", A[e1][l1]);
            }
        printf("\n");
        }
    return 0;
    }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2017, 13:32
Ответы с готовыми решениями:

Программа аварийно завершается
Доброго времени суток! Моя программа аварийно завершается вернув значение &quot;255 (0xFF)&quot; Прошу...

программа завершается аварийно
запускаю компилятор, все запустилось, работает (меню из кучи условий if-else). выбираю любой пункт...

Программа на других компьютерах завершается аварийно
Здравствуйте, у меня дикая проблема: я написал программу (кинуть код не могу, он очень большой,...

Рекурсия, почему программа завершается аварийно?
Подскажите, почему не работает рекурсия?? #include &lt;iostream&gt; using namespace std; void fn(int...

6
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
02.04.2017, 14:53 2
Цитата Сообщение от blackfury Посмотреть сообщение
Выдает другие значения
Вы уверены, что C^2 это квадрат каждого элемента матрицы, а не матричное умножение C*C?
0
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 9
02.04.2017, 16:49  [ТС] 3
Точно, что-то в голову взбрело не то, спасибо большое, но все же даже если так, то код снова не сработает, какая-то проблема при выводе матрицы из функции, видимо
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
02.04.2017, 17:20 4
Цитата Сообщение от blackfury Посмотреть сообщение
но все же даже если так, то код снова не сработает
Покажите новый код.

Добавлено через 5 минут
Несколько замечаний:
1) Код функции alg нужно вынести из функции main - в Си нет вложенных функций.
2) Почему то часть матриц задаётся в виде статических массивов, а часть в виде динамических. Сделайте единообразно.
3) Имена переменных e, e1, l1 неудачные, лучше заменить на n, i, j.
4) Что возвращает функция alg?
0
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 9
02.04.2017, 18:41  [ТС] 5
Понял, разберусь. Функция пробная, создана только лишь для действий над матрицами и вывода их по указателю, поэтому ничего не возвращает. Значит, чтобы в норме работала функция, нужно, чтобы массивы были сделаны по одному типу?
Немного новичок в Си, работу нужно сделать за неделю обязательно, озадачился
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
02.04.2017, 20:02 6
Цитата Сообщение от blackfury Посмотреть сообщение
Значит, чтобы в норме работала функция, нужно, чтобы массивы были сделаны по одному типу?
Не обязательно, но желательно. Для единообразия.
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
02.04.2017, 23:28 7
float C[e][e] и float** Arr - разные сущности. Первый это двумерный массив, а второй - массив указателей на массивы указателей. В качестве параметров функции они не совместимы. При работе с индексами - одно и то же.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2017, 23:28

Программа аварийно завершается при прохождении цикла
QVector&lt;int&gt; Set; QPair &lt;int,int&gt; Map; int c=0,Num,; srand(time(NULL)); ...

Программа завершается аварийно при вызове функции
Делаю консольное приложение на шестом Билдере. Не могу найти ошибку.Убил день. Прога компилиться...

Программа аварийно завершается после оператора scanf
Такая проблема. Я начинающий. Занимаюсь уже вторую неделю. Написал такой код, запускаю программа....

При открытия файла аварийно завершается программа
Пишу меди плеер , при открытия файла программа завершаться аварийно, вот код программы using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.