Ir ao conteúdo
  • Cadastre-se
Igor Vargas

C Farorial. Passe o resultado para outro vetor

Recommended Posts

Construa um algoritmo que leia um vetor A de 15 elementos. Construir um vetor B de mesmo tipo, sendo que cada elemento do vetor B deverá ser o resultado do fatorial correspondente de cada elemento de A. Apresentar os 2 vetores.

Nao consigo fazer esse exercicio.

#include <stdlib.h>
#include	<stdio.h>
#include 		<math.h>
int fatorial(int a[5],int b[5]){
	int fat[5];
	int x;
	int c[5];
	int outro;
	int teste;
		for(x=1; x<5; x=x-1){
			b[x]=a[x];
			c[x]=a[x];
			outro*=a[x];
		    a[x]=outro;
		    b[x]=a[x];
		}	
		for(x=0; x<5; x++){
			printf("%d sera %d\n",c[x],b[x]);
		}
}

main(){
int a[5];
int b[5];
int c[5];
  int fat;
	for(fat=0; fat<5; fat++){
		scanf("%d",&a[fat]);
	} fatorial(a,b);	
}


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer um programa mais simples... apenas que ler um número e exibe o seu fatorial... ai posta o código aqui e onde está com dúvidas, beleza?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Tentei fazer de maineira mais simples mas só sei fazer sem vetores.

 

main(){
	
int a;
 int x;
 	scanf("%d",&a);
 		for(x=1; a>1; a=a-1){
 			x=a*x;
    	

}
printf("%d",x);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 minutos atrás, Igor Vargas disse:

@Simon Viegas Tentei fazer de maineira mais simples mas só sei fazer sem vetores.

Tá, mas para quê você ia querer vetores?

 

 

Veja:

1 hora atrás, Simon Viegas disse:

Tente fazer um programa mais simples... apenas que ler um número e exibe o seu fatorial... ai posta o código aqui e onde está com dúvidas, beleza?

 

Você apenas vai ler UM número, e vai retornar o seu fatorial. Ex.:

Digito 5.

Ele vai me retornar 120. Simples assim. Vetores não vão servir para nada nesse contexto.

 

Veja, para se resolver qualquer problema, é necessário antes entendê-lo. Você tem alguma dúvida sobre o que é um fatorial? ou em qual parte tem dúvidas? Você precisa indicar em que tem dúvidas...

 

Tente fazer o código, posta ele aqui e onde tem dúvidas!

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Na verdade é um exercicio que me foi proposto ta em cima no post, acho que consegui fazer, se poder dar uma testada agradeço.

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





main(){
	
int a[15];
int b[15];
 int x,y,z;
 	for(y=1; y<=15; y++){
 		scanf("%d",&a[y]);
 		for(x=1; a[y]>1; a[y]=a[y]-1){
 			x=a[y]*x;
        b[y]=x;
}
printf("%d",b[y]);
}

}

Consegui fazer o codigo fica assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites
25 minutos atrás, Igor Vargas disse:

@Simon Viegas Na verdade é um exercicio que me foi proposto ta em cima no post, acho que consegui fazer, se poder dar uma testada agradeço.

Testei aqui... ao digitar um número maior que 5, o programa trava! Precisa corrigir.

 

Alguns outros pontos:

1#

Sempre mantenha o código indentado. Ex.:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
main() {
    int a[15];
    int b[15];
    int x,y,z;
    for (y=0; y<15; y++) {
        scanf("%d",&a[y]);
        for(x=1; a[y]>1; a[y]=a[y]-1) {
            b[x]=x;
            x=a[y]*x;
            b[x]=x;
        }
    printf("%d",b[x]);
    }
}

Obs.: sugiro utilizar espaços, em vez de tabulação. (configurar o editor de código para inserir espaços ao pressionar tab, vem vez de tabular).

 

 

 

2#

Sobre:

25 minutos atrás, Igor Vargas disse:

            b[x]=x;
            x=a[y]*x;
            b[x]=x;

Você está atribuindo o valor no vetor 2 duas vez a cada loop. Onde na verdade só precisaria atribuir UMA vez após achar o valor, ou seja, essa atribuição fica depois do for interno.

 

 

 

2#

Em relação ao enunciado.

2 horas atrás, Igor Vargas disse:

Construa um algoritmo que leia um vetor A de 15 elementos. Construir um vetor B de mesmo tipo, sendo que cada elemento do vetor B deverá ser o resultado do fatorial correspondente de cada elemento de A. Apresentar os 2 vetores.

 

Precisaria verificar:

- Primeiro você ler o vetor A, depois gera o vetor B. Você está fazendo tudo ao mesmo tempo;

- É para ser apresentado os 2 vetores, você está apresentando só um.

 

 

***

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Obrigado pelas sugestões e paciencia haha mas em fim consegui.

 

#include <stdlib.h>
#include	<stdio.h>
#include 		<math.h>
int teste[15];
int fatorial(int a[],int b[]){
	int x;
	for(x=1; x<16; x++){
		a[x]=teste[x];
		printf("O fatorial de %d sera %d\n",a[x],b[x]);
	}
}

main(){
	
int a[15];
int b[15];
 int x,y,z;
 	for(y=1; y<16; y++){
 		scanf("%d",&a[y]);
 		teste[y]=a[y];
 		for(x=1; a[y]>1; a[y]=a[y]-1){
 			x=a[y]*x;
        b[y]=x;
       
}


}
fatorial(a,b);
	

}

Mas só funciona se o numero for menor ou igual a 15 n consegui fazer com qualquer numero.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#

A indentação continua falha. É necessário que sempre esteja indentado.

 

Veja a diferença:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int teste[15];

int fatorial(int a[],int b[]) {
    int x;
    for(x=1; x<16; x++) {
        a[x]=teste[x];
        printf("O fatorial de %d sera %d\n",a[x],b[x]);
    }
}

main() {
    int a[15];
    int b[15];
    int x,y,z;
    for(y=1; y<16; y++) {
        scanf("%d",&a[y]);
        teste[y]=a[y];
        for(x=1; a[y]>1; a[y]=a[y]-1) {
            x=a[y]*x;
            b[y]=x;
        }
    }
    fatorial(a,b);
}

 

 

 

2#

Sobre:

6 minutos atrás, Igor Vargas disse:

"O fatorial de %d sera"

Creio que o tempo verbal está errado... deveria ser "O fatorial é".

 

 

 

3#

Você continua atualizando o vetor b[] a cada loop. É um erro. Só precisa atualiza após ter calcular o fatorial.

 

 

 

4#

Em C, um vetor de N posições vai da posição 0 até a N-1. Você está fazendo de 1 a N.

 

 

 

5#

Você não deve mexer na variável a[], ou seja, ela serve para armazenar os dados de entrada.. não deveria também ser usada para ajudar nos cálculos...

 

 

***

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×