[ Príspevkov: 11 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 09.03.07
Prihlásený: 28.07.09
Príspevky: 39
Témy: 7 | 7
Bydlisko: Trnava
NapísalOffline : 10.11.2007 16:08 | segmentation fault

caf

tento program funguje, ale ak date za hodnoty pola velke cisla, tak to vypise "segmentation fault" inak to funguje dokonale. preco je to tak?

Kód:
#include <stdio.h>

#include <stdlib.h>



int main()

{

    int xa, ya, xb, yb, i, j, m;

    int **pole_a, **pole_b, **pole_c;



    do {

        printf("Riadkov matice A: ");

        scanf("%i", &xa);

        printf("Stlpcov matice A: ");

        scanf("%i", &ya);

        printf("Riadkov matice B: ");

        scanf("%i", &xb);

        printf("Stlpcov matice B: ");

        scanf("%i", &yb);

        if (ya != xb) { printf("Zadane zle rozmery matic na sucin!\n\n"); }

    }

    while (ya != xb);

   

    pole_a = (int**) malloc(xa * sizeof(int*));            //polia dynamicky

    pole_b = (int**) malloc(xb * sizeof(int*));



    for(i = 0; i < xa; ++i) {

        pole_a[i] = (int*) malloc(ya * sizeof(int*));

    }



    for(i = 0; i < xb; ++i) {

        pole_b[i] = (int*) malloc(yb * sizeof(int*));

    }



    for(i = 0; i < xa; ++i) {                   //nacitnie hodnot do matice pole_a

        for(j = 0; j < ya; ++j) {

        printf("A(%i,%i) = ", i+1, j+1);

        scanf("%i", &pole_a[i][j]);

        }

    }



    for(i = 0; i < ya; ++i) {                   //nacitnie hodnot do matice pole_b

        for(j = 0; j < yb; ++j) {

        printf("B(%i,%i) = ", i+1, j+1);

        scanf("%i", &pole_b[i][j]);

        }

    }



    pole_c = (int**) malloc(xa * sizeof(int*));     //vytvorenie matice pole_c

    for (i = 0; i < xa; i++) {

        pole_c[i] = (int*) malloc(yb * sizeof(int*));

    }



    for(i = 0; i < xa; ++i) {                   //vynulovanie matice pole_c

        for(j = 0; j < yb; ++j) {

            pole_c[i][j] = 0;

        }

    }



    for(i = 0; i < xa; i++) {

        for (j = 0; j < yb; j++) {

            for (m = 0; m < yb; m++) {

                pole_c[i][j] += pole_a[i][m] * pole_b[m][j];

            }

        }

    }



    printf("\nMatica AxB = \n");



    for(i = 0; i < xa; i++) {         //vypis matice pole_c

        printf("\n    ");           

        for(j = 0; j < yb; j++) {

            printf("%3i ", pole_c[i][j]);

        }

        printf("\n");

    }

    printf("\n");

    return 0;

}


Offline

Skúsený užívateľ
Skúsený užívateľ
segmentation fault

Registrovaný: 10.07.07
Prihlásený: 02.11.17
Príspevky: 1060
Témy: 0 | 0
Bydlisko: Bratislava
NapísalOffline : 10.11.2007 16:37 | segmentation fault

Je pouzity datovy typ int , max. hodnota je od -32768 do 32768


_________________
Nebo je modre, voda je mokra...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.06
Prihlásený: 01.03.13
Príspevky: 239
Témy: 20 | 20
Bydlisko: Krásno n/Ky...
NapísalOffline : 10.11.2007 16:53 | segmentation fault

Roberbo píše:
Je pouzity datovy typ int , max. hodnota je od -32768 do 32768


to ma short alebo short int. Int ma od –2,147,483,648 do 2,147,483,647

kedze tam robis sucin matice uz napriklad 100,000 * 100,000 ti presiahne tento rozsah


Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 09.03.07
Prihlásený: 28.07.09
Príspevky: 39
Témy: 7 | 7
Bydlisko: Trnava
Napísal autor témyOffline : 10.11.2007 18:09 | segmentation fault

lenze ono to robi, aj ked je rozmer matic 3x1 a 1x3

ale ked je 2x2 a 2x3 tak to spravi spravne

tu je riesenie ;D

Kód:
            scanf("%i", &pole_a[i][j]);

        }

    }


    printf("\nMatica A = \n\n");


    for (i = 0; i < xa; ++i) {                   //vypis matice A
        printf("    ");

        for (j = 0; j < ya; ++j) {

            printf("%3i ", pole_a[i][j]);

        }

        printf("\n");

    }

    printf("\n");



    for (i = 0; i < ya; ++i) {                   //nacitanie hodnot do matice pole_b

        for (j = 0; j < yb; ++j) {

            printf("B(%i,%i) = ", i+1, j+1);

            scanf("%i", &pole_b[i][j]);

        }

    }
   
    printf("\nMatica B = \n\n");

    for (i = 0; i < xb; ++i) {                   //vypis matice B
        printf("    ");

        for (j = 0; j < yb; ++j) {

            printf("%3i ", pole_b[i][j]);

        }

        printf("\n");

    }



    pole_c = (int**) malloc(xa * sizeof(int*));     //vytvorenie a vynulovanie matice pole_c

    for (i = 0; i < xa; i++) {

        pole_c[i] = (int*) malloc(yb * sizeof(int));
        for (j = 0; j < yb; ++j) {
            pole_c[i][j] = 0;
        }

    }



    for (i = 0; i < xa; i++) {                      //vynasobenie

        for (j = 0; j < yb; j++) {
            if (ya == 1) {

                for (m = 0; m < 1; ++m) {      // 1 ak matice su rozmeru (k*1)x(1*k)

                    pole_c[i][j] += (pole_a[i][m] * pole_b[m][j]);

                }

                printf("pole_c[%i][%i] = %i\n", i, j, pole_c[i][j]);
            }
            else {
                for (m = 0; m < yb; ++m) {

                    pole_c[i][j] += (pole_a[i][m] * pole_b[m][j]);

                }
            }

        }

    }



    printf("\nMatica AxB = \n");



    for(i = 0; i < xa; i++) {         //vypis matice pole_c

        printf("\n    ");           

        for(j = 0; j < yb; j++) {

            printf("%3i ", pole_c[i][j]);

        }

        printf("\n");

    }

    printf("\n");

    return 0;

}


Offline

Skúsený užívateľ
Skúsený užívateľ
segmentation fault

Registrovaný: 10.07.07
Prihlásený: 02.11.17
Príspevky: 1060
Témy: 0 | 0
Bydlisko: Bratislava
NapísalOffline : 10.11.2007 20:30 | segmentation fault

nie je int ako int ...podla typu prekladaca moze mat bud dva alebo styri bajty a hodnota na konci +(-)1 tiez podla typu prekladaca ;)


_________________
Nebo je modre, voda je mokra...
Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 09.03.07
Prihlásený: 28.07.09
Príspevky: 39
Témy: 7 | 7
Bydlisko: Trnava
Napísal autor témyOffline : 11.11.2007 14:20 | segmentation fault

ja sa z toho zblaznim, ono ten program FUNGUJE ale uz ked dam rozmer 3x3 a 3x3 tak to spadne.... ale to je blbost, ze mam malo pamate alebo co.. proste co to moze byt ? tu mate kod, prosim vas pozrite sa na to.... fakt, ked dam vacsie rozmery, tak to padne...

Kód:
/* Stefan Miklosovic AI6
   zadanie 3 - nasobenie matic
*/


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

int main()
{
    int xa, ya, xb, yb, i, j, m;
    int **pole_a, **pole_b, **pole_c;

    do {
        printf("Riadkov matice A: ");
        scanf("%i", &xa);
        printf("Stlpcov matice A: ");
        scanf("%i", &ya);
        printf("Riadkov matice B: ");
        scanf("%i", &xb);
        printf("Stlpcov matice B: ");
        scanf("%i", &yb);
        if (ya != xb) { printf("Zadane zle rozmery matic na sucin!\n\n"); }
    }
    while (ya != xb);

    pole_a = (int**) malloc(xa * sizeof(int*));            //polia dynamicky
    pole_b = (int**) malloc(xb * sizeof(int*));

    for (i = 0; i < xa; ++i) {
        pole_a[i] = (int*) malloc(ya * sizeof(int));
    }

    for (i = 0; i < xb; ++i) {
        pole_b[i] = (int*) malloc(yb * sizeof(int));
    }

    for (i = 0; i < xa; ++i) {                   //nacitanie hodnot do matice pole_a
        for(j = 0; j < ya; ++j) {
            printf("A(%i,%i) = ", i+1, j+1);
            scanf("%i", &pole_a[i][j]);
        }
    }

    printf("\nMatica A\n\n");

    for (i = 0; i < xa; ++i) {                   //vypis matice A
        printf("    ");
        for (j = 0; j < ya; ++j) {
            printf("%3i ", pole_a[i][j]);
        }
        printf("\n\n");
    }

    printf("\n");

    for (i = 0; i < ya; ++i) {                   //nacitanie hodnot do matice pole_b
        for (j = 0; j < yb; ++j) {
            printf("B(%i,%i) = ", i+1, j+1);
            scanf("%i", &pole_b[i][j]);
        }
    }
   
    printf("\nMatica B\n\n");

    for (i = 0; i < xb; ++i) {                   //vypis matice B
        printf("    ");
        for (j = 0; j < yb; ++j) {
            printf("%3i ", pole_b[i][j]);
        }
        printf("\n\n");
    }

    pole_c = (int**) malloc(xa * sizeof(int*));     //vytvorenie a vynulovanie matice pole_c
    for (i = 0; i < xa; i++) {
        pole_c[i] = (int*) malloc(yb * sizeof(int));
        for (j = 0; j < yb; ++j) {
            pole_c[i][j] = 0;
        }
    }

    for (i = 0; i < xa; i++) {                      //vynasobenie
        for (j = 0; j < yb; j++) {
            if (ya == 1) {
                for (m = 0; m < 1; ++m) {      //yb-1 => ak sa rozmer rovna (k*1)x(1*k)
                    pole_c[i][j] += (pole_a[i][m] * pole_b[m][j]);
                }
            }
            else {
                for (m = 0; m <= xa; ++m) {
                    pole_c[i][j] += (pole_a[i][m] * pole_b[m][j]);
                }
            }
        }
    }

    printf("\nMatica AxB\n");

    for(i = 0; i < xa; i++) {         //vypis matice pole_c
        printf("\n    ");           
        for(j = 0; j < yb; j++) {
            printf("%3i ", pole_c[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    return 0;
}


Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 16.05.07
Prihlásený: 01.08.17
Príspevky: 837
Témy: 6 | 6
NapísalOffline : 11.11.2007 14:50 | segmentation fault

m@-nX píše:
to ma short alebo short int. Int ma od –2,147,483,648 do 2,147,483,647

kedze tam robis sucin matice uz napriklad 100,000 * 100,000 ti presiahne tento rozsah
to ma JAVA hentaky int


_________________
getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória
Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 09.03.07
Prihlásený: 28.07.09
Príspevky: 39
Témy: 7 | 7
Bydlisko: Trnava
Napísal autor témyOffline : 11.11.2007 14:56 | segmentation fault

nejde to aj tak, uz mi z toho sibe... furt to pada, ale len ked dam napr. 3x3 a 3x3, tak mi to padne, ale 2x2 a 2x2 to bere. a to je blbost, ze nasobim velke cisla.... neviem v com to moze byt.... toto je posledna verzia
Kód:
/* Stefan Miklosovic AI6
   zadanie 3 - nasobenie matic
*/


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

int main()
{
    int xa, ya, xb, yb, i, j, m;
    int **pole_a, **pole_b, **pole_c;

    do {
        printf("Riadkov matice A: ");
        scanf("%i", &xa);
        printf("Stlpcov matice A: ");
        scanf("%i", &ya);
        printf("Riadkov matice B: ");
        scanf("%i", &xb);
        printf("Stlpcov matice B: ");
        scanf("%i", &yb);
        if (ya != xb) { printf("Zadane zle rozmery matic na sucin!\n\n"); }
    }
    while (ya != xb);

    pole_a = (int**) malloc(xa * sizeof(int*));            //polia dynamicky
    pole_b = (int**) malloc(xb * sizeof(int*));

    for (i = 0; i < xa; ++i) {
        pole_a[i] = (int*) malloc(ya * sizeof(int));
    }

    for (i = 0; i < xb; ++i) {
        pole_b[i] = (int*) malloc(yb * sizeof(int));
    }

    for (i = 0; i < xa; ++i) {                   //nacitanie hodnot do matice pole_a
        for(j = 0; j < ya; ++j) {
            printf("A(%i,%i) = ", i+1, j+1);
            scanf("%i", &pole_a[i][j]);
        }
    }

    printf("\nMatica A\n\n");

    for (i = 0; i < xa; ++i) {                   //vypis matice A
        printf("    ");
        for (j = 0; j < ya; ++j) {
            printf("%3i ", pole_a[i][j]);
        }
        printf("\n\n");
    }

    printf("\n");

    for (i = 0; i < ya; ++i) {                   //nacitanie hodnot do matice pole_b
        for (j = 0; j < yb; ++j) {
            printf("B(%i,%i) = ", i+1, j+1);
            scanf("%i", &pole_b[i][j]);
        }
    }
   
    printf("\nMatica B\n\n");

    for (i = 0; i < xb; ++i) {                   //vypis matice B
        printf("    ");
        for (j = 0; j < yb; ++j) {
            printf("%3i ", pole_b[i][j]);
        }
        printf("\n\n");
    }

    pole_c = (int**) malloc(xa * sizeof(int*));     //vytvorenie a vynulovanie matice pole_c
    for (i = 0; i < xa; i++) {
        pole_c[i] = (int*) malloc(yb * sizeof(int));
        for (j = 0; j < yb; ++j) {
            pole_c[i][j] = 0;
        }
    }

    for (i = 0; i < xa; i++) {                      //vynasobenie
        for (j = 0; j < yb; j++) {
            if (ya == 1) {
                for (m = 0; m < 1; ++m) {      //yb-1 => ak sa rozmer rovna (k*1)x(1*k)
                    pole_c[i][j] += (pole_a[i][m] * pole_b[m][j]);
                }
            }
            else {
                for (m = 0; m <= xa; ++m) {
                    pole_c[i][j] += (pole_a[i][m] * pole_b[m][j]);
                }
            }
        }
    }

    printf("\nMatica AxB\n");

    for(i = 0; i < xa; i++) {         //vypis matice pole_c
        printf("\n    ");           
        for(j = 0; j < yb; j++) {
            printf("%3i ", pole_c[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    return 0;
}


Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 28.04.07
Prihlásený: 03.11.09
Príspevky: 133
Témy: 1 | 1
NapísalOffline : 11.11.2007 15:28 | segmentation fault

cca 91. riadok:
Kód:
                for (m = 0; m <= xa; ++m) {

nahraď
Kód:
                for (m = 0; m < xa; ++m) {


Offline

Užívateľ
Užívateľ
segmentation fault

Registrovaný: 09.03.07
Prihlásený: 28.07.09
Príspevky: 39
Témy: 7 | 7
Bydlisko: Trnava
Napísal autor témyOffline : 11.11.2007 17:57 | segmentation fault

jj. tam bola chyba. dik


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.06
Prihlásený: 01.03.13
Príspevky: 239
Témy: 20 | 20
Bydlisko: Krásno n/Ky...
NapísalOffline : 12.11.2007 13:19 | segmentation fault

juho píše:
to ma JAVA hentaky int


aj c++ prelozene prekladacom pre 32 bitove procesory..ma 2 na 31 hodnot


 [ Príspevkov: 11 ] 


segmentation fault



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Segmentation fault

v Assembler, C, C++, Pascal, Java

9

283

27.11.2012 19:08

Najiva

V tomto fóre nie sú ďalšie neprečítané témy.

QtCreator : Segmentation fault

v Assembler, C, C++, Pascal, Java

1

381

27.12.2010 19:39

Forty-

V tomto fóre nie sú ďalšie neprečítané témy.

Segmentation fault - C

v Assembler, C, C++, Pascal, Java

11

991

09.05.2011 22:20

M4rek

V tomto fóre nie sú ďalšie neprečítané témy.

Segmentation fault v C

v Assembler, C, C++, Pascal, Java

0

367

30.01.2012 19:13

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

string v C = segmentation fault

v Assembler, C, C++, Pascal, Java

1

318

05.11.2011 12:01

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

General protection fault

v Operačné systémy Microsoft

0

556

27.08.2008 20:57

misso



© 2005 - 2024 PCforum, edited by JanoF