Ir para conteúdo

POWERED BY:

Arquivado

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

prinos

C - Vetor

Recommended Posts

segue o enunciado: Escreva um algoritmo que leia dois vetores A e B de N valores reais cada. Após a digitação, somar os valores positivos do vetor A e os valores ímpares do vetor B. Imprimir o vetor que apresentou a menor soma.

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
   int A[10], B[10], N, cont=0, soma, soma_positive;
       for(N=1; N<=10; N++){
            printf("Informe os valores do vetor A[%d]: ",N);
            scanf("%d", &A[N]);
            printf("Informe os valores do vetor B[%d]: ",N);
            scanf("%d", &B[N]);
            }
            for(N=1; N<=10; N++){
              if(B[N]%2==1){ 
                printf("\nB[N]: %d", N, B[N]);
                soma = soma + B[N];
                }       
            }
            printf("\nSoma: %d", soma);
            if(A[N]>0){
                       printf("\nA[N]: %d", N, A[N]);
                       cont = cont + 1;
                       soma_positive = soma_positive + A[N];
                       }else{
                             printf("numero negativo");
                       }
                       printf("soma dos numeros positivos = %d", soma_positive); 

 

Galera, to conseguindo fazer a soma dos impares do vetor B, mas nao to conseguindo fazer as somas dos positivos do vetor A. Alguem poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você usa essa variável N no primeiro loop e depois usa denovo num loop interno..

use outras variáveis uma para cada loop que eu creio que seu problema será resolvido..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que colocar a condiçao do vetor A e do vetor B dentro do for. Como você pode ver, a condição do vetor A está fora do for, por isso não está dando certo

 

As seguintes partes não deve ser imprimidas dessa forma

 

printf("\nB[N]: %d", N, B[N]);

 

printf("\nA[N]: %d", N, A[N]);

 

O certo seria deixar essa parte para o final e ficaria mais ou menos assim:

 

    if (soma_positive < soma) {
       for (N=1; N<=10; N++) {
           printf("%d ", A[N]);
       }
   }
   else {
       for (N=1; N<=10; N++) {
           printf("%d ", B[N]);
       }
   }

 

A parte:

cont = cont + 1;

não tem funcionalidade nenhuma no seu codigo.

 

De acordo com o exercicio, não tem pq você colocar a seguinte parte:

 

else{
                             printf("numero negativo");
                       }

 

Pronto, acho que é isso, espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa, aprenda a programar começando a contar a partir do 0, é assim que funciona em prog, e não a partir do 1.

 

---

 

Esse código:

 

soma = soma + B[N];

 

É escrito de uma maneira mais concisa e recomendada desse modo:

 

soma += B[N];

 

Também existem os operadores -=, *=, /= e %= além de +=.

 

---

 

Esse código:

 

cont = cont + 1;

 

Pode ser escrito como:

 

cont += 1;

 

Como eu expliquei acima, mas quando você vai somar apenas um número, já que é algo muito usado, você pode (na realidade, deve) substituir por:

 

++cont;

 

Também existe o operador -- além de ++.

 

E HÁ diferença entre ++cont e cont++.

 

 

 

Abraços :D

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Renato,

 

eu ainda não vi em programação ++cont, ate agora so conheço cont++ que é a mesma coisa que cont = cont + 1;

 

Como você falou que há diferença, você pode explicar qual é a diferença?

 

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
eu ainda não vi em programação ++cont, ate agora so conheço cont++ que é a mesma coisa que cont = cont + 1;

 

É aí que você se engana, vários autores ensinam isso errôneamente. O statement abaixo:

 

cont = cont + 1;

 

É equivalente a:

 

cont += 1;

 

Que é equivalente a:

 

++cont;

 

Não sei dizer sobre linguagens que não sejam C e C++, mas "cont = cont + 1;" em C e C++ é igual a "++cont;", e não "cont++;".

 

O cont++ só vai fazer o incremento 1 statement depois do seu próprio statement, enquanto o ++cont faz o incremento na hora.

 

Faça o teste do programa abaixo para entender:

 

#include <stdio.h>

int main(void)
{
   int i = 1, j = 1, k = 1, l = 1;

   printf("%d\n", ++i); // i vai ser incrementado na hora, antes de ser mostrado na tela.

   printf("%d\n", j++); // j vai ser incrementado após o printf() acabar (você pode considerar que 1 statement é o j++ e o 2º é o printf()).

   ++k; // k vai ser incrementado na hora.
   printf("%d\n", k);

   j++; // j vai ser incrementado somente após 1 statement.
   printf("%d\n", l);

   return 0;
}

 

O resultado é:

 

2
1
2
1

 

 

Isso não faz diferença no for. Mas, de qualquer modo, recomendo sempre usar ++var no for, pois evita confusão e mostra sua intenção de incrementar na hora mesmo.

 

 

 

Abraços :D

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.