Jump to content

Pascal kvadratvienādojums.


Guest exodus
 Share

Recommended Posts

sveiki tie kas kautko saprot no pascal, rakstiju kvadrātvienādojuma ax2+bx+c=0 atrisinājuma progu bet man izmet divus erorus tape proga neiet! erori-

  • DIVISION BY ZERO
  • INVALID FLOATING POINT OPERATION

LŪDZU PALĪDZIET

 

SEIT ARĪ PROGAS TEKSTS:

USES CRT;

VAR A,B,D,K:INTEGER;

R,X,F,V:REAL;

M:REAL;

C:CHAR;

BEGIN

WRITELN('VERTIBA A`);

READLN(A);

WRITELN(`VERTIBA B`);

READLN(B);

WRITELN(`VERTIBA C`);

READLN(D);

R:=SQR(B)-4*A*D;

X:=-B/(2*A);

V:=-B+SQRT( R )/(2*A);

M:=-B-SQRT( R )/(2*A);

BEGIN

IF A=0

THEN WRITE(`TAS NAV KVADRĀTVIENĀDOJUMS`)

ELSE IF R<0

THEN WRITE(`REĀLAS SAKNES NAV`)

ELSE IF R=0

THEN WRITE(`X IR` , X:0:2)

ELSE WRITELN(`VIENA SAKNE IR`,V:0:2);

WRITELN(`OTRA SAKNE IR`,M:0:2);

C:READKEY;

CLRSCR;

END;

END.

KUR IR KĻŪDA?????

Link to comment
Share on other sites

Guest exodus

y = ax (kvadraataa) + bx + c? 9taas klases viela... Maajas darbus ar steigu pildi?

 

NJU JA MATENE NAV STIPRĀ PUSE BET NO KOMPJIEM LIETAS LABI AIZLEC TAPE CINOS AR PROGRAMESANU

:-D

Link to comment
Share on other sites

Nevajag jau kliegt, ne jau ''uzbraukt'' Tev gribeeju, patieshaam jautaaju...

Paskatiisimies veelreiz: Ko tieshi Tu grasies atrisinaat ar Pascal paliidziibu?

Link to comment
Share on other sites

Guest exodus

paskaalu neesmu kustinaajis jau 11 gadus bet kaapeec tu raksti X:0:2 ?

kas tas pa stelii ? Kapeec ne X:2

 

NU TO RAKSTU LAI NORĀDĪTU VIETAS AIZ KOMATA JO TAS MAN REĀLS SKAITLIS

 

Nevajag jau kliegt, ne jau ''uzbraukt'' Tev gribeeju, patieshaam jautaaju...

Paskatiisimies veelreiz: Ko tieshi Tu grasies atrisinaat ar Pascal paliidziibu?

 

ES TAK NEKLIEDZ :-?

nju kā vēlos atrisināt kvādrātvien. noradot ko darīt datoram ar if palīdzību.

Link to comment
Share on other sites

Pirmkārt vaitad paskālā kvadrātsakni raksta SQR vai tomēr SQRT

 

Pirmkārt vaitad paskālā kvadrātsakni raksta SQR vai tomēr SQRT

Link to comment
Share on other sites

tu to if a=0 pamet uz augšu drusk, citādāk vispirms division by 0 errors uzmetas, un tad tikai ir if a=0.

tb, vari to if-u palikt zem a ievadīšanas uzreiz.

 

edit: Tas, protams, gadījumā, ja a=0 tiek ievadīts ;)

Link to comment
Share on other sites

Guest exodus

1) tur kur ir SQR ir aprēķināts diskriminants un tur jābūt kvadrātam, tev taisnība ka SQRT ir kvadrātsakne.

2) paldie dievam :D parabolas zaru kordinātas nav jāuzzin

 

bet kad pametu if a=0 uz augsu tad vinjs visu parējo prasa ARĪ PACELT jo vis saistās kopā tad trūkst then un tad else bet pie else jau ir atkal IF

Link to comment
Share on other sites

..2) paldie dievam :D parabolas zaru kordinātas nav jāuzzin...

Patiesiibaa vinjas nebija nemaz tik gruuti apreekjinaat, protams, lai tagad uzrakstiitu kaa vinjas jaareekjina, buutu vien jaameklee rokaa aljgebras graamata... Nu un reekjinaat Pascal'aa jau arii ir savdabiigaak, ko tad tas dizhi liidzeetu, ja arii uzrakstiitu kaa taas koordinaates reekjina... Bet nu arii labi, Tev vinjas nevajag.

 

Edit: Nee nee, ne jau zaru kordinaatas, bet parabolas virsotnes kordinaates.

Labots - krelin
Link to comment
Share on other sites

ar pacelt augšā es domāju pārcelt vienkārši ;)

noņem to If a=0 statementu no apakšas un paliec zem input a;

Link to comment
Share on other sites

Guest exodus

itka viss uzrakstīts ka vaig pat pie daziem noteiktiem skaitliem proga nostrādā un parāda ka viena sakne tik un otra ti bet teksti ko vaidzetu izmest par to ka tas nav kvadr.v. un ka realas saknes nav- viss tas apstājas pie eroriem, nu diviem ko jau minēju!

 

nu tad es parcelu un paqrāda THEN EXPECTED vinjs prasa parējo kam jaseko aiz if

Link to comment
Share on other sites

Guest exodus

tu nekad programmējis neesi vai kā? protams ka vajag then aiz if'a.

 

nu piedod tikai saku mācīties pirms mēneša :(

Link to comment
Share on other sites

anyway, novāc

 

IF A=0

THEN WRITE(`TAS NAV KVADRĀTVIENĀDOJUMS`)

 

 

 

ELSE IF R<0 pārveido par IF R<0

 

 

IF A=0

THEN WRITE(`TAS NAV KVADRĀTVIENĀDOJUMS`) noliciec zem A ievades

Link to comment
Share on other sites

Guest ADEX

Uzzīmē vispirms algoritma blokshēmu uz papīra. Tev algoritmā ir vairākas kļūdas. Paziņojumu "REĀLAS SAKNES NAV" Tu nesagaidīsi, jo pirms tam tiks vilkta kvadrātsakne no negatīva skaitļa. Arī B var būt negatīvs, bet no B tiek vilkta kvadrātsakne bez jebkādas pārbaudes.

Link to comment
Share on other sites

Guest exodus

MĒĢINU KO DARIT LIETAS LABA TAGAD...

 

 

TIKAI KADEĻ UZREIZ JAGRUZĪ KA ESU IESĀCĒJS VISI TAK TADI REIZ BIJĀT...

 

ITKA SHEMA MAN IR UZĪMĒTA UN VEL TO ZĪMĒJA KURSR VADĪTĀJS. :???:

Link to comment
Share on other sites

Guest ADEX

Es jau negruzīju. ;-) Vienkārši norādu uz kļūdām. Ja blokshēma ir, tad vai nu tā nav pareiza, vai arī nepareizi "pārtulkota" Pascal'ā.

Link to comment
Share on other sites

Guest exodus

BET KO IZTEIKS TAS JA MAINĪŠU FORMULU ATRAŠANĀS VIETAS?

 

PIEMERAM PIRMS BEGIN ATSTAŠU TIKAI DISKRIMINANTA FORMULU! TIKAI KUR LIKT PAREJĀS... :-D

Link to comment
Share on other sites

mēģināju šito taisīt uz Visual Prolog. tikai nezinu, kā var no ievadītā string tipa dabūt real..

piemēram, vienkārši ievadīt skaitli un izvadīt tā kvadrātu:

 

class kvadr
predicates
atr : (real Sk, real Rez) procedure (i,o).
kvIO :  () procedure().

end class kvadr

implement kvadr
clauses
atr(Sk,Rez):-Rez = Sk * Sk.
kvRun():-
	console::write("Ievadi skaitli!\n"),
	Va = console::readLine(),
	Sk = Va,	   %Kļūda: The expression has type '::string', which is incompatible with the type '::real'
	atr(Sk,Rez),
	console::write("Kvadrāts ir, ", Rez, "\n").
end implement kvadr

 

noteikti i kāda iebūvēta type convert funkcija, bet slinkums un nav laika meklēt :oops:

 

varbūt kāds zin?

Link to comment
Share on other sites

Aiz neko dariit - uzraxtiiju. 8)

USES CRT;
VAR A,B,D,K:INTEGER;
R,X,F,V:REAL;
M:REAL;
C:CHAR;
BEGIN
WRITELN('VERTIBA A`);
READLN(A);
WRITELN(`VERTIBA B`);
READLN(B);
WRITELN(`VERTIBA C`);
READLN(D);
R:=SQR(B)-4*A*D;

IF A=0 THEN WRITE(`TAS NAV KVADRĀTVIENĀDOJUMS`)
ELSE IF R<0 THEN WRITE(`REĀLAS SAKNES NAV`)
ELSE 
begin
 X:=-B/(2*A);
 V:=-B+SQRT( R )/(2*A);
 M:=-B-SQRT( R )/(2*A);
 IF R=0 THEN WRITE(`X IR` , X:0:2)
 ELSE 
 begin
  WRITELN(`VIENA SAKNE IR`,V:0:2);
  WRITELN(`OTRA SAKNE IR`,M:0:2);
 end;
 C:READKEY;
 CLRSCR;
END;
END.

Link to comment
Share on other sites

Guest ADEX

Borja,

1) nav labi mājasdarbus cita vietā pildīt,

2) kas notiks, ja B būs negatīvs?

Link to comment
Share on other sites

Es jau protams neko, bet man kaut kā no matemātikas stundām pamastkolā atmiņā palicies ka R = b^2 - 4ac , nevis R = sqrt(b) - 4ac..

Link to comment
Share on other sites

Diskriminantu reekjina:

D = b (kvadraataa) - 4ac

 

Edit: Mljin, te jau laikam domaaja, kaa Pascal'aa pieraksta... Paarcentos. :roll:

Labots - krelin
Link to comment
Share on other sites

Guest ADEX

Tomēr pareizi. Pascal'ā Sqr(x) tiešām ir x kvadrātā nevis kvadrātsakne no x

Bet cita mājasdarbus pildīt vienalga nav labi. ;-)

Link to comment
Share on other sites

Guest exodus

eu dzeki jus te interesantas lietas samuķijuši kamer nebiju, visiem paldies būs ko papētīt :D

man personīgi nav galvenais norakstīt bet saprast jo man ta nav obligata nodarbe

Link to comment
Share on other sites

tomēr piespiedos un pārvarēju slinkumu :)

 

class kvadr
predicates
kvRun :  () procedure().

end class kvadr

implement kvadr
class predicates
atr : (real A, real B, real C, real X1, real X2) determ (i,i,i,o,o).

clauses
atr(A, B, C, X1, X2):-
	if A = 0 then
	console::write("Tas nav kvadrātvienādojums!\n"),
	fail
	end if,
	D = B * B - 4 * A * C,
	if D < 0 then
	console::write("Nav reālu sakņu!\n"),
	fail
	end if,
	X1 = (-B + math::sqrt(D))/2/A,
	X2 = (-B - math::sqrt(D))/2/A.
kvRun():-
	console::write("Kvadrātvienādojums: ax^2+bx+cx=0 \nIevadi a!\n"),
	Astr = console::readLine(),
	console::write("Ievadi b!\n"),
	Bstr = console::readLine(),
	console::write("Ievadi c!\n"),
	Cstr = console::readLine(),
	conversion5x::str_real(Astr,A),
	conversion5x::str_real(Bstr,B),
	conversion5x::str_real(Cstr,C),
	atr(A,B,C,X1,X2),
	console::write("X1 = ", X1, " X2 = ", X2, "\n"),
	fail().
	kvRun().
end implement kvadr

Link to comment
Share on other sites

  • 2 weeks later...
Guest Storm336

Nedomaaju, ka vajadzeetu iispashi aizrauties ar programmeeshanu, ja pat ar pashu primitiivaako kavadraatvienaadojumu nevar tikt galaa... kas tad buus taalaak? XD

Link to comment
Share on other sites

uses crt;
var a,b,c:integer;
r,x:real;
begin
clrscr;
write('vertiba a :`); readln(a);
write(`vertiba b :`); readln(b);
write(`vertiba c :`); readln(c);
if a=0 then writeln(`tas nav kvadraatvienaadojums.`)
else begin
	r:=sqr(b)-4*a*c;	
	if r < 0 then write(`reaalas saknes nav.`)
	else begin
		if r=0 then begin
			x:=-b/(2*a);
			writeln(`x ir` , x:0:2);
		end else begin
			x:=-b+sqrt( r )/(2*a);
			writeln(`viena sakne ir`,x:0:2);
			x:=-b-sqrt( r )/(2*a);
			writeln(`otra sakne ir`,x:0:2);
		end;	
	end;
end;
readkey;		
end.

 

Man nav uz kā pārbaudīt vai nav kļūdu.

Bet tavā sākotnējajā progā bija vairākas kļūdas

  • tu veic sakņu aprēķināšanu pirms pārbaudi vai a <> 0.
  • readkey; var atrasties arī bez mainīgā.
  • kamdēļ tev tik daudz tos mainīgos vajag ?
  • tu neatkarīgi no determinanta veic visu veidu sakņu aprēķinus,

Tādas nu man tāš tēzes par tavu kodu.

 

 

edit : vienu kļūdu pielaboju .. nepareizs mainīgais.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...