Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Adding/Subtracting arrays in F77

  1. Jun 7, 2012 #1
    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.
     
  2. jcsd
  3. Jun 7, 2012 #2
    Please post your code. Can't help without seeing what the code is doing...can't take your word for it...sorry.
     
  4. Jun 8, 2012 #3
    I just have a very simple code as follows:

    Code (Text):
           
            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: Jun 8, 2012
  5. Jun 8, 2012 #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.
     
  6. Jun 8, 2012 #5
    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.
     
  7. Jun 8, 2012 #6
    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?
     
  8. Jun 8, 2012 #7
    ^ 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.

    Yes to the first question. I don't know the answer to the last two.
     
    Last edited: Jun 8, 2012
  9. Jun 8, 2012 #8

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    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 (Text):

    cccc [operation]
     
    doesn't give us many clues!
     
  10. Jun 8, 2012 #9

    jtbell

    User Avatar

    Staff: Mentor

    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.
     
  11. Jun 8, 2012 #10
    ...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 (Text):
        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
     
  12. Jun 8, 2012 #11
    Well...this time, you have declared your matrix x as a REAL, as opposed to CHARACTER*14!!!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Adding/Subtracting arrays in F77
  1. F77 versus ifort! (Replies: 0)

  2. F77 error (Replies: 3)

Loading...