1

Тема: Підпрограми в С

Необхідно знайти сліди прямокутних матриць. Обчислення сліду матриць слід оформити у вигляді підпрограми.
Через якусь помилку підпрограма видає нулі. Допоможіть знайти помилку будь ласка.
Код(мова С):

#include <stdio.h>

float slid(float A[2][3], float B[3][4], float C[4][5])
{
    float Sa[2], Sb[3], Sc[4];
    float sla, slb, slc;
    for(int k=0;k<3;k++)
        {
            Sa[k]=A[k][k];
        }
    for(int k=0;k<3;k++)
        {
            sla=sla+Sa[k];
        }
    for(int k=0;k<4;k++)
        {
            Sb[k]=B[k][k];
        }
    for(int k=0;k<4;k++)
        {
            slb=slb+Sb[k];
        }
    for(int k=0;k<5;k++)
        {
            Sc[k]=C[k][k];
        }
    for(int k=0;k<5;k++)
        {
            slc=slc+Sc[k];
        }
    return sla, slb, slc;
}

int main(void)
{
    float sla, slb, slc;

    float A[2][3];
    A[0][0]=3.1; A[0][1]=2.6; A[0][2]=5.7; A[0][3]=7.2;
    A[1][0]=2.1; A[1][1]=7.7; A[1][2]=3.8; A[1][3]=1.1;
    A[2][0]=0.9; A[2][1]=8.4; A[2][2]=1.7; A[2][3]=4.3;
    
    float B[3][4];
    B[0][0]=3.4; B[0][1]=4.5; B[0][2]=7.1; B[0][3]=2.5; B[0][4]=3.9;
    B[1][0]=1.2; B[1][1]=2.6; B[1][2]=4.9; B[1][3]=9.6; B[1][4]=1.8;
    B[2][0]=5.4; B[2][1]=8.7; B[2][2]=3.7; B[2][3]=1.6; B[2][4]=2.2;
    B[3][0]=0.5; B[3][1]=1.8; B[3][2]=8.3; B[3][3]=6.4; B[3][4]=2.4;
    
    float C[4][5];
    C[0][0]=0.4; C[0][1]=4.5; C[0][2]=7.9; C[0][3]=6.2; C[0][4]=3.7; C[0][5]=2.1;
    C[1][0]=3.2; C[1][1]=2.6; C[1][2]=4.3; C[1][3]=3.3; C[1][4]=5.2; C[1][5]=3.6;
    C[2][0]=4.1; C[2][1]=3.8; C[2][2]=8.1; C[2][3]=6.5; C[2][4]=2.7; C[2][5]=4.2;
    C[3][0]=5.2; C[3][1]=4.5; C[3][2]=2.6; C[3][3]=5.5; C[3][4]=2.2; C[3][5]=3.1;
    C[4][0]=3.7; C[4][1]=5.6; C[4][2]=2.7; C[4][3]=7.2; C[4][4]=3.6; C[4][5]=4.2;
    
    printf("sla=%f, slb=%f, slc=%f\n", sla, slb, slc);
    
    return 0;
}

https://replace.org.ua/misc.php?action=pun_attachment&amp;item=1964

Post's attachments

Opera Снимок_2018-12-04_023218_ideone.com.png 12.31 kb, 67 downloads since 2018-12-04 

2

Re: Підпрограми в С

А де у Вас виклик функції slid?

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

Програма починається з меін, і ся кінчає ретурном.

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

3 Востаннє редагувалося MeritT (06.12.2018 23:30:23)

Re: Підпрограми в С

Chemist-i написав:

А де у Вас виклик функції slid?

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

Програма починається з меін, і ся кінчає ретурном.

printf("sla=%f, slb=%f, slc=%f\n", slid);

Ось так?

 return sla, slb, slc;

Ретурн може повертати кілька перемінних?

4

Re: Підпрограми в С

Ні, передавайте в функцію по посиланню (вказівником), і тоді вертати не треба