[Diskriminantas] Svarbi programa IX-X klasės kurso mokiniams

Sveiki, taigi kursime programą, kuri iš suvestų triejų narių (a,b ir c) apskaičiuos diskriminantą.

Dar nesusipažinę su diskriminantu neišsigąskite, tai labai lengvas dalykas, aš jus supažindinsiu.

Turime kvadratinę lygtį : ax2+bx+c=0
Tik vietoj nario a,b,c įsistatome skaičius.
Diskriminanto formulė labai paprasta : D=b2-4ac
Susiskaičiavus diskriminantą :
Jeigu D 0 – lygtis turi du sprendinius ( tai x1 ir x2)

x1 ir x1 apskaičiuojami taip :
x1x2

Pavyzdys :
diskriminanta

Na turbut aišku ką darysime.

Programa atrodys taip :
Screenshot_2014-12-21-11-51-19

Įrašius pirmojo pavyzdžio skaičius gausime tą patį :
Screenshot_2014-12-21-11-52-00Screenshot_2014-12-21-11-52-07

Kaip minėjau, gali būti diskriminantas < 0 tai sprendinių lygtis neturi. Įstatome į visus šiuos narius skaičių 1 ir gausime :
Screenshot_2014-12-21-11-52-29

Na keliaukime prie kodo rašymo. Susikuriame android application project.

res/layout/activity_main.xml pakeičiame šiuo kodu :

Šiek tiek paaiškinimų :

EditText – sukuria redaguojamo teksto lauką.
Button – sukuria mygtuką.
Turbūt neaiškiausi yra 2 dalykai :
android:inputType=”textCapWords|phone” – šis parametras nustato, kad tekste gali būti tik vienas žodis, ta prasme negali būti tarpų, o “phone” – pakeičia klaviatūrą, kad pradinė įvestis būtų skaičiai, o ne raidės.
android:digits=”0123456789-,” – šis parametras neleidžia rašyti raidžių, tik mūsų nustatytus simbolius. Mūsų atveju galės rašyti tik šiuos simbolius – “0123456789-,”.

Keliaujam toliau. Einame į

MainActivity.java

Ir sukuriame kintamuosius, kuriuose mes gausime tuos 3 teksto laukus ir mygtuką.
tai po šiuo tekstu :

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Keliame :

final EditText a = (EditText) findViewById(R.id.a);
final EditText b = (EditText) findViewById(R.id.b);
final EditText c = (EditText) findViewById(R.id.c);
Button spresti = (Button) findViewById(R.id.spresti);

Mygtuką ir tekstus gauname pagal res/layout/activity_main.xml nurodytus ID.
Toliau, mums reikia, kad paspaudus mygtuką vyktu kažkoks veiksmas.

setOnClickListener

Ši funkcija mums leis nustatyti kokį nors veiksmą. Taigi po kintamaisiais rašome :

spresti.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

String atext = a.getText().toString(); // į šiuos kintamuosius talpinsime skaičius, kuriuos įrašėme į teksto laukus.
String btext = b.getText().toString();
String ctext = c.getText().toString();

}
});
}

Yra žmonių kurie ims ir nieko neįrašys ir tikrins kas įvyko. Taigi turime padaryti, kad nieko neįrašius sustabdytų visą veiksmą.

Po kintamuoju “ctext” rašome :

if(atext.length() == 0){
Toast.makeText(getApplicationContext(), “Neįvedėte skaičių a laukelyje!”, Toast.LENGTH_LONG).show();
return;
}
if(btext.length() == 0){
Toast.makeText(getApplicationContext(), “Neįvedėte skaičių b laukelyje!”, Toast.LENGTH_LONG).show();
return;
}
if(ctext.length() == 0){
Toast.makeText(getApplicationContext(), “Neįvedėte skaičių c laukelyje!”, Toast.LENGTH_LONG).show();
return;
}
if(atext.length() != 0 && btext.length() != 0 && ctext.length() != 0)
{
// jeigu viskas atitinka ir visi laukai yra užpildyti
}

Funkcija length() sužino mūsų kintamojo ilgumą simboliais. Na čia turbūt viskas aišku, jeigu kintamasis lygus 0 tai sukuriam mažą tekstuką kuris atsiras ekrane (Toast) ir greit išnyks.

Dabar darbas su formulėm.

Na jau pradžioje paaiškinau visas diskriminanto formules ir visą kitą.

if(atext.length() != 0 && btext.length() != 0 && ctext.length() != 0)
{

Keliame tokį kodą :

int a1=Integer.parseInt(atext); // gautą teksta formatuojame į skaitines reikšmes, tai darome su visais kintamaisiais
int b1=Integer.parseInt(btext);
int c1=Integer.parseInt(ctext);
int D = b1*b1-4*a1*c1; // į šį kintamąjį talpiname diskriminantą
if(D 0)
{
double Dsqrt = Math.sqrt(D);
int x1 = (int) ((-b1+Dsqrt)/2*a1);
int x2 = (int) ((-b1-Dsqrt)/2*a1);
String xi = String.format(“Diskriminantas = %d\n x1 = %d\nx2 = %d\nSprendimas:\nx1,2=-%d(+,- )%d/2*%d=%d,%d”, D,x1,x2,b1,(int)Dsqrt,a1,x1,x2);
new AlertDialog.Builder(MainActivity.this)
.setTitle(“Diskriminantas”)
.setMessage(xi)
.show();
}

Visas kodas atrodytų taip :

package com.example.diskriminantas;

import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final EditText a = (EditText) findViewById(R.id.a);
final EditText b = (EditText) findViewById(R.id.b);
final EditText c = (EditText) findViewById(R.id.c);

Button spresti = (Button) findViewById(R.id.spresti);

spresti.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// login activity
String atext = a.getText().toString();
String btext = b.getText().toString();
String ctext = c.getText().toString();

if(atext.length() == 0){
Toast.makeText(getApplicationContext(), “Neįvedėte skaičių a laukelyje!”, Toast.LENGTH_LONG).show();
return;
}
if(btext.length() == 0){
Toast.makeText(getApplicationContext(), “Neįvedėte skaičių b laukelyje!”, Toast.LENGTH_LONG).show();
return;
}
if(ctext.length() == 0){
Toast.makeText(getApplicationContext(), “Neįvedėte skaičių c laukelyje!”, Toast.LENGTH_LONG).show();
return;
}
if(atext.length() != 0 && btext.length() != 0 && ctext.length() != 0)
{

int a1=Integer.parseInt(atext);
int b1=Integer.parseInt(btext);
int c1=Integer.parseInt(ctext);
int D = b1*b1-4*a1*c1;
if(D 0)
{
double Dsqrt = Math.sqrt(D);
int x1 = (int) ((-b1+Dsqrt)/2*a1);
int x2 = (int) ((-b1-Dsqrt)/2*a1);
String xi = String.format(“Diskriminantas = %d\n x1 = %d\nx2 = %d\nSprendimas:\nx1,2=-%d(+,-)%d/2*%d=%d,%d”, D,x1,x2,b1,(int)Dsqrt,a1,x1,x2);
new AlertDialog.Builder(MainActivity.this)
.setTitle(“Diskriminantas”)
.setMessage(xi)
.show();
}

}
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

Tikiuosi viskas aišku, ačiū už dėmėsį 🙂

Leave a comment