fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <math.h>
  5. #include <string.h>
  6.  
  7. double calculoQtIteracao(double raizA, double raizB, double testeParada) {
  8. return round((log10(raizB - raizA) - log10(testeParada)) / log10(2));
  9. }
  10.  
  11. double calculoC(double raizA, double raizB) {
  12. return (raizA + raizB) / 2;
  13. }
  14.  
  15. double calculoModuloAB(double raizA, double raizB) {
  16. return abs(raizA - raizB);
  17. }
  18.  
  19. double calculoFxF(double raizA, double resultC){
  20. return (pow(raizA, 3) - 3 * raizA - 1) * (pow(resultC, 3) - 3 * resultC - 1);
  21. }
  22.  
  23. char verificacaoSinal(double resultFxF){
  24. return resultFxF < 0 ? '-' : '+';
  25. }
  26.  
  27. double trocaAB(double raizA, double raizB, double resultC, char verificacaoSinal) {
  28. return verificacaoSinal == '+' ? resultC : raizA;
  29. //o código aqui estava todo errado, isso ainda está errado, mas é o que executaria
  30. }
  31.  
  32. void painelPerguntas() {
  33. double raizA = 0, raizB = 0, testeParada = 0;
  34. printf("RAIZ [a]: ");
  35. scanf("%lf", &raizA);
  36. fflush(stdin);
  37. printf("RAIZ [B]: ");
  38. scanf("%lf", &raizB);
  39. fflush(stdin);
  40. printf("PARADA: ");
  41. scanf("%lf", &testeParada);
  42.  
  43. double qtIteracoes = calculoQtIteracao(raizA, raizB, testeParada);
  44. double resultC = calculoC(raizA, raizB);
  45. double resultAB = calculoModuloAB(raizA, raizB);
  46. double resultFxF = calculoFxF(raizA, resultC);
  47. char resultSinal = verificacaoSinal(resultFxF);
  48. double resultTrocaAB = trocaAB(raizA, raizB, resultC, resultSinal);
  49.  
  50. printf("\n N | A | B | C | |A-B| | F(A).F(C) | SINAL");
  51. //o problema estava aqui, falta declarar os vetores
  52. double vetorA[(int)qtIteracoes + 1];
  53. double vetorB[(int)qtIteracoes + 1];
  54. double vetorC[(int)qtIteracoes + 1];
  55. double vetorAB[(int)qtIteracoes + 1];
  56. double vetorFxF[(int)qtIteracoes + 1];
  57. char vetorSinal[(int)qtIteracoes + 1];
  58. //isso também não faz sentido no momento
  59. for (int cont = 0; cont <= qtIteracoes; cont++) {
  60. vetorA[cont] = resultTrocaAB;
  61. vetorB[cont] = resultTrocaAB;
  62. vetorC[cont] = resultC;
  63. vetorAB[cont] = resultAB;
  64. vetorFxF[cont] = resultFxF;
  65. vetorSinal[cont] = resultSinal;
  66. printf("\n%d %f %f %f %f %f %c", cont, vetorA[cont], vetorB[cont], vetorC[cont], vetorAB[cont], vetorFxF[cont], vetorSinal[cont]);
  67. }
  68. }
  69.  
  70. int main(){
  71. painelPerguntas();
  72. }
Success #stdin #stdout 0s 2168KB
stdin
25
36
5
stdout
RAIZ [a]: RAIZ [B]: PARADA: 
    N        |    A        |    B         |    C         |   |A-B|        |    F(A).F(C)       |  SINAL
0 30.500000 30.500000 30.500000 11.000000 439727663.625000 +
1 30.500000 30.500000 30.500000 11.000000 439727663.625000 +