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 :
Na turbut aišku ką darysime.
Įrašius pirmojo pavyzdžio skaičius gausime tą patį :
Kaip minėjau, gali būti diskriminantas < 0 tai sprendinių lygtis neturi. Įstatome į visus šiuos narius skaičių 1 ir gausime :
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į 🙂