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

Preciso De Ajuda Nesse Programa


DIGOW

Pergunta

Pessoal estou precisando de ajuda

Meu professor passou um trabalho para completar o programa que ele deu, porque a turma é iniciante ainda, o trabalho é esse:

Multiplicação de matrizes

Escreva um programa que recebe como parâmetros um inteiro n, sendo n potência de 2,

e possívelmente '-S' para utilizar o método de multiplicação de matrizes de Strassen.

O seu programa deve gerar 2 matrizes aleatórias n x n e mutiplicá-las, e imprimir o tempo de execução gasto.

O programa do professor é esse:

------------------------------------------------------------------------------------------------

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>

void metodostrassen (int *mat1, int *mat2, int b0, int c0, int tam){

int a;

/*Partindo a matriz*/

if (tam>2){

a= tam>2;

metodostrassen (mat1, mat2, b0, c0, a);

metodostrassen (mat1, mat2, b0+a, c0, a);

metodostrassen (mat1, mat2, b0, c0+a, a);

metodostrassen (mat1, mat2, b0+a, c0+a, a);

}

else{

/*formulas*/

}

}

int testan (int n) {

int x,y,c;

c=n;

do{

x=c%2;

y=c/2;

c=y;

}

while(x!=1 && y>1);

if(x==0 && y==1)

{

return n;

}

else

{

n=0;

puts("Digite novamente:");

scanf("%d", &n);

testan (n);

}

}

int main (int argc, char* argv[])

{

int *mat1, *mat2, *mat3;

int i, j, k, s, z, n ;

time_t t1,t2;

mat1=(int*)malloc(n*sizeof(int));

mat2=(int*)malloc(n*sizeof(int));

mat3=(int*)malloc(n*sizeof(int));

t1=time(NULL);

s=0;

if(argc<2 || argc>3){

printf("Est  errado: primeiro digita a ordem da matriz e depois se quiser pelo metodo de strassen digita -s");

return(1);}

else{

n=atoi(argv[1]);

n=testan(n);

/* printf("essa é a ordem da matriz:%d\n",n);*/

if(argc==3){

if(strcmp(argv[2], "-s")){

s=1;}}}

srand(time(NULL));

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

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

mat1[i*n+j]= rand()%100;

mat2[i*n+j]= rand()%100;

/* printf("%d ", mat1[i*n+j]);

printf("%d ", mat2[i*n+j]); */

}

/* printf("\n");*/

}

if(s==0){

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

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

z=0;

for(k=0; k<n; k++){

z+=mat1[i*n+k]*mat2[k*n+j];

}

mat3[i*n+j]=z;

}

}

/* printf("\n\n");

printf("matriz1*matriz2=\n");

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

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

printf("%d ", mat3[i*n+j]);

}

printf("\n");

}

printf("\n");*/

t2=time(NULL);

printf("tempo de execucao=%lf",difftime(t2,t1));

return(0);}

else{

metodostrassen (mat1, mat2, 0, 0, n);

}

}

------------------------------------------------------------------------------------------------

Agora só falta completar botando as formulas e oque mais faltar

alguém pode me da um help porque não sei como fazer

PS: Tenho que entregar o trabalho no sábado 25/06

Obrigado

Link para o comentário
Compartilhar em outros sites

3 respostass 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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...