babylon 0 Denunciar post Postado Setembro 5, 2008 Aew galera beleza? Seguinte estava resolvendo estes exericios de C e me bateu uma duvia quanto a resolução de alguns, tipo alguns eu ja fiz e ate msm estou postando a resposta deles tb paa vcs verem se estão corretos e ate msm me ajuda quanto aos demais outos que eu não fiz. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Bom então la vai: 1) Elabore um algoritmo para o cálculo do máximo divisor comum entre 2 números. 2) Implemente um algoritmo que leia três números e apresente sua média. 3) Implemente um algoritmo leia “n” números digitados e apresente sua média (Pode-se utilizar algum flag ou ler previamente o valor de n). 4) Dados “n” números, lidos pelo algoritmo, calcule a média entre o maior e o menor número da seqüência fornecida. 5) Crie um algoritmo que dado um número inteiro e uma razão, calcule a somatória dos primeiros 5 termos da Progressão Aritmética, determinada por estes números. 6) Implemente um algoritmo que exiba os primeiros “n” termos da PA de razão 2 e termo inicial 4. 7) Dado o algoritmo abaixo, analise-o e constate o resultado da execução do mesmo. main() { int i=1,j=2,k=3,l=4; i++; k=++i; l=j++; ++j; printf(“%d %d %d %d”,i,j,k,l); } 8) Elabore um programa que solicite 2 números e uma operação matemática elementar (+-*/) e a execute. 9) Elabore um programa que informe se um número lido é primo. 10) Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1, y1) e P(x2, y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é: 11) Escreva um algoritmo que calcule o valor (aproximado) de cos(x), dado pela aproximação abaixo: O programa deve ler o valor de x, e realizar a aproximação somando os 4 primeiros termos. Resolução dos que eu ja fiz: 2 #include <stdio.h> #include <stlib.h> void main { int num1, num2, num3 float media media = 0 printf ("Digite 3 numeros") scanf ("%d %d %d", &num1, &num2, &num3) if (media != 0) media = num1 + num2 + num3 printf ("A media é" "%f" &media) 3 #include <stdio.h> #include <stlib.h> void main { int num1, x x=0 float media media = 0 printf ("Digite um numero") scanf ("%d", &num) while (num != 0) if (num % 2 = 0) media = num + media x++ media = media / x printf ("A media é" "%f" &media) 7 i == 2 k == 3 l == 3 j = =4 8 #include <stdio.h> #include <stlib.h> void main { int num1, num2, operacao operacao = 0 char opescolha printf ("Digite um numero") scanf ("%d", &num) prinf ("Digite um numero sendo 1- Soma, 2- Subtração, 3- Multiplicação, 4- Divisão) swicth opescolha case 1: operacao = num 1 + num 2 printf ("A soma é" "%d" operacao) case 2: operacao = num 1 - num 2 printf ("A subtração é" "%d" operacao) case 1: operacao = num 1 * num 2 printf ("A multiplição é" "%d" operacao) case 1: operacao = num 1 / num 2 printf ("A divisão é" "%d" operacao) else printf ("Escolha invalida") Bom se alguem puder me ajuda quanto aos outros (pelo que eu sei nem existe formula 100% para se calcular numeros primos neh e tem como exercicio... =/) e msm quanto as respostas destes aqui (usando FOR, WHILE ou DO WHILE).... Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Setembro 5, 2008 Bom vamos por etapas... 1- Não entendi essa do máximo divisor comum, não quer dizer aquele lance lá do mínimo múltiplo comum? 2- Não acredito que esteja certo esse algoritmo... o certo seria: #include <stdio.h> #include <stlib.h> int main() { int num1, num2, num3; float media = 0; printf ("Digite 3 numeros"); scanf ("%d %d %d", &num1, &num2, &num3); media = (num1 + num2 + num3) / 3; printf ("A media é %f", media); return 0; }PS. você notou que você esqueceu total e completamente de todo e qualquer tipo de "ponto e vírgula" que são obrigatórios nos programas em C, certo? 3- Também receio que esteja errado: #include <stdio.h> #include <stlib.h> #define FLAG 10 int main() { int num1 = 0, x = 0; float media = 0; while(x++ < FLAG) { printf("Digite um numero\n"); scanf ("%d", &num1); media += num1; } media /= FLAG; printf ("A media é %f", media); return 0; } 4- Basta ler os numeros, manter as variáveis maior e menor definidas para zero, e quando ler o primeiro numero, defini-lo para as variáveis maior e menor também... Então você vai lendo mais números até terminar o loop (vide a resolução anterior...), e vai verificando: se o número for maior que a variável maior, atribui ele para a variável. Se for menor que a variável menor, atribui ele para a variável. Depois você só faz a média entre as duas variáveis. 5- Lembra a fórmula da progressão né? An = A1 + R * (n - 1); Dá uma desenvolvida aí... E pra soma agora não lembro direito como era, acho que era algo como SOMA DOS N TERMOS = (a1 + an)*n / 2; Dá uma pesquisada que tu descobre. 6- Vide resolução anterior... A diferença é que agora a PG é fixa a soma que é dinâmica mas sabendo as fórmulas fica barbada. 7- No final todo mundo fica com valor 3. Lembre-se que quando ++ vem na frente, primeiro incrementa a variável depois usa ela na expressão. Quando vem atrás, primeiro pega o valor original pra usar na expressão depois incrementa a variável. 8- Você está lendo apenas um número, em uma variável inexistente (num; as variáveis disponíveis são num1 e num2). Não se usa espaço em nomes de variáveis, reveja as operações. Você não fechou as aspas no printf que pede a operação. Não se separa o texto do printf, você escreve uma grande string com os formats e depois passa nos outros parâmetros as variáveis. Reveja as minhas soluções anteriores pra entender como é. Novamente tu esqueceu os pontos-e-vírgula. Reveja seus ifs e outros bagulhos, lembre-se que pra executar várias instruções tem que envolver em chaves. 9- Existem vários tópicos sobre números primos aqui no fórum, dê uma pesquisada. 10- Esqueceu de postar a tal fórmula. Qualquer coisa, usa essa fórmula que uso nos meus jogos: distância = deltax + deltay. Os deltas são os módulos de x1 - x2 e y1 - y2. 11- Essa aqui passo... Qualquer coisa tem funções que calculam seno e cosseno na biblioteca math.h. hehe. Falopa! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Setembro 5, 2008 Máximo divisor comum != mínimo múltiplo comum. MDC é o maior inteiro que divide os dois números. MMC é o menor múltiplo dos dois números (menor potencia dos fatores primos comuns). 6) Implemente um algoritmo que exiba os primeiros “n” termos da PA de razão 2 e termo inicial 4. Não tem PG e não precisa calcular soma.É só um for. 7- No final todo mundo fica com valor 3. Lembre-se que quando ++ vem na frente, primeiro incrementa a variável depois usa ela na expressão. Quando vem atrás, primeiro pega o valor original pra usar na expressão depois incrementa a variável. Não fica todo mundo igual a 3. i = 3 , j = 4, k=3 , l=2 Quando se faz b = a++, b recebe o valor de a original e só depois disso a é incrementado. Se for b = ++a, as duas variáveis ficam com o mesmo valor. No 8 você esqueceu dos breaks em cada case. 10 e 11 são fáceis,já que as fórmulas são dadas. Compartilhar este post Link para o post Compartilhar em outros sites
rezeile72 0 Denunciar post Postado Setembro 5, 2008 help! Faça uma função recursiva, em linguagem C, que calcule o valor da série S descrita a seguir para um valor n>0 a ser fornecido como parâmetro para a mesma: S = 1 + 1/1! + 1/2! + 1/3! + 1 /n!. Estou encontrando problema para chegar a uma solução, alguém pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Setembro 6, 2008 Máximo divisor comum != mínimo múltiplo comum. MDC é o maior inteiro que divide os dois números. MMC é o menor múltiplo dos dois números (menor potencia dos fatores primos comuns). Dessa eu não sabia :P 6) Implemente um algoritmo que exiba os primeiros “n” termos da PA de razão 2 e termo inicial 4. Não tem PG e não precisa calcular soma.É só um for. Perdão escrevi errado... 7- No final todo mundo fica com valor 3. Lembre-se que quando ++ vem na frente, primeiro incrementa a variável depois usa ela na expressão. Quando vem atrás, primeiro pega o valor original pra usar na expressão depois incrementa a variável. Não fica todo mundo igual a 3. i = 3 , j = 4, k=3 , l=2 Quando se faz b = a++, b recebe o valor de a original e só depois disso a é incrementado. Se for b = ++a, as duas variáveis ficam com o mesmo valor. Que ótimo, eu copiei todo o código umas duas vezes para o bloco de notas, fui fazendo passo a passo e nas duas vezes deu todo mundo três, agora copiei todos denovo, fiz denovo, e deu certo como tu postou. Bom... deixa pra lá ^^ Tchau tchau! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Setembro 6, 2008 help! Faça uma função recursiva, em linguagem C, que calcule o valor da série S descrita a seguir para um valor n>0 a ser fornecido como parâmetro para a mesma: S = 1 + 1/1! + 1/2! + 1/3! + 1 /n!. Estou encontrando problema para chegar a uma solução, alguém pode me ajudar? Por que não abre outro tópico filho? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Setembro 6, 2008 Ele abriu. Abaixo do topico dele tem outro topico sobre a mesma coisa... Povo usa google mas não usa busca em fórum... Compartilhar este post Link para o post Compartilhar em outros sites
rezeile72 0 Denunciar post Postado Setembro 6, 2008 help! Faça uma função recursiva, em linguagem C, que calcule o valor da série S descrita a seguir para um valor n>0 a ser fornecido como parâmetro para a mesma: S = 1 + 1/1! + 1/2! + 1/3! + 1 /n!. Estou encontrando problema para chegar a uma solução, alguém pode me ajudar? Por que não abre outro tópico filho? Desculpe, mas é que sou novo, estou apenas iniciando, você poderia me dar dica sobre esse problema? veja o q fiz. #include <stdio.h> long int fatfrac(float n) { int fat,frac=0, i; if (n == 0) return 1; else { if (n>0) for (i=1; i<=n; i++) fat = n*fatfrac(n-1); frac = frac + fat; return frac; } } int main(void) { int n; float s2; printf("Digite o número:"); scanf("%d", &n); s2=fatfrac(n); printf("\nA soma dos números de 1 a %d e: %2.5f ",n,s2); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Setembro 7, 2008 E mesmo alguém falando p/ abrir outro tópico você insiste em postar algo que não tem absolutamente nada a ver com o topico, mesmo existindo um topico sobre a mesma coisa postado há 3 dias e na primeira página do forum... Mesmo você tendo aberto um tópico pra isso,que é onde você deveria postar... É só correr os olhos e ler a pagina ou ir no perfil e clicar no link... Organização em fóruns é bom. Compartilhar este post Link para o post Compartilhar em outros sites