| New Reply |
Fortran 77 making an array but changing the increment value |
Share Thread | Thread Tools |
| Sep11-11, 04:34 PM | #1 |
|
|
Fortran 77 making an array but changing the increment value
Hi
I have an array going from 0 to n (where n has been previously defined) but I want the array to be in steps of 5 rather than increasing each value by 1 eg 0,5,10,15,20,25......n how can I do this? Thanks |
| Sep11-11, 04:54 PM | #2 |
|
|
What makes you use F-77 ??? As it name says it is obsolete by 34 years.
But if you really must do that in F77 - either dont care about memory (you have modern computer with GBs of it) and just use only 1 of 5, or be smart F77 prgrammer and write something like REAL A(number of elements) A(N/5+1) = whatever |
| Sep11-11, 04:59 PM | #3 |
|
|
I'm starting a piece of working with an ancient supervisor and he only knows fortran 77 so I've had to start learning it too. Seems a completely ridiculous language from what i've learnt so far
but thanks for your help |
| Sep11-11, 05:10 PM | #4 |
|
|
Fortran 77 making an array but changing the increment value
Fortran is still commonly used for scientific applications, I use it regularly myself - in F77 flavor. Some co-workers use Basic. Newfangled languages aren't relevant to simple scientific number-crunching applications, the odds of screwing up your results far outweighs any advantages in efficiency, interfacing, sexiness, whatever.
For every element i in your original array [0,1,2,...,n], you can access it from your preferred array [0,5,10,...,5n] element j through i = (j+1)/5. |
| Sep11-11, 05:20 PM | #5 |
|
|
Either : J/5 - if you number arrays starting from 0, or J/5+1 - if you are 11 years more obsolete and use F-66 (Fortran-4...) convention of numbering arrays from 1 I am not much younger (probably) than your suprevisor, but I switched to do number crunching in C++ over 20 years ago... |
| Sep11-11, 05:26 PM | #6 |
|
|
Seems clear enough. (0+1)/5 = 0, (5+1)/5 = 5 , (10+1)/5 = 2, etc., in standard integer math, which lops off anything after a decimal point. So given j on [0,5,10,...], i on [0,1,2,..] follows the transformation i = (j+1)/5.
C++ in particular is a poor language choice, it's far too easy to make a mistake that won't be caught by a compiler or even crash your program, it will just give you the wrong answer. |
| Sep11-11, 05:32 PM | #7 |
|
|
The general format for a DO loop in FORTRAN is the following:
Code:
DO 10 I=1,N,INC
. . .
DO SOMETHING
. . .
10 CONTINUE
N is the limiting value, so the program will break out of the loop after executing for I = N (basically, if I > N). INC is the increment value. If INC is not given in a program, it defaults to 1. If you give it the value 5, I will increase by INC each time through the loop. Hope this helps. |
| Sep11-11, 05:35 PM | #8 |
|
|
(0+3)/5 = 0, (5+3)/5 = 1, (10+3)/5 = 2, (0+4)/5 = 0, (5+4)/5 = 1, (10+4)/5 = 2... Why have you chosen +1 rather than +3??? We both are not quiche eaters! (Real Programmers do not use Pascal, 1983: http://www.pbm.com/~lindahl/real.programmers.html) ADDED> Yes, Duncan, DO-loop is my favourite semantics for loop. Anyway, I am not advocating for Code:
for (i=1; i<=n; i+=inc) {.....}
|
| Sep11-11, 05:45 PM | #9 |
|
|
And I even learned Pascal in college, though I've never actually used it except for that one class in like 1984.
|
| Sep11-11, 05:58 PM | #10 |
|
|
Well, Pascal is even more obsolete than F-77... But in 1984 it was much more elegant than F77... Actually - it is much more elegant than any modern language, but, of course, something a bit more geeky and efficient had to won...
Anyway: answer to OP is Code:
REAL A(1:N) DO 10 I=1, 5*N, 5 do something to A(I/5+1) 10 CONTINUE ADDED> I just read the "Real Programmers..." again after 20 years... I forgot Fortran had had a very useful tool: Assigned-Go-To... I really miss that feature in C++ - if I only had it now it would really help me to avoid C++ programming pitfalls! |
| Sep11-11, 07:07 PM | #11 |
|
Recognitions:
|
http://en.wikipedia.org/wiki/Duff's_device C / C++ also has pointers to functions, which is similar in concept to assigned goto's, using functions instead of code fragments. C++ extended this concept with overriding of member functions in structures or classes. Getting back to the OP, if the array starts with 0, then normally it's indexes are described as going from 0 to (n-1), where n is the number of elements in the array. Previous posts already explained how to handle arrays that start at zero or start at one. |
| New Reply |
| Tags |
| array, fortran 77, increment |
| Thread Tools | |
Similar Threads for: Fortran 77 making an array but changing the increment value
|
||||
| Thread | Forum | Replies | ||
| Fortran 77 help making an empty array (or blank list if they exist in fortran) | Programming & Comp Sci | 5 | ||
| Fortran character array | Programming & Comp Sci | 1 | ||
| Printing 1D array in Fortran as 2D array... | Programming & Comp Sci | 7 | ||
| Co-Array Fortran | Programming & Comp Sci | 2 | ||
| array shuffling in fortran | Programming & Comp Sci | 1 | ||