freesky

task_sem1_2.1

Nov 3rd, 2012
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define W 1.008e-14
  5.  
  6. double ph(double va, double na, double vb, double nb) {
  7.     double a, b, v, c, p;
  8.  
  9.     a = va * na;
  10.     b = vb * nb;
  11.     v = va + vb;
  12.  
  13.     p = (a - b) / v;
  14.     c = fabs(p / 2) + sqrt(pow(p, 2) / 4 + W);
  15.  
  16.     if (p >= 0)
  17.         return -log10(c);
  18.     else
  19.         return -log10(W) + log10(c);  
  20. }
  21.  
  22. int main(int argc, char *argv[]) {
  23.     double va, na;
  24.     double vb, vbf, vbd, nb;
  25.     double d;
  26.     FILE *f = fopen("ph_data.txt", "w");
  27.  
  28.     printf("Объем пробы HCl, мл = "); scanf("%lf", &va);
  29.     printf("Концентрация пробы HCl, моль/л = "); scanf("%lf", &na);
  30.  
  31.     putchar('\n');
  32.  
  33.     printf("Начальный объем NaOH, мл = "); scanf("%lf", &vb);
  34.     printf("Конечный объем NaOH, мл = "); scanf("%lf", &vbf);
  35.     printf("Объем NaOH, прибавляемый за один шаг титрования, мл = "); scanf("%lf", &vbd);
  36.     printf("Концентрация NaOH, моль/л = "); scanf("%lf", &nb);
  37.  
  38.     putchar('\n');
  39.  
  40.     for (vb = vb; vb <= vbf; vb += vbd)
  41.         fprintf(f, "%g\t%g\n", vb, ph(va, na, vb, nb));
  42.     if ((vb - vbd) < vbf)
  43.         fprintf(f, "%g\t%g\n", vbf, ph(va, na, vbf, nb));
  44.  
  45.     fclose(f);
  46.     printf("Результаты сохранены в файл \"ph_data.txt\"\n");
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment