Register to reply 
Fortran 90 Description in program how to continue it) 
Share this thread: 
#1
Feb2112, 12:36 PM

P: 10

1. The problem statement, all variables and given/known data
Write a program in Fortran 90 (not fortran 77) that reads from the user 4 integers a, b, c, d. The program should first check if applicable inequality a ≤ b, c ≤ d. If not then it should asking again numbers from the user until they have given numbers satisfying these inequalities. Once your program reads these numbers should 1. to print the squares of integers k such that is a ≤ k ≤ b. 2. To print the product of all integers r is such that c ≤ r ≤ d. 2. Relevant equations its says that the program should asking the user to give numbers until satisfying a<=b and c<=d. This will be done with loop?( i dont know how to do this and i stucked).Still how i can find the squares of integers k and the product of all integers r?( i want only an description of how to do it to finish the program) 3. The attempt at a solution program sub implicit none integers :: a, b, c, d print *, "Give me an integer a:" read *, a print *, "Give me an integer b:" read *, b print *, "Give me an integer c:" read *, c print *, "Give me an integer d:" read *, d if(a .ge. b) then print *, "Invalid." stop endif if(c .ge. d) then print *, "Invalid." stop endif 


#2
Feb2112, 12:51 PM

P: 3,098

Here's a simple structure in pseudo code:
notOK=0 while(notOK<1) { read a,b,c,d if((a>b) or (c>d)) print "ERROR: either a>=b or c>=d: Please reenter your four numbers" else notOK=1 } // step 2 for(k=a; k<=b; k++) { print "k:"+k+" and k^2: " +(k*k) } // set 3 use a loop like the one above within another loop like the one above 


#3
Feb2112, 02:45 PM

P: 10

program Arithmetical
implicit none integers :: a, b, c, d PRINT *, "Give me an integer a:" READ *, a PRINT *, "Give me an integer b:" READ *, b PRINT *, "Give me an integer c:" READ *, c PRINT *, "Give me an integer d:" READ *, d IF(a .ge. b) THEN PRINT *, "Invalid." STOP ENDIF IF(c .ge. d) then PRINT *, "Invalid." STOP ENDIF notOK = 0 DO notOK = notOK + 1 IF( (a>b) or (c>d) ) EXIT PRINT *, "ERROR: either a>=b or c>=d: Please reenter your four numbers" ELSE notOK = 1 ENDIF END DO FOR(k=a, k<=b, k++) PRINT "k:"+k+" and k^2: " +(k*k) END PROGRAM I used this in silverfrost but cant run it. I belive that i have something wrong .Can anyone correct me wrongs? 


#4
Feb2112, 02:47 PM

P: 3,098

Fortran 90 Description in program how to continue it)
you dont want to stop you want to loop until the a,b,c,d fit the limits the problem defined.
as I read your program it does the following: asks for a reads a asks for b reads b asks for c reads c asks for d reads d tests a>b if so STOPS tests c>d if so STOPS so use of the notOK does nothing instead you need to place your reads in a while (...) do end loop: isOK=0 while(isOK<2) do isOK=0 // reset the condition counter to ZERO asks for a reads a asks for b reads b asks for c reads c asks for d reads d if(a.le.b) isOK=isOK+1 // we add ONE because the 1st condition was met if(c.le.d) isOK=isOK+1 // we add ONE again because the 2nd condition was met enddo // the loop ends when isOK==2 ...when your program gets here then a<=b and c<=d and you can do steps 2 and 3... 


#5
Feb2112, 03:00 PM

P: 3,098

for the squaring loop use:
DO 10 K=A,B,1 print K*K 10 CONTINUE 


#6
Feb2112, 03:26 PM

Mentor
P: 21,402




#7
Feb2112, 04:17 PM

P: 3,098




#8
Feb2112, 06:38 PM

P: 361

As a code snip, you might use:



#9
Feb2212, 04:24 AM

P: 10

1. to print the squares of integers k such that is
a ≤ k ≤ b. 2. To print the product of all integers r is such that c ≤ r ≤ d. How i can to do the above 2 parts i stucked here. 


#10
Feb2212, 09:01 AM

P: 361

1. Read Mark44 above
2. Initialize the product calculation p at 1, then make a loop starting at c, ending at d, and multiply the loop counter into p each time. 


#11
Feb2212, 12:46 PM

P: 10

1. The problem statement, all variables and given/known data
Write a program in fortran 90 which reads from the user 4 integers a,b,c and d. The program first needs to make sure that the following inequalities hold : a <=b <=c <=d. If not,the program needs to ask again those numbers from the user until the user finally gives numbers that satisfy the above inequalities. Once your program reads these numbers , then it will have to : 1) type the squares of the integers k , such as a< = k <= b , and 2)type the product of all the integers r, such as c<= r <= d. 2. Relevant equations Guys i am the guy with the fortran problem and my program doesnt run i dont know why.. Maybe its wrong written because i am new in programming.Plz if anyone cangive me the right code.Down is my try for the program..... 3. The attempt at a solution program Arithmetical implicit none integer :: a, b, c, d, x, y print *, "Give me an integer a:" read *, a print *, "Give me an integer b:" read *, b print *, "Give me an integer c:" read *, c print *, "Give me an integer d:" read *, d if(a .ge. b) then print *, "Invalid." stop endif if(c .ge. d) then print *, "Invalid." stop endif do print *, "Give me an integer a:" read *, a print *, "Give me an integer b, not less than a:" read *, b if(a .ge. b) exit print *, "Found b less than a, please reenter your numbers a & b" endif end do do print *, "Give me an integer c:" read *, c print *, "Give me an integer d, not less than c:" read *, d if(c .ge. d) then print *, "Found d less than c, please reenter your numbers a & b" endif end do x = a y = 0 do while (x <= b) y = x^2 print y x = x+1 end do x = c y = 0 do while (x <= d) y = y+x*(x+1) x = x+1 end do end program 


#12
Feb2212, 01:04 PM

Mentor
P: 21,402

Mod note: Merged the contents of a new thread started by the OP into the existing thread.
Do you understand what parts 1 and 2 are asking you to do? If not, you will never be able to write the code to implement these parts. To assess your understanding, if a = 5 and b = 15, what output would you expect from part 1. Similarly, if c = 3 and d = 12, what output would you expect from part 2? Does your code compile but not run? If so, there are errors in your logic, so that the program halts before doing anything useful. In your input section, if the user enters invalid values, the program STOPs. It should not be doing that. Your whole input section needs to be in a DO loop of some kind, where the loop keeps running until all of the input values are in the right order. 


#13
Feb2212, 02:38 PM

P: 361

It looks like you don't appreciate the difference between an inline if and a block if statement:
Inline ("logical") if:
Block if:
Selective execution Also you won't really get closer to a solution by just piling every suggested piece of code  with unnecessary additions  into your program. You really have to understand what the code is doing. And you'd do well to annotate your code with some comments, too. 


Register to reply 
Related Discussions  
Fortran: End Do vs. Continue  Programming & Computer Science  3  
Fortran Program Won't run  Programming & Computer Science  15  
Help with a FORTRAN program  Programming & Computer Science  0  
Help with fortran program  Programming & Computer Science  6  
Running a Fortran 77 program in a C++ enviorment/program  Programming & Computer Science  2 