Ir ao conteúdo

Posts recomendados

Postado

Boa tarde!

"Faça um programa que receba dois vetores de inteiros, A e B, de mesmo tamanho, multiplique os elementos de mesmo índice de ambos os vetores e armazene em um terceiro vetor C. O programa deverá retornar o MAIOR elemento do vetor C" a multiplicação está correta mas não sei como exibir o maior elemento de um vetor. 

Quem puder ajudar, agradeço!

#include <stdio.h>

int main()
{
    int N, i;
    scanf("%d", &N);
    int a[N],b[N],c[N];
 
                     for(i=0;i<N;i++){
                     scanf("%d",&a);
                     }                       
                     for(i=0;i<N;i++){
                     scanf("%d",&b);
                     }
                     for(i=0;i<N;i++){
                     c=a*b;
                     printf("%d\n", c);
                     }

return 0;
    } 

 

Postado

Você não pode definir um vetor dessa maneira, tem que ser um valor inteiro pré definido, o maximo que voce pode fazer é usar um define antes do algoritmo, mas do mesmo jeito não pode ser modificado nas funções, se você quer usar um vetor que aumente ou diminua conforme o tempo use uma estrutura de dados

Postado
3 minutos atrás, VictorFreitasKing disse:

Você não pode definir um vetor dessa maneira, tem que ser um valor inteiro pré definido, o maximo que voce pode fazer é usar um define antes do algoritmo, mas do mesmo jeito não pode ser modificado nas funções, se você quer usar um vetor que aumente ou diminua conforme o tempo use uma estrutura de dados

desculpe mas eu não entendi... como eu posso exibir o maior elemento de um vetor?

Postado
5 minutos atrás, AnaTrinity disse:

desculpe mas eu não entendi... como eu posso exibir o maior elemento de um vetor?

 

desculpe eu mosquei, usa um for, mas se n me engano na definição n da para usar um vetor com uma variavel definida, você pode fazer isso para identificar elementos, mas faz mt tempo q vi isso pode ser que eu esteja enganado

 

int j=0;

for (i=0;i<MAXIMO;i++){
    if (j==0){
        j=i;} //j seria uma variavel para identificar a posição anterior, no primeiro caso ela seria =i
    if (c[i]>=c[j]){
        maior=c[i];}
}

nesse código ele vai comparar o i e o j como elementos do vetor

  • Curtir 1
  • Membro VIP
Postado

@AnaTrinity

Seu código só mostra a multiplicação.

 

Agora você tem que procurar o maior elemento.

Faça assim. Crie uma variável MAIOR. Guarde o primeiro elemento do vetor C nele.

 

MAIOR=C[0];

 

Depois faça outro laço FOR varrendo os elementos e comparando eles com a variável criada.

 

@VictorFreitasKing

Também não entendi o que você disse. Ele definiu sim um valor inteiro.

  • Curtir 1
Postado

@Math.Pi

21 minutos atrás, Math.Pi disse:

@AnaTrinity

Seu código só mostra a multiplicação.

 

Agora você tem que procurar o maior elemento.

Faça assim. Crie uma variável MAIOR. Guarde o primeiro elemento do vetor C nele.

 

MAIOR=C[0];

 

Depois faça outro laço FOR varrendo os elementos e comparando eles com a variável criada.

 

Não entendi a parte de varrer os elementos, poderia me explicar?

  • Membro VIP
Postado
10 minutos atrás, AnaTrinity disse:

@Math.Pi

Não entendi a parte de varrer os elementos, poderia me explicar?

 

Como o @VictorFreitasKing  mostrou.

for...
{
 if (número > maior){
  maior = número;
}

 

traduzindo laço FOR para varrer o vetor C.

Se o número da vez for maior do que o que está guardado na váriável MAIOR, então substitui.

  • Curtir 1
Postado
3 minutos atrás, Math.Pi disse:

 

Como o @VictorFreitasKing  mostrou.

for...
{
 if (número > maior){
  maior = número;
}

 

traduzindo laço FOR para varrer o vetor C.

Se o número da vez for maior do que o que está guardado na váriável MAIOR, então substitui.

agora sim, muito obrigado!!!!

  • Curtir 1
  • Membro VIP
Postado
1 hora atrás, AnaTrinity disse:

Boa tarde!

"Faça um programa que receba dois vetores de inteiros, A e B, de mesmo tamanho, multiplique os elementos de mesmo índice de ambos os vetores e armazene em um terceiro vetor C. O programa deverá retornar o MAIOR elemento do vetor C" a multiplicação está correta mas não sei como exibir o maior elemento de um vetor. 

Quem puder ajudar, agradeço!

#include <stdio.h>

int main()
{
    int N, i;
    scanf("%d", &N);
    int a[N],b[N],c[N];
 
                     for(i=0;i<N;i++){
                     scanf("%d",&a);
                     }                       
                     for(i=0;i<N;i++){
                     scanf("%d",&b);
                     }
                     for(i=0;i<N;i++){
                     c=a*b;
                     printf("%d\n", c);
                     }

return 0;
    } 

 

adicionado 28 minutos depois

Olá a todos.

 

@VictorFreitasKing,

1 hora atrás, VictorFreitasKing disse:

Você não pode definir um vetor dessa maneira, tem que ser um valor inteiro pré definido, o maximo que voce pode fazer é usar um define antes do algoritmo, mas do mesmo jeito não pode ser modificado nas funções, se você quer usar um vetor que aumente ou diminua conforme o tempo use uma estrutura de dados

e

1 hora atrás, VictorFreitasKing disse:

to falando na definição do vetor, não na manipulaçao



Acho que você estava se referindo a esse trecho:
 

1 hora atrás, AnaTrinity disse:
	int N, i;
	scanf("%d", &N);
	int a[N],b[N],c[N];


Correto? se for, o código está correto! (pelo menos no sentido de compilar e funcionar. Não sei se é uma "boa prática", ou seja, se é a maneira correta de fazer um "vetor de tamanho dinâmico"). Está apenas definindo o tamanho do vetor usando o valor lido.

 

 

 

 

@AnaTrinity

Seria necessário ter interações com o usuário, ou seja, ao executar o programa apenas ficou uma tela preta com o cursor piscando... poderia fazer algo assim:

Abaixo como ficaria a tela:

Qual o tamanho de cada vetor?
4
Informe os 4 números do vetor A
1
2
3
4
Informe os 4 números do vetor B
4
2
6
7
Listando vetor C:
4, 4, 18, 28
O maior número do vetor C é 28

Obrigado por usar meu programa! Quero um real!

Entende?


Por favor, poste seu código atual para analisarmos.


PS: ao postar um código, antes pressione o botão <>, para o código ficar na tag CODE.
 

 

No aguardo.
 

  • Curtir 2
  • 2 semanas depois...
Postado

Boa tarde, esse foi o resultado final do código. Obrigado a todos!

 

#include <stdio.h>

int main()
{
    int N, i;
    scanf("%d", &N);
    int a[N],b[N],c[N];
 
                        while(N!=0){
			int m=0;
                            for(i=0;i<N;i++){
                                 scanf("%d",&a[i]);
                                 }                       
                                 for(i=0;i<N;i++){
                                 scanf("%d",&b[i]);
                                 }
                                 for(i=0;i<N;i++){
                                 c[i]=a[i]*b[i];
                                 }
                                 for(i=0;i<N;i++){
                                         if (c[i] > m)
                                         m=c[i];
                                         }
					
					printf("%d\n", m);

                                         scanf("%d\n", &N);}

return 0;
    }

 

  • Curtir 1
Postado
1 hora atrás, AnaTrinity disse:

 

Boa tarde, esse foi o resultado final do código. Obrigado a todos!

 

#include <stdio.h>

int main()
{
    int N, i;
    scanf("%d", &N);
    int a[N],b[N],c[N];
 
                        while(N!=0){
			int m=0;
                            for(i=0;i<N;i++){
                                 scanf("%d",&a[i]);
                                 }                       
                                 for(i=0;i<N;i++){
                                 scanf("%d",&b[i]);
                                 }
                                 for(i=0;i<N;i++){
                                 c[i]=a[i]*b[i];
                                 }
                                 for(i=0;i<N;i++){
                                         if (c[i] > m)
                                         m=c[i];
                                         }
					
					printf("%d\n", m);

                                         scanf("%d\n", &N);}

return 0;
    }

 

Vi esse post há uns dias e achei que já tinham resolvido, mas lá vai.

O código funciona por sorte, pois há uma multiplicação entre os dois primeiros vetores, então mesmo digitando somente números negativos irá funcionar para achar o maior, porém a lógica usada para encontrar o maior número de um vetor não é essa.

Não está certo iniciar "m = 0", o certo é iniciar a variável que será testada no "if" com a primeira posição do vetor.

Por Exemplo:

m = vet[0]
for(i = 1; i < n; i++){
   if(vet[i] > m) m = vet[i];
}

Para ficar mais claro, pense assim: Se você tiver um vetor de 5 posições apenas com números negativos, o que será printado de acordo com seu código? 0, e 0 não é o maior número.

 

Outra coisa, é horrível em questão de segurança iniciar o tamanho de um vetor por um scanf do usuário, se você ainda não tem conceitos de locação dinâmica, o melhor jeito é iniciar o vetor com por exemplo 1000 posições, perguntar para o usuário quantas ele quer usar, e então você faz o "for" até a quantidade que ele quer. E se ele quiser mais de 1000 posições? Manda digitar menos ou aprenda locação dinâmica.

  • Curtir 1
  • Membro VIP
Postado

Olá a todos:

 

1) INTERAÇÃO COM O USUÁRIO

@AnaTrinity, por favor, veja o que foi dito na minha postagem anterior sobre "interações com o usuário".. está com o mesmo problema! Aqui só aparece uma tela preta!!!! :(

 

 

 

2) INDENTAÇÃO DO CÓDIGO

Outra ponto é que sempre deve manter o seu código indentado... veja o exemplo abaixo:

#include <stdio.h>
int main() {
	int N, i;
	scanf("%d", &N);
	int a[N],b[N],c[N];

	while(N!=0) {
		int m=0;
		for(i=0;i<N;i++) {
			scanf("%d",&a[i]);
		}
		for(i=0;i<N;i++) {
			scanf("%d",&b[i]);
		}
		for(i=0;i<N;i++) {
			c[i]=a[i]*b[i];
		}
		for(i=0;i<N;i++) {
			if (c[i] > m)
				m=c[i];
		}
		printf("%d\n", m);
		scanf("%d\n", &N);
	}
	return 0;
}

Percebe a diferença?

 

Sugiro usar esse código como base.

 

 

 

3) VERIFICAÇÃO DE MAIOR NÚMERO

Siga o que foi sugerido por @Chrissy Costanza, ou seja, inicialize o menor com a primeira posição e faça as verificações restante a partir da segunda posição em diante.

 

 

 

 

4) VETORES DINÂMICOS

Também acho melhor seguir a orientação de @Chrissy Costanza. Daí ou usar um vetor grande, como 100, e limitar o tamanho máximo (não aceitar valores maior que 100) ou estudar e implementar vetores dinâmicos para usar de uma forma mais "elegante". Do jeito que está, apesar de funcionar, realmente fica estranho...

 

 

 

***

 

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!