Ir ao conteúdo

Posts recomendados

Postado

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


 

  • Membro VIP
Postado
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
Postado

@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.

  • Membro VIP
Postado
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
Postado

@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
  • Membro VIP
Postado

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.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!