Adding/Subtracting arrays in F77

  • Thread starter PCSL
  • Start date
  • Tags
    Arrays
In summary: So you'll have to do something like this:result = int(x(1,3),kind=integer_type) + int(x(4,4),kind=integer_type)where you have to substitute correct value for "integer_type" in the above. And similarly for real numbers...Or do you want to find the average value of the two numbers represented by the strings? In that case, you would first convert the strings to numbers, as above, and then compute the average.
  • #1
PCSL
146
0
Hey, I'm new to fortran and I don't know how to add arrays. I opened a data file and assigned a different array to each number but if I type something like x(2)+x(3) it will not yield a result. This is probably a stupid question but thanks for any help you can offer.
 
Technology news on Phys.org
  • #2
Please post your code. Can't help without seeing what the code is doing...can't take your word for it...sorry.
 
  • #3
I just have a very simple code as follows:

Code:
        program test
        integer i,j
        character*14 x(10,7)
        open (unit=3, file='dstest')
        open (unit=8, file='dstestnew.data')
        read (3,*) ((x(i,j), i=1,10), j=1,7)
cccc [operation]
        close(unit=3)
        close(unit=8)
        end

My question is can i add specific arrays i.e. x(1,3)+x(4,4) or can you only use an array to perform operations on x(i,j). I have the dstestnew.data file open so I can write whatever I calculate to that file if that wasn't obvious.. thanks!
 
Last edited:
  • #4
Short answer: Yes, you can do x(1,3)+x(4,4)

Long answer: You say that you are trying to see what operations you can do...why waste your time? How about you do a little bit of reading on fortran arrays? And find out for sure what it is that you can and cannot do? Please do not attempt to learn to program cluelessly by trial an error; sure, when something is not too clear, you can try variations of what they seem to be saying until you get it right and understand it.
 
  • #5
gsal said:
Short answer: Yes, you can do x(1,3)+x(4,4)

Long answer: You say that you are trying to see what operations you can do...why waste your time? How about you do a little bit of reading on fortran arrays? And find out for sure what it is that you can and cannot do? Please do not attempt to learn to program cluelessly by trial an error; sure, when something is not too clear, you can try variations of what they seem to be saying until you get it right and understand it.

The reason I posted here is because I finished a schaum's outline on fortran and a book on F77 by Etter and neither addressed my question in the section on arrays. Googling did not help me figure out how to add specific arrays either. I tried variations using do-loops and could not successfully add them together. Also I tried assigning a variable to each array but that did not work either. I posted here because I was out of ideas, not because I didn't make an effort to figure it out on my own.

edit: I have no idea why I wrote trying to figure out specific operations in my code... all I care about is the operation addressed in my question.
 
  • #6
PCSL said:
I just have a very simple code as follows:

Code:
        program test
        integer i,j
        character*14 x(10,7)
        open (unit=3, file='dstest')
        open (unit=8, file='dstestnew.data')
        read (3,*) ((x(i,j), i=1,10), j=1,7)
cccc [operation]
        close(unit=3)
        close(unit=8)
        end

My question is can i add specific arrays i.e. x(1,3)+x(4,4) or can you only use an array to perform operations on x(i,j). I have the dstestnew.data file open so I can write whatever I calculate to that file if that wasn't obvious.. thanks!

Sorry to butt in, but could you please clarify something? Are you trying to add element x(1,3) to element x(4,4)? Looking at the data type for x, are you reading a 14 character string into each element? If so, does FORTRAN perform automatic type conversion to some data type that supports addition? Or is the '+' operator overloaded to (say) concatenate strings?

Or ... from the wording of your question ("add specific arrays") you seem to imply that x(1,3) and x(4,4) are themselves arrays? Is this so or did you mean elements?
 
  • #7
NemoReally said:
are you trying to add element x(1,3) to element x(4,4)
^ Yes.

You're right, I used poor vocab. I should have asked how to add specific elements of an array . Thanks for clarifying that. I understand that this is a fairly basic question but I don't think it is bad to seek help after I spent a few hours working on it.

NemoReally said:
Looking at the data type for x, are you reading a 14 character string into each element? If so, does FORTRAN perform automatic type conversion to some data type that supports addition? Or is the '+' operator overloaded to (say) concatenate strings?
Yes to the first question. I don't know the answer to the last two.
 
Last edited:
  • #8
Sorry, but I still don't understand what you want to do.

If you show us some code you wrote that doesn't work, and a few lines of your data file, that mgiht help us work out what your problem is.

Just saying
Code:
cccc [operation]
doesn't give us many clues!
 
  • #9
Your array contains character strings. You can't "add" character strings like you do numbers, in Fortran.

Do you want to concatenate the strings together, that is, combine e.g. 'abcde' and 'fghij' to produce 'abcdefghij'? In that case, you would use something like

result = x(1,3) // x(4,4)

Or do the strings contain a character-string representation of numbers (integers or reals)? In that case, you should have declared the array as INTEGER or REAL and read the numbers that way. There's no simple way to add numbers that are stored as digits in character strings.
 
  • #10
jtbell said:
Your array contains character strings. You can't "add" character strings like you do numbers, in Fortran.

Do you want to concatenate the strings together, that is, combine e.g. 'abcde' and 'fghij' to produce 'abcdefghij'? In that case, you would use something like

result = x(1,3) // x(4,4)

Or do the strings contain a character-string representation of numbers (integers or reals)? In that case, you should have declared the array as INTEGER or REAL and read the numbers that way. There's no simple way to add numbers that are stored as digits in character strings.

...I don't know what to say. I swear I did that before and it did not work but this time there was no problem. There must have been an error somewhere else in my code that I misdiagnosed.

Here's the operation I was trying to explain if any of you are curious and thanks for helping:
Code:
	program test
	integer i,j
	real x(10,7)
	open (unit=3, file='dstest')
	open (unit=8, file='dstestnew.data')
	read (3,*) ((x(i,j), i=1,10), j=1,7) 
	sum=x(1,1)+x(2,2)
	write (8,*), 'x(2,2)=',x(2,2)
	write (8,*), 'x(1,1)=',x(1,1)
	write (8,*), 'x(1,1)+x(2,2)=',sum
	close(unit=3)
	close(unit=8)
	end
 
  • #11
Well...this time, you have declared your matrix x as a REAL, as opposed to CHARACTER*14!
 

FAQ: Adding/Subtracting arrays in F77

1. How do I add/subtract two arrays in F77?

To add/subtract two arrays in F77, you can use the built-in array operations provided by the language. These operations are ADD and SUB, which take two arrays as input and return a new array with the added/subtracted values.

2. Can I add/subtract multiple arrays at once in F77?

Yes, you can add/subtract multiple arrays at once in F77 by using the array operations on each pair of arrays. For example, to add three arrays A, B, and C, you can use ADD(ADD(A, B), C).

3. How are arrays added/subtracted in F77?

Arrays in F77 are added/subtracted element-wise, meaning that each element in one array is added/subtracted to the corresponding element in the other array. This is similar to how arrays are added/subtracted in other programming languages.

4. Are there any limitations to adding/subtracting arrays in F77?

One limitation of adding/subtracting arrays in F77 is that the arrays must have the same shape or dimensions. Otherwise, the operation cannot be performed. Additionally, the arrays must be of the same data type, such as integers or floating-point numbers.

5. Can I add/subtract arrays of different sizes in F77?

No, arrays of different sizes cannot be added/subtracted in F77. The sizes of the arrays must match in order for the operation to be performed. If the sizes do not match, you can use array resizing functions to make the arrays compatible before adding/subtracting them.

Back
Top