Advertisement
Guest User

Untitled

a guest
Sep 5th, 2015
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. // BigReal.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4.  
  5. #include "stdafx.h"
  6. #include <fstream>
  7. #include <ctype.h>
  8.  
  9. const int mantis = 31;
  10. const int order = 6;
  11.  
  12. struct BigReal
  13. {
  14.     char sign;
  15.     char m[mantis];
  16.     char k[order];
  17. };
  18.  
  19. bool readReal (BigReal& number, FILE* input)
  20. {
  21.     char symbol;
  22.     int i = 0;
  23.  
  24.     while (!feof (input))
  25.     {
  26.         char symbol;
  27.  
  28.         fread (&symbol, sizeof (char), 1, input);
  29.  
  30.         if (symbol != '+' || symbol != '-')
  31.             return false;
  32.  
  33.         number.sign = symbol;
  34.  
  35.         do
  36.         {
  37.             fread (&symbol, sizeof (char), 1, input);
  38.  
  39.         } while (isspace (symbol));
  40.  
  41.         number.m[0] = symbol;
  42.  
  43.         for (i = 1; i < mantis; i++)
  44.         {
  45.             fread (&symbol, sizeof (char), 1, input);
  46.  
  47.             if (!isdigit (symbol))
  48.                 return false;
  49.  
  50.             if (isspace (symbol))
  51.                 break;
  52.  
  53.             number.m[i] = symbol;
  54.         }
  55.  
  56.         do
  57.         {
  58.             fread (&symbol, sizeof (char), 1, input);
  59.  
  60.         } while (isspace (symbol));
  61.  
  62.         int max;
  63.  
  64.         if ((mantis - i) < order)
  65.             max = mantis - i;
  66.  
  67.         else max = order;
  68.  
  69.         number.k[i] = symbol;
  70.  
  71.  
  72.         for (i = 1; i < max; i++)
  73.         {
  74.             fread (&symbol, sizeof (char), 1, input);
  75.  
  76.             if (!isdigit (symbol))
  77.                 return false;
  78.  
  79.             if (isspace (symbol))
  80.                 break;
  81.  
  82.             number.k[i] = symbol;
  83.         }
  84.         return true;
  85.     }
  86.  
  87. }
  88.  
  89.  
  90.  
  91.  
  92. int main()
  93. {
  94.     FILE* INfile = fopen ("in_file.txt", "r");
  95.  
  96.     BigReal a;
  97.  
  98.     readReal (a, INfile);
  99.  
  100.    
  101.     printf ("%c%s.%s", a.sign, a.m, a.k);
  102.  
  103.     getchar ();
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement