prinos 0 Denunciar post Postado Junho 12, 2012 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
quitZAUMMM 18 Denunciar post Postado Junho 13, 2012 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
Isaias Tavares 0 Denunciar post Postado Junho 13, 2012 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
Renato Utsch 24 Denunciar post Postado Junho 13, 2012 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
Isaias Tavares 0 Denunciar post Postado Junho 13, 2012 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
Renato Utsch 24 Denunciar post Postado Junho 13, 2012 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
Isaias Tavares 0 Denunciar post Postado Junho 14, 2012 Muito obrigado pela explicação Renato. Eu não sabia disso. Abraço Compartilhar este post Link para o post Compartilhar em outros sites