[Fortran] ecuatii de grad 2
Last Updated: Mar 16 2021 09:38, Started by
Mim72
, Mar 15 2021 17:25
·
0

#1
Posted 15 March 2021 - 17:25

Am nevoie de putin ajutor. Aici am scris un program in fortran pentru ecuatia de gradul 2 si ceva este gresit sau lipseste. As aprecia daca ma-ti putea ajuta
program ecuatiadegradul2 write(*,*)'cele 3 valori' read(*,*)a,b,c d=b**2-4*a*c x=-c/b x1=(-b+sqrt(d))/2*a x2=(-b-sqrt(d))/2*a if(d>==0)then if(a==0)then write(*,*)b,c else if(b==0)then write(*,*)'x=',x endif else if(c==0)then write(*,*)'are orice solutie' else write(*,*)'nu are solutii' endif else write(*,*)'x1=',x1,'x2=',x2 endif else write(*,*)'solutii imaginare' endif endif pause end |
#2
Posted 15 March 2021 - 17:31

Ai verificat daca d e pozitiv prea tarziu, dupa ce ai incercat sa calculezi radacinile, daca a e non-nul, etc. Verifica datele la inceput, verifica d-ul la inceput, si abia la sfarsit calculeaza si afiseaza radacinile, cand esti sigur ca nu plesneste pentru ca incerci sa calculezi un radical din ceva negativ sau sa imparti la 0
![]() |
#3
Posted 15 March 2021 - 18:01

Ai verificat daca d e pozitiv prea tarziu, dupa ce ai incercat sa calculezi radacinile, daca a e non-nul, etc. Verifica datele la inceput, verifica d-ul la inceput, si abia la sfarsit calculeaza si afiseaza radacinile, cand esti sigur ca nu plesneste pentru ca incerci sa calculezi un radical din ceva negativ sau sa imparti la 0 ![]() Prima data cand scriu deci sunt un pic confuz ![]() ![]() |
#4
Posted 15 March 2021 - 18:56

Cine mai face fortran in ziua de azi? am studiat ceva la facultate, in 96....
|
#5
Posted 15 March 2021 - 19:13

Cine mai face fortran in ziua de azi? am studiat ceva la facultate, in 96.... ![]() |
#8
Posted 15 March 2021 - 20:05

Quote
Cine mai face fortran in ziua de azi? am studiat ceva la facultate, in 96.... |
#9
Posted 15 March 2021 - 20:19

Prima data cand scriu deci sunt un pic confuz Quote daca (delta== 0) atunci afiseaza (-b / DOI_A) altfel daca (delta > 0) x1 = (-b + RADICAL_DIN_DELTA)/ DOI_A; x2 = (-b - RADICAL_DIN_DELTA)/ DOI_A; afiseaza x1 afiseaza x2 sfarsit daca sfarsit daca vezi cum te extinzi cu solutiile complexe, fie ca rezolvare sau ca mesaj de informare |
#10
Posted 15 March 2021 - 22:51

Cum zice Marian. Tu ai calculat x1 si x2 înainte sa verifici dacă delta e pozitiv sau dacă a e non-nul.
N-are legătură cu limbajul de programare, ci cu algoritmul, ar fi plesnit în orice limbaj ![]() PS Pentru un progrămel din asta poți folosi debugging, rulezi linie cu linie și poți vedea exact unde a plesnit, ce valori aveau variabilele în momentul ala, etc. Edited by KiloW, 15 March 2021 - 22:54. |
|
#11
Posted 16 March 2021 - 01:31

Salut!
Cum s-a mai spus, problema este la algoritm (cel puțin cel care reiese din programul exemplificat) dar si la sintaxă și semantică. Este gresit scris "d>==0" - operatorul relațional corect este ">=", nu ">==". La școală am învățat că soluțiile sunt cu "supra 2a". În limbaj de programare, "supra 2a" se scrie "/2/a" sau "/(2*a), asta din cauza evaluării expresiilor de la stânga la dreapta la priorități egale între înmulțire și împărțire. Dacă scriem "/2*a" calculatorul va înțelege "supra doi, APOI înmulțit cu a", ceea ce este echivalent cu "*a/2" și ajungem "în bălării" ![]() Este frumos, util și, de multe ori, obligatoriu, să declarăm la începutul programului variabilele utilizate și tipurile lor. Aici am considerat că toți coeficienții ecuației, determinatul și soluțiile sunt numere reale. Iată, deci, o posibilă formă mai corectă pentru programul tău: program ecuatiadegradul2 real:: a,b,c,x,x1,x2,xr,xi write(*,*)'Introduceti coeficientii ecuatiei de grad II:' read(*,*)a,b,c if(a==0)then if(b==0)then if(c==0)then write(*,*)'Ecuatia are orice solutie.' else write(*,*)'Ecuatia nu are solutii.' endif else write(*,*)'Ecuatia este de grad I, cu solutia:' x=-c/b write(*,*)'x = ',x endif else d=b**2-4*a*c if(d>=0)then if(d==0)then write(*,*)'Ecuatia are doua solutii egale:' x=-b/(2*a) write(*,*)'x1,2 = ',x else write(*,*)'Ecuatia are doua solutii distincte:' x1=(-b+sqrt(d))/(2*a) x2=(-b-sqrt(d))/(2*a) write(*,*)'x1 = ',x1,'x2 = ',x2 endif else write(*,*)'Ecuatia are solutii imaginare, distincte:' xr=-b/(2*a) xi=sqrt(-d)/(2*a) write(*,*)'x1 = ',xr,' + ',xi,'i' write(*,*)'x1 = ',xr,' - ',xi,'i' endif endif pause end Cred că ti-ar fi util și link-ul de mai jos: https://www.tutorial...tran_online.php Baftă! |
#12
Posted 16 March 2021 - 09:38

Facultatea de constructii, Iasi?
vezi cum te extinzi cu solutiile complexe, fie ca rezolvare sau ca mesaj de informare ![]()
Cum zice Marian. Tu ai calculat x1 si x2 înainte sa verifici dacă delta e pozitiv sau dacă a e non-nul. N-are legătură cu limbajul de programare, ci cu algoritmul, ar fi plesnit în orice limbaj ![]() PS Pentru un progrămel din asta poți folosi debugging, rulezi linie cu linie și poți vedea exact unde a plesnit, ce valori aveau variabilele în momentul ala, etc. ![]()
Sincere multumiri sper sa ma descurc de acum incolo. ![]()
Edited by MarianG, 16 March 2021 - 15:34.
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users