Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

[Resolvido] Vetor com fatorial

Recommended Posts

Ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B de mesmo tipo e dimensão, sendo que cada elemento da matriz B seja o fatorial d elemento correspondente da matriz A. Apresentar os elementos da matriz B ordenados de forma crescente.

 

 

Eu não sei como fazer o calculo do fatorial no vetor

 

 

Aquit ou kandrade poderia me ajudar?

 

/*vetor */
# include<stdio.h>
# include<stdlib.h> 

int main()
{ //Inicio do programa
int A[15],B[15];
int i,a,aux,ct;
a = 1;
float fat=1;

while (a==1) {
system("cls");
system("color 71");

  for (i=0;i<15;i++)
  {
  printf("Digite um valor do A %d : ", i+1);
  scanf("%d",&A[i]);
  B[i] = A[i];
  }

printf("\nVetor B\n");

   for (i=0; i<=15; i++) {
	for (ct=0; ct<=14; ct++) {
		if (B[ct] < B[ct+1]) {
		aux = B[ct];
		B[ct] = B[ct+1];
		B[ct+1] = aux; }
		}
		}

printf("\nVetor A\n");

	for (i=0;i<15;i++) {
	printf("   %0.d\n",A[i]);
	}

printf("\nVetor B ordenado\n");

	for (i=0;i<15;i++) {
	printf("   %0.d\n",B[i]);
	}
	   
printf("\n");
printf("\n\nDeseja entrar com uma nova matriz?   (1=Sim e 0=nao)");
scanf("%d",&a);
}
printf("\n\n\n");

system("pause");
return 0;
} //Fim do programa

Compartilhar este post


Link para o post
Compartilhar em outros sites

P/ cada elemento de A você calcula o fatorial e escreve o resultado em B na mesma posicao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim o código

Só q continua dando erro

 

/*vetor */
/*Exercicio 10 Apresentação vetor*/
# include<stdio.h>
# include<stdlib.h> 

int main()
{ //Inicio do programa
float A[15],B[15];
int i,a,aux,ct;
a = 1;
float fat=1;

while (a==1) {
system("cls");
system("color 71");

  for (i=0;i<15;i++)
  {
  printf("Digite um valor do A %d : ", i+1);
  scanf("%f",&A[i]);
  B[i] = A[i];
  }

	   for(i=1;i<=i;i++) {
	   fat = fat * i;
	   A[i+1] = fat; }

printf("\nVetor B\n");

   for (i=0; i<=15; i++) {
	for (ct=0; ct<=14; ct++) {
		if (B[ct] < B[ct+1]) {
		aux = B[ct];
		B[ct] = B[ct+1];
		B[ct+1] = aux; }
		}
		}

printf("\nVetor A\n");

	for (i=0;i<15;i++) {
	printf("   %0.f\n",A[i]);
	}

printf("\nVetor B ordenado\n");

	for (i=0;i<15;i++) {
	printf("   %0.d\n",B[i]);
	}
	   
printf("\n");
printf("\n\nDeseja entrar com uma nova matriz?   (1=Sim e 0=nao)");
scanf("%d",&a);
}
printf("\n\n\n");

system("pause");
return 0;
} //Fim do programa

 

 

Usa um for em A,uma funcao que calcula fatorial e uma atribuicao em B

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá dando erro pq você ta fazendo errado...O q é isso?

for(i=1;i<=i;i++) {
   fat = fat * i;
   A[i+1] = fat; }

 

De cara já vi que dá loop infinito...

 

você tem que calcular o fatorial de todos os elementos de A.E não só de um e se baseando no elemento em A,e não no índice. E atribuição do fatorial é em B.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim não...você tá multiplicando todos os elementos da matriz...

 

for(i=0;i<15;i++) {
  tmp = A[i];
  fat = 1;
  while(tmp>1) {
  fat*=tmp;
  tmp--;
  }
  B[i] = fat;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu deixei o código assim:

 

Mais ele não apresenta agora a matriz B

 

Esta certinho o código do fatorial?

 

 

/*vetor */
/*Exercicio 10 Apresentação vetor*/
# include<stdio.h>
# include<stdlib.h> 

int main()
{ //Inicio do programa
float A[15],B[15];
int i,a,aux,ct;
a = 1;
float fat,tmp;

while (a==1) {
system("cls");
system("color 71");

  for (i=0;i<15;i++)
  {
  printf("Digite um valor do A %d : ", i+1);
  scanf("%f",&A[i]);
  B[i] = A[i];
  }

for(i=0;i<15;i++) {
   tmp = A[i];
   fat = 1;
   while(tmp>1) {
	  fat*=tmp;
	  tmp--;
   }
   B[i] = fat;
}




printf("\nVetor A\n");

	for (i=0;i<15;i++) {
	printf("   %0.f\n",A[i]);
	}


	   for(i=1;i<=A[i];i++) {
	   fat = fat * i;
	   B[i+1] = fat; }

printf("\nVetor B\n");
   for (i=0; i<=15; i++) {
	for (ct=0; ct<=14; ct++) {
		if (B[ct] < B[ct+1]) {
		aux = B[ct];
		B[ct] = B[ct+1];
		B[ct+1] = aux; }
		}
		}
   
printf("\n");
printf("\n\nDeseja entrar com uma nova matriz?   (1=Sim e 0=nao)");
scanf("%d",&a);
}
printf("\n\n\n");

system("pause");
return 0;
} //Fim do programa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mandei imprimir o vetor B

 

Só q agora o compliar diz q tem erro na linha 43

Mensagem do compilador DevC++

Linha 43 Unidade E:\...... Mensagem: [Warning] converting to "int" form "float"

 

Mais eu converti o vetor em float e ainda dá erro

 

Fio...Não apresenta porque você nao mandou imprimir...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso aqui nao eh codigo de impressao:

 

printf("\nVetor B\n");
  for (i=0; i<=15; i++) {
for (ct=0; ct<=14; ct++) {
	if (B[ct] < B[ct+1]) {
	   aux = B[ct];
	   B[ct] = B[ct+1];
	   B[ct+1] = aux; }
	}
 }

 

Como você tá convertendo? Poste o código. Fica f*** tentar adivinhar.

 

Arranca fora esse treco:

 

for(i=1;i<=A[i];i++) {
   fat = fat * i;
   B[i+1] = fat; }

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código como você pediu

 

 

/*vetor */
/*Exercicio 10 Apresentação vetor*/
# include<stdio.h>
# include<stdlib.h> 

int main()
{ //Inicio do programa
float A[15],B[15];
float fat,tmp;
int i,a,aux,ct; //Os inidices sempre são inteiros
a = 1;

while (a==1) {
system("cls");
system("color 71");

  for (i=0;i<15;i++)
  {
  printf("Digite um valor do A %d : ", i+1);
  scanf("%f",&A[i]);
  B[i] = A[i];
  }

for(i=0;i<15;i++) {
   tmp = A[i];
   fat = 1;
   while(tmp>1) {
	  fat*=tmp;
	  tmp--;
   }
   B[i] = fat;
}

   for (i=0; i<=15; i++) {
	for (ct=0; ct<=14; ct++) {
		if (B[ct] < B[ct+1]) {
		aux = B[ct];
		B[ct] = B[ct+1];
		B[ct+1] = aux; }
		}
		}

printf("\nVetor A\n");

	for (i=0;i<15;i++) {
	printf("   %0.f\n",A[i]);
	}

printf("\nVetor B\n");
	for (i=0;i<15;i++) {
	printf("   %0.f\n",B[i]);
	}

	   
printf("\n");
printf("\n\nDeseja entrar com uma nova matriz?   (1=Sim e 0=nao)");
scanf("%d",&a);
}
printf("\n\n\n");

system("pause");
return 0;
} //Fim do programa

Compartilhar este post


Link para o post
Compartilhar em outros sites
float fat,tmp;

 

Fatorial está nos inteiros.Troque pra int.

E você não está convertendo o array p/ float,mesmo porque é impossível converter um array p/ qualquer tipo (arrays não são tipos). você está atribuindo um float a um array de inteiros. É totalmente diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu falei pra você trocar AMBOS (fat e tmp) pra int...

Quando você faz int = int * float vai dar erro mesmo.você continua atribuindo um float pra um int.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.