Advertisement
SergioRP

Teste Kappa

Oct 2nd, 2016
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <conio.h>
  5.  
  6. struct exp {
  7.  
  8.     int a;
  9.     int b;
  10.     int c;
  11.     int d;
  12.  
  13. };
  14.  
  15. /*
  16.                      obs1
  17.                 sim       não
  18.             ---------------------------------------
  19.         sim |    a    |    b    |  a + b          |  sim (obs 2)
  20.    obs2     ---------------------------------------
  21.         não |   c    |    d    |  c + d          |  não (obs 2)
  22.             ---------------------------------------
  23.             |  a + c  |  b + d  |  a + b + c + d  |  total
  24.             ---------------------------------------
  25.                sim        não         total
  26.              (obs 1)    (obs 1)
  27. */
  28.  
  29.  
  30. void menu();
  31. void getValues(struct exp *ex);
  32. float kappa(int a, int b, int c, int d, int debug);
  33.  
  34. int main() {
  35.  
  36.     setlocale(LC_ALL, "portuguese");
  37.     struct exp exp;
  38.     char resp;
  39.  
  40.     do {
  41.  
  42.         menu();
  43.  
  44.         getValues(&exp);
  45.  
  46.         float result = kappa(exp.a, exp.b, exp.c, exp.d, 0);
  47.  
  48.         printf("\nValor do kappa: %.3f (Concordância ", result);
  49.  
  50.         if (result >= 0.81)
  51.             printf("excelente!");
  52.         else if (result >= 0.61)
  53.             printf("substancial");
  54.         else if (result >= 0.41)
  55.             printf("moderada");
  56.         else if (result >= 0.21)
  57.             printf("considerável");
  58.         else if (result >= 0.1)
  59.             printf("ligeira");
  60.         else
  61.             printf("pobre");
  62.  
  63.         printf(")\n");
  64.  
  65.         getResp:
  66.             printf("\nDeseja fazer outro experimento? <s/n>: ");
  67.             resp = getche();
  68.             resp = (resp == 'S' || resp == 'N' ? resp + 32 : resp);
  69.             if (resp != 'n' && resp != 's')
  70.                 goto getResp;
  71.  
  72.         system("cls");
  73.  
  74.     } while (resp == 's');
  75.  
  76.     printf("Programa finalizado!\n");
  77.  
  78.     return 0;
  79. }
  80.  
  81. void menu() {
  82.     printf("\n");
  83.     printf("**********************************  "); printf("                    Obs. 1        \n");
  84.     printf("**                              **  "); printf("                Sim       Não     \n");
  85.     printf("**         Teste Kappa          **  "); printf("            --------------------- \n");
  86.     printf("**                              **  "); printf("        Sim |    a    |    b    | \n");
  87.     printf("**    Por Sergio Toledo Piza    **  "); printf(" Obs. 2     --------------------- \n");
  88.     printf("**                              **  "); printf("        Não |    c    |    d    | \n");
  89.     printf("**********************************  "); printf("            --------------------- \n\n");
  90. }
  91.  
  92. void getValues(struct exp *ex) {
  93.  
  94.     printf("Digite o número que os dois observadores concordaram (a): ");
  95.     scanf("%i", &ex->a);
  96.  
  97.     printf("Digite o número que os dois observadores não concordaram (d): ");
  98.     scanf("%i", &ex->d);
  99.  
  100.     printf("Digite o número que o observador 1 concordou e que o observador 2 discordou (c): ");
  101.     scanf("%i", &ex->c);
  102.  
  103.     printf("Digite o número que o observador 2 concordou e que o observador 1 discordou (b): ");
  104.     scanf("%i", &ex->b);
  105. }
  106.  
  107. float kappa(int a, int b, int c, int d, int debug) {
  108.  
  109.     int total = a + b + c + d;
  110.     float conc_obs = (a + d) / (float) total;
  111.  
  112.     float conc_esp = (a + b) * (a + c);
  113.     conc_esp += (c + d) * (b + d);
  114.     conc_esp /= (float) total * total;
  115.  
  116.     float k = (conc_obs - conc_esp);
  117.     k /= (1 - conc_esp);
  118.  
  119.     if (debug == 1) {
  120.         printf("\ntotal: %i\n", total);
  121.         printf("conc_obs: %.2f\n", conc_obs);
  122.         printf("conc_esp: %.2f\n", conc_esp);
  123.         printf("k: %.2f\n\n", k);
  124.     }
  125.  
  126.     return k;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement