Ripper 0 Denunciar post Postado Setembro 19, 2009 Bom tenho esses dois problemas para resolver #include <stdio.h> #include <stdlib.h> /* Lista(10):Exercício 10. Uma pesquisa sobre o sabor de um novo refrigerante foi feita com várias pessoas. As mesmas preenchiam uma tabela com ‘o’ de ótimo ‘b’ de bom, ‘r’ de regular e ‘u’ de ruim. Faça um programa que leia as respostas coletadas pela pesquisa sendo que o fim das respostas será indicado por ‘-‘. Outras letras devem ser desconsideradas. O programa deve (i) indicar a quantidade de respostas (ii) indicar o total de respostas (iii) calcular a porcentagem de cada uma das respostas, e (iv) indicar se a soma de respostas ‘o’ e ‘b’ é maior ou não que a soma de respostas ‘r’ e ‘u’. */ int main () { int o=0,b=0,r=0,u=0; int i,n,a; printf("Digite o numero de pessoas na pesquisa: "); scanf("%d",&n); for (i=1;i<=n;i++) { printf("\nSeja bem vindo a pesquisa de opiniao sobre nosso refrigerante\n"); printf(" Digite um numero: \n"); printf("\t1-o para otimo\n \t2-b para bom\n \t3-r para regular\n \t4-u para ruim\n <- para terminar>"); scanf("%d", a); switch(a) { case 1: o++; break; case 2: b++; break; case 3: r++; break; case 4: u++; break; } } printf("O numero de respostas o foi: %d\n",o); printf("O numero de respostas b foi: %d\n",B); printf("O numero de respostas r foi: %d\n",r); printf("O numero de respostas u foi: %d\n",u); printf("O numero total de respostas foi: %d\n",n); printf("A porcentagem de respostas o foi: %d%%\n",( (o/n)*100 ) ); printf("A porcentagem de respostas b foi: %d%%\n",( (b/n)*100 ) ); printf("A porcentagem de respostas r foi: %d%%\n",( (r/n)*100 ) ); printf("A porcentagem de respostas u foi: %d%%\n",( (u/n)*100 ) ); system("pause"); return 0; }e #include <stdio.h> #include <stdlib.h> #include <math.h> /*Exercício 7. (a) Elaborar um programa para exibir as n primeiras parcelas da série de Fibonacci. 0, 1, 1, 2, 3, 5, 8,...*/ int main() { int F[100]; int n; int i; printf("Digite o numero de parcelas a serem exibidas: "); scanf("%d",n); for(i=1;i<=n;i++) { float a=(1/sqrt(5)); float b=((1+sqrt(5))/2); float c=((1-sqrt(5))/2); F[i]=( a*pow(b,(i-1)) - a*pow(c,(i-1)) ); printf("As %d primeiras parcelas sao: %d",n,F[i]); } system("pause"); return 0; }No primeiro para qualquer numero que eu digito antes do switch ele sempre registra na opiniao b (mesmo digitando 1, 3 ou 4) e no segundo depois de digitar o numero de parcelas o programa para.Agradeço pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 19, 2009 No primeiro, é bem simples: scanf("%d", &a); Tem um erro na linha 39 tbm... E, só uma dica, escreva uma coisa por linha! O código fica muito mais legível. Já o segundo tem erros graves! E se eu quiser exibir os 120 primeiros items da sequencia?? O seu programa só aguenta 100, sem contar que o seu programa nem avisa que não é possível mostrar mais de 100 items. O erro é o mesmo, na linha 13, não esqueca que scanf recebe ponteiros! ps.: Já que é preciso mostrar todos os números da sequencia, até o item "n", você tem que guardar os resultados, portanto, não há necessidade de utilizar a fórmula de binet. Use a definição da sequencia: fib(n): if n == 0 return 0 elif n == 1 return 1 elif return fib(n-1) - fib(n-2) Recomendo a leitura deste tópico. Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Setembro 19, 2009 Valeu vitor, so que no primeiro código as porcentagens sempre saem iguais a zero e eu não estou conseguindo resolver. O que faço ? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 20, 2009 Tente mudar a ordem dos fatores, que, nesse caso, alterará o resultado. Tenha em mente que é uma divisão de inteiros, portanto, se o resultado de "o/n" for menor que 1, se transformará em zero. zero * 100 = zero Agora, se primeiro multiplicarmos o "o" por 100, o resultado ja não será menor que 1 printf("A porcentagem de respostas o foi: %d%%\n",( (o*100)/n ) ); Compartilhar este post Link para o post Compartilhar em outros sites