Advertisement
Guest User

Untitled

a guest
May 29th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.42 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<ctype.h>
  6.  
  7. #define MAXK 128
  8.  
  9. #define HSZ sizeof(int)/sizeof(short)*5
  10.  
  11. int egesze(char s[])
  12. {
  13.   int i=0;
  14.   int kezd;
  15.  
  16.   /* feher karakterek atlepese */
  17.   while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')
  18.     i++;
  19.   if (s[i]=='+')
  20.     i++;
  21.   kezd=i;
  22.  
  23.   while (s[i]>='0' && s[i]<='9' && i-kezd<HSZ)
  24.     ++i;
  25.  
  26.   if (s[i]!=0 && s[i]!='\n' && s[i]!='\t' && s[i]!=' ')
  27.     return 0;
  28.   else
  29.     return 1;
  30. }
  31.  
  32. int getline(char s[], int lim) {
  33.     int i;
  34.     char c;
  35.     for(i=0;i<lim && (c=getchar())!='\n' && c!=EOF;++i)s[i]=c;
  36.     s[i]='\0';
  37.     while(c!='\n'&& c!=EOF)c=getchar();
  38.     return i;
  39. }
  40.  
  41. int lebege(char s[]){
  42.   int i=0, kezd;
  43.   while(isspace(s[i])) ++i;
  44.   if(s[i]=='+'||s[i]=='-') ++i;
  45.   kezd=i;          
  46.   while(isdigit(s[i])) ++i;
  47.   if(s[i]=='.') ++i;
  48.   while(isdigit(s[i])) ++i;
  49.   if(i==kezd||kezd+1==i&&s[kezd]=='.') return 0;
  50.   if(toupper(s[i])=='E'){
  51.     ++i;
  52.     if(s[i]=='+'||s[i]=='-')++i;
  53.     if(!isdigit(s[i])) return 0;
  54.     while(isdigit(s[i])) ++i;}
  55.   if(isspace(s[i])||!s[i]) return 1;
  56.   else return 0;
  57. }
  58.  
  59. int intervell(float szam)
  60. {
  61.     float minsz=10.00, maxsz=20.00;
  62.  
  63.     if(szam>=minsz && szam<=maxsz)
  64.         return 1;
  65.     else
  66.         return 0;  
  67. }
  68.  
  69. void rendez(float w[], int n)   {
  70.         int i, j;
  71.         int max;
  72.         float g;
  73.         for(i=0;i<n-1;++i){
  74.                 for(j=i+1, max=i; j<n; ++j)
  75.                         if(w[j]<w[max]) max=j;
  76.                 if(i!=max){
  77.                        g=w[i];
  78.                        w[i]=w[max];
  79.                        w[max]=g;
  80.                 }
  81.         }
  82. }
  83.  
  84.  
  85. void main(void)
  86. {
  87.     int j=0, i=0, log, db;
  88.     char tmp[MAXK+1];
  89.     float szam[MAXK], osszeg=0, negyzeto=0, negyzetgy=0, x;
  90.    
  91.     printf("A program x db szamot ker be szigoruan 10.00 - 20.00 kozott, pontosan\n"
  92.         "ketto tizedesjegyre kerekitve!\n");
  93.    
  94.     for(j=0;j<80;j++)
  95.         printf("-");
  96.    
  97.     log=0;
  98.     while(!log)
  99.     {
  100.         printf("Kerem adja meg hany db szamot szeretne megadni: ");
  101.        
  102.         if(!getline(tmp,MAXK))
  103.             printf("Ures sort adott meg! Adja meg ujra!\n");
  104.         else
  105.         {
  106.             if(egesze(tmp))
  107.             {
  108.                 db=atoi(tmp);
  109.                 log=1;
  110.             }
  111.            
  112.             else
  113.                 printf("Sajnalom, de csak egesz szamot adhat meg!\n");
  114.         }  
  115.     }
  116.    
  117.     log=0;
  118.     while(!log)
  119.     {
  120.         printf("A(z) %d. szam: ", i+1);
  121.        
  122.         if(!getline(tmp,MAXK))
  123.             printf("Ures sort adott meg! Adja meg ujra!\n");
  124.         else
  125.         {
  126.             if(lebege(tmp))
  127.             {
  128.                 if(strlen(tmp)==5)
  129.                 {
  130.                     x=atof(tmp);
  131.                    
  132.                     if(intervell(x))
  133.                     {
  134.                         szam[i]=x;
  135.                         i++;
  136.                        
  137.                         if(db==i)
  138.                             log=1;
  139.                     }
  140.                     else
  141.                         printf("Sajnalom, de a szam nem esik a megadott intervallumba (10.00 -20.00)!\n");
  142.                    
  143.                 }
  144.                 else
  145.                     printf("Sajnalom, de csak 10.00 es 20.00 kozotti, ket tizedesjegyre kerekitett szamot adhat meg!\n");  
  146.             }  
  147.             else
  148.                 printf("Sajnalom, de csak lebegopontos vagy egesz szamot adhat meg!\n");
  149.            
  150.         }  
  151.     }
  152.  
  153.     rendez(szam,db);
  154.    
  155.     printf("A begepelt szamok nagysag szerinti novekvo sorrendje:\n");
  156.    
  157.     for(j=0;j<db;j++)
  158.         printf("%6.2f\t", szam[j]);
  159.    
  160.     printf("\n");
  161.    
  162.     for(j=0;j<80;j++)
  163.         printf("-");
  164.    
  165.     for(j=0;j<db;j++)
  166.     {
  167.         osszeg+=szam[j];
  168.        
  169.         negyzeto+=szam[j]*szam[j]; 
  170.     }
  171.    
  172.     negyzetgy=sqrt(negyzeto);
  173.    
  174.     printf("A szamok osszege: %6.2f\n"
  175.         "A szamok negyzetosszege: %6.2f\n"
  176.         "A negyzetosszegbol vont negyzetgyok pedig: %6.2f\n", osszeg, negyzeto, negyzetgy);
  177.    
  178.     getchar();
  179.  
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement