VegasColt 0 Denunciar post Postado Novembro 2, 2009 boa tarde pessoal... desculpe o incomodo,eu to um problema aqui q nao estou conseguindo entender.... eu tenho q construir um programa q leia uma sequencia (sem quantidade estipulada) de numeros nao positivo e exiba a soma dos numeros invalidos int verific(int a) { int retorno; if (a<0) retorno =0; else retorno =1; return(retorno); } int somatotal(int B) { int soma; soma=0; soma=soma+b; return(soma); } int main() { printf("\n _________________________________\n "); printf("\n| Verificacao de Numeros |\n"); printf("\n| |\n"); printf("\n| Desenvolvido por VegasColt |\n"); printf("\n|_________________________________| \n "); printf("\n"); int i,v,x,npos[10],total; total=0; printf("Por Favor Digite a Quantidade de Numeros e ser Verificado \t"); scanf("%d",&v); while(v<=0||v>10) { printf("Por Favor Digite um Numero entre 1 ou 10 \t"); scanf("%d",&v); } for (i=0;i<v;i++) { printf("Por Favor Digite o Numero a Ser Comparado \t"); scanf("%d",&x); printf("\n"); if(verific(x)==0) { printf("O numero Digitado e Negativo \n\n"); } if (verific(x)==1) { printf("O numero Digitado e Positivo \n\n"); npos[i] = x ; } } for (i=0;i<v;i++) { total=somatotal(npos[i]); } printf("O Total da Soma dos Numeros Invalidos %d \n",total); system("pause"); return(0); } ta tudo funcionando direito so nao to conseguindo imprimir a soma dos numeros invalidos,alguem pode me dar uma ideia daonde eu to errando??? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Novembro 2, 2009 note que "somatotal" não está retornando nada... Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Novembro 2, 2009 eu concertei isso,foi mal,mas mesmo assim da erro.... olha so o erro isso quando digito numeros negativos e esse e quando eu digito numeros positivos tipo eu percebi que ele imprime o ultimo numero digitado como o numero da soma Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Novembro 2, 2009 Cara, sua função "somatotal" esta errada. Você não esta armazenando a soma anterior: int somatotal(int B) { int soma; soma=0; soma=soma+b; return(soma); } ---------------- for (i=0;i<v;i++) { total=somatotal(npos[i]); // Voce nao utiliza valor retornado pela funcao, voce esta perdendo a soma anterior. } Eu recomendo que você utilize o método de programção KISS, e ao invéz de fazer uma função para calcular o total faça tudo no for mesmo: for (i=0;i<v;i++) { total+=npos[i]; } Boa sorte. o/ Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Novembro 2, 2009 Cara, sua função "somatotal" esta errada. Você não esta armazenando a soma anterior: int somatotal(int B) { int soma; soma=0; soma=soma+b; return(soma); } ---------------- for (i=0;i<v;i++) { total=somatotal(npos[i]); // Voce nao utiliza valor retornado pela funcao, voce esta perdendo a soma anterior. } Eu recomendo que você utilize o método de programção KISS, e ao invéz de fazer uma função para calcular o total faça tudo no for mesmo: for (i=0;i<v;i++) { total+=npos[i]; } Boa sorte. o/ esse for q você fala e o for do intmain()? e o q seria metodo KISS? tipo brother eu to com um problema se eu digitar numeros positivos e numeros negativo ele imprime um valor absurdo.... tipo se liga na minha ideia,ele ia ler,os numeros e so armazenaria no vetor os numeros positivos,e depois usaria esse vetor pra calcular,so q nao sei o q fazer pq se eu digita tudo numero negativo ele faz a soma mesmo assim,o q você me indicaria fazer Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Novembro 2, 2009 static... declare a variável da função "somatotal" como static. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 2, 2009 e o q seria metodo KISS? Keep it simple,stupid. eu tenho q construir um programa q leia uma sequencia (sem quantidade estipulada) de numeros nao positivo e exiba a soma dos numeros invalidos Sem quantidade estipulada,mas você define um total de números a serem verificados... O resultado da soma dos números negativos não é erro...É você mesmo quem não coloca eles no array.Supondo que eles são válidos, então existe um erro de lógica: if(verific(x)==0) { printf("O numero Digitado e Negativo \n\n"); } #include <stdio.h> int main(){ int numero_digitado; int soma = 0 ; while (1) { printf("Por Favor Digite o Numero a Ser Comparado \t"); scanf("%d",&numero_digitado); if (numero_digitado == 0) break; if (numero_digitado < 0) printf("O numero Digitado e Negativo \n\n"); else { printf("O numero Digitado e Positivo \n\n"); soma += numero_digitado; } } printf("O Total da Soma dos Numeros Invalidos %d \n",soma); return(0); } Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Novembro 2, 2009 static... declare a variável da função "somatotal" como static. e vitor valeu pela ideia do static,isso me ajudou em outra situação tipo eu so dei bobera pq eu tava iniciando com 0...ae continuou o erro, ae tirei a linha e funcionou perfeito..... e o q seria metodo KISS? Keep it simple,stupid. eu tenho q construir um programa q leia uma sequencia (sem quantidade estipulada) de numeros nao positivo e exiba a soma dos numeros invalidos Sem quantidade estipulada,mas você define um total de números a serem verificados... O resultado da soma dos números negativos não é erro...É você mesmo quem não coloca eles no array.Supondo que eles são válidos, então existe um erro de lógica: if(verific(x)==0) { printf("O numero Digitado e Negativo \n\n"); } #include <stdio.h> int main(){ int numero_digitado; int soma = 0 ; while (1) { printf("Por Favor Digite o Numero a Ser Comparado \t"); scanf("%d",&numero_digitado); if (numero_digitado == 0) break; if (numero_digitado < 0) printf("O numero Digitado e Negativo \n\n"); else { printf("O numero Digitado e Positivo \n\n"); soma += numero_digitado; } } printf("O Total da Soma dos Numeros Invalidos %d \n",soma); return(0); } entendi isis....valeu pela a explicação do Kiss eu realmente refiz o programa do zero e percebi q o mais logico era fazer isso if(verific(x)==0) { printf("O numero Digitado e Negativo \n\n"); } if (verific(x)==1) { printf("O numero Digitado e Positivo \n\n"); npos[i] = x ; total=somatotal(npos[i]); } tipo o unico inconveniente isis e q fica aparecendo,que o total e zero quando digito tudo negativo,mas e bom q da pra ver q o vetor ta so acumulando os positivos DaniloInf,obrigado pela ideia,me mostrou q as vezes a simplicidade salva....ehehehe fora a isso obrigado a todos, q me ajudaram nesse dia,agradeço de coração e desculpa qualquer coisa...eheheh Compartilhar este post Link para o post Compartilhar em outros sites