home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk1.iso / altsrc / articles / 11361 < prev    next >
Text File  |  1994-10-18  |  2KB  |  77 lines

  1. Path: wupost!spool.mu.edu!howland.reston.ans.net!pipex!sunic!erinews.ericsson.se!etxmesa
  2. From: etxmesa@eos.ericsson.se (Michael Salmon)
  3. Newsgroups: alt.sources
  4. Subject: Re: Ugly code.
  5. Date: 18 Oct 1994 12:01:30 GMT
  6. Organization: Ericsson Telecom AB
  7. Lines: 63
  8. Distribution: world
  9. Message-ID: <380deq$bdr@erinews.ericsson.se>
  10. References: <CxtEys.DKr@cs.dal.ca>
  11. Reply-To: etxmesa@eos.ericsson.se (Michael Salmon)
  12. NNTP-Posting-Host: eos6c02.ericsson.se
  13.  
  14. In article <CxtEys.DKr@cs.dal.ca>
  15. franklin@ug.cs.dal.ca (Steve Franklin) writes:
  16. |> 
  17. |> This is some code for a solid-state assignment which computes the number
  18. |> of neighbors from a central atom that are sqrt(1), sqrt(2), etc... away
  19. |> from the central atom. Anyone able to make itany more compact or ugly?
  20. |> It needs the math library, and it's ansi C. 
  21. |> 
  22. |>    Steve Franklin
  23. |> 
  24. |> #include<stdio.h>
  25. |> #include<math.h>
  26. |> typedef float f;typedef int Y;f p(f a,f b,f c){return sqrt(a*a+b*b+c*c);}
  27. |> f a,b,c;main(){Y i,j,k,X[9],n,V[9]={1,2,3,4,5,6,8,9,12};for(n=0;n<9;n++)
  28. |> {X[n]=0;}for(i=-2;i<3;i++)for(j=-2;j<3;j++)for(k=-2;k<3;k++){{{a=(f)i;b=(f)j;
  29. |> c=(f)k;for(n=0;n<9;n++){if(p(a,b,c)==(f)sqrt(V[n])){X[n]++;}}}}}for(n=0;n<9;
  30. |> n++){printf("N=%-2d #=%d\n",V[n],X[n]);}}
  31.  
  32. This is my suggestion:
  33.  
  34. #include<stdio.h>
  35.  
  36. int sqrP(int a,int b,int c)
  37. {
  38.     return (a*a+b*b+c*c);
  39. }
  40.  
  41. main()
  42. {
  43.     int i,j,k,l,X[9],n,V[9]={1,2,3,4,5,6,8,9,12};
  44.  
  45.     for(n=0;n<9;n++) {
  46.         X[n]=0;
  47.     }
  48.     for(i=-2;i<3;i++)
  49.         for(j=-2;j<3;j++)
  50.             for(k=-2;k<3;k++){
  51.                 for(n=0;n<9;n++){
  52.                     l=sqrP(i,j,k);
  53.                     if(l==V[n]){
  54.                         X[n]++;
  55.                         break;
  56.                     }
  57.                 }
  58.             }
  59.     for(n=0;n<9; n++){
  60.         printf("N=%-2d #=%d\n",V[n],X[n]);
  61.     }
  62. }
  63.  
  64. It should be faster with a lot of points but for only a few it isn't
  65. that noticeable.
  66.  
  67. -- 
  68.  
  69. Michael Salmon
  70.  
  71. #include    <standard.disclaimer>
  72. #include    <witty.saying>
  73. #include    <fancy.pseudo.graphics>
  74.  
  75. Ericsson Telecom AB
  76. Stockholm
  77.