Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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);	
}


 

Editado por Simon Viegas
Remover excesso linhas em branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas O programa em si na hora de printar o valor ele printa o resultado errado, nao estou achando a solucão do problema

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);
}

 

Editado por Igor Vargas

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.

Editado por Igor Vargas

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.

Editado por Simon Viegas
  • 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.

Editado por Igor Vargas
  • 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






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

×