Ir para conteúdo

POWERED BY:

Arquivado

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

Ripper

Pesquisa de opiniao e fibonacci

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.