Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
VLC Media Player

WoW Ascension parere

Eliberare fiscal - ajutor

Caut un NVR model HGNVK-48902
 Baterie Macht

Complex termogenic opinii ( Arzat...

Reteta compensata dupa scrisoare ...

aerofoto mapn dji mini 4 pro
 Click inchidere fereastra Win11 e...

Nedumerire produs

Se justifica constructia edificii...

Sfat achizitie masina - drumuri n...
 inceput de drum Uber/Bolt pe SRL

Sticla noua de la Sigma

La multi ani @fiuny!

Ghiocei - nu mai infloresc
 

[Fortran] ecuatii de grad 2

- - - - -
  • Please log in to reply
11 replies to this topic

#1
Mim72

Mim72

    New Member

  • Grup: Junior Members
  • Posts: 8
  • Înscris: 19.05.2019
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
KiloW

KiloW

    Guru Member

  • Grup: Senior Members
  • Posts: 11,859
  • Înscris: 08.01.2021
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
Mim72

Mim72

    New Member

  • Grup: Junior Members
  • Posts: 8
  • Înscris: 19.05.2019

 KiloW, on 15 martie 2021 - 17:31, said:

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 Posted Image
Sa vad daca am inteles, trebuie sa declar d mai devreme? trebuie sa mut liniile 5,6,7 mai jos si imediat dupa d= sa vina if(d...) iar apoi inainte de write x1 si x2 trebuie sa apara liniile 5,6,7?
Prima data cand scriu deci sunt un pic confuzPosted Image Posted Image

#4
strehaia

strehaia

    Member

  • Grup: Members
  • Posts: 655
  • Înscris: 08.07.2020
Cine mai face fortran in ziua de azi? am studiat ceva la facultate, in 96....

#5
Mim72

Mim72

    New Member

  • Grup: Junior Members
  • Posts: 8
  • Înscris: 19.05.2019

 strehaia, on 15 martie 2021 - 18:56, said:

Cine mai face fortran in ziua de azi? am studiat ceva la facultate, in 96....
Sincer eu am studat C++, java si foarte putin nea spus despre python in liceu iar acum fac fortran in anul intai dar sincer doar nea prezentat putina teorie si practica dupa aceea. Dupa cum ati vazut intrebarea mea nu prea ne descurcam momentanPosted Image

#6
strehaia

strehaia

    Member

  • Grup: Members
  • Posts: 655
  • Înscris: 08.07.2020
Facultatea de constructii, Iasi?

#7
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,070
  • Înscris: 24.02.2007
In C++ ai fi folosit a inainte s-o verifici?

#8
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,439
  • Înscris: 06.01.2010

Quote

Cine mai face fortran in ziua de azi? am studiat ceva la facultate, in 96....
https://wordsandbutt...ll_a_thing.html

#9
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,289
  • Înscris: 10.08.2005

 Mim72, on 15 martie 2021 - 18:01, said:

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
KiloW

KiloW

    Guru Member

  • Grup: Senior Members
  • Posts: 11,859
  • Înscris: 08.01.2021
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
Pafarist

Pafarist

    Junior Member

  • Grup: Members
  • Posts: 177
  • Înscris: 01.06.2009
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"Posted Image .
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
Mim72

Mim72

    New Member

  • Grup: Junior Members
  • Posts: 8
  • Înscris: 19.05.2019

 strehaia, on 15 martie 2021 - 19:41, said:

Facultatea de constructii, Iasi?
Cea din Cluj

 MarianG, on 15 martie 2021 - 20:19, said:

vezi cum te extinzi cu solutiile complexe, fie ca rezolvare sau ca mesaj de informare
Multumesc tare mult, am inteles acumPosted Image

 KiloW, on 15 martie 2021 - 22:51, said:

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 Posted Image

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.
Mai greu la inceput pt ca programarea nu a fost punctul meu forte dar incet incet incep sa ma descurc. MultumescPosted Image

 Pafarist, on 16 martie 2021 - 01:31, said:

Cred că ti-ar fi util și link-ul de mai jos:
https://www.tutorial...tran_online.php

Baftă!
Sincere multumiri sper sa ma descurc de acum incolo. Posted Image

Edited by MarianG, 16 March 2021 - 15:34.
removed quote enorm


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate