Ir para conteúdo
Fórum Script Brasil
  • 0

Qual o problema deste código? Ele simplesmente crasha do nada.


Tallahassee

Pergunta

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

int matrixSum(int ** mA, int ** mB, int ** mC, int la, int lb, int ca, int cb);

int main(){

    int ** matrixA, ** matrixB, ** matrixC, lineA, columnA, lineB, columnB;
    int i, j;

    printf("Insert the numbers of lines desired for matrix A:\n>>>\n");
    scanf("%d", &lineA);
    fflush(stdin);

    printf("Insert the numbers of columns desired for matrix A:\n>>>\n");
    scanf("%d", &columnA);
    fflush(stdin);

    printf("Insert the numbers of lines desired for matrix B:\n>>>\n");
    scanf("%d", &lineB);
    fflush(stdin);

    printf("Insert the numbers of columns desired for matrix B:\n>>>\n");
    scanf("%d", &columnB);
    fflush(stdin);

    matrixA = malloc(lineA * sizeof(int *));
    if(matrixA == NULL){
        printf("ERROR! There isn't space on disc!\n");

        return 1;
    }

    for(i=0; i<columnA; i++){
        matrixA = malloc(sizeof(int));
        if(matrixA == NULL){
            printf("ERROR! There isn't space on disc!\n");

            return 1;
        }
    }

    matrixB = malloc(lineB * sizeof(int *));
    if(matrixB == NULL){
        printf("ERROR! There isn't space on disc!\n");

        return 1;
    }

    for(i=0; i<columnB; i++){
        matrixB = malloc(sizeof(int));
        if(matrixB == NULL){
            printf("ERROR! There isn't space on disc!\n");

            return 1;
        }
    }

    for(i=0; i<lineA; i++){
        for(j=0; j<columnA; j++){
            printf("\nMatrix A - Position [%d][%d]: ", i+1, j+1);
            scanf("%d", &matrixA[j]);
            fflush(stdin);
        }
    }

    for(i=0; i<lineB; i++){
        for(j=0; j<columnB; j++){
            printf("\nMatrix B - Position [%d][%d]: ", i+1, j+1);
            scanf("%d", &matrixB[j]);
            fflush(stdin);
        }
    }

    int ans;

    ans = matrixSum(matrixA, matrixB, matrixC, lineA, lineB, columnA, columnB);

    if(ans == 0){
        printf("\nIt is impossible sum the arrays because the number of rows and columns are different!\n");

        return 0;
    }
    else{
        for(i=0; i<lineA; i++){
            for(j=0; j<columnA; j++){
                printf("\nMatrix C - Position[%d][%d] = %d\n", i, j, matrixC[j]);
            }
        }
    return 0;
    }
}

int matrixSum(int ** mA, int ** mB, int ** mC, int la, int lb, int ca, int cb){

    int i, j;

    if(la != lb || ca != cb){
        return 0;
    }
    else{

        //Como as linhas e colunas precisam ser iguais, pode-se usar tanto la e ca, como lb e cb

        mC = malloc(la * sizeof(int *));
        if(mC == NULL){
            printf("ERROR! There is no space on disc!\n");
        }
        for(i=0; i<ca; i++){
            mC = malloc(sizeof(int));
            if(mC == NULL){
                printf("ERROR! There is no space on disc!\n");
            }
        }

        for(i=0; i<lb; i++){
            for(j=0; j<cb; j++){
                mC[j] = mA[j] + mB[j];
            }
        }
    }
    return 1;
}

Editado por Tallahassee
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...