Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Java: Olio-ohjelmointi Tetraedrien summa

koodaaja [11.09.2021 15:49:11]

#

Tämä on koodi, jolla lasketaan luonnollisten, kolmio -ja tetraedrilukujen summia. Ohjelmassa käytetään olio-ohjelmoinnin tekniikoita, kuten olion attribuutit, konstruktori (jos ei ole konstruktoria luotaan aina automaattisesti oletuskonstruktori), kapselointi sekä get-lauseet.

import java.util.*;

class Summat {

 //Luodaan muuttujat yksityisiksi, jotta niitä ei voi suoraan muokata päohjelman kautta.
 private int luvut[];
 private int kolmiot[];
 private int tetrat[];
 private int summat[];
 private int maara;
 private int summa;
 private int luvutSumma;
 private int kolmiotSumma;
 private int tetratSumma;

 private int luku;
 private int kolmio;
 private int tetra;
 private ArrayList<Integer> luvutLista;
 private ArrayList<Integer> kolmiotLista;
private ArrayList<Integer> tetratLista;

 public Summat(int maara){
 //Alustetaan muuttujat ja taulukot, että niitä voidaan käyttää.
  luvut = new int[maara];
  kolmiot = new int[maara];
  tetrat = new int[maara];
  summat = new int[maara];

  this.maara = maara;
  luvutSumma = 0;
  kolmiotSumma = 0;
  tetratSumma = 0;

  luvutLista = new ArrayList<>();
  kolmiotLista = new ArrayList<>();
  tetratLista = new ArrayList<>();

 }

 public void LaskeLuvut(){
 //Lasketaan tässä metodissa erikseen luvut taulukoihin ja summat.
  luvut[0] = 1;
  kolmiot[0] += luvut[0];
  tetrat[0] += kolmiot[0];
  luvutSumma += luvut[0];
   kolmiotSumma += kolmiot[0];
   tetratSumma += tetrat[0];
  //Edelliseen alkioon lisätään nykyinen luku.
  for (int i = 1; i < maara; i++){
   luvut[i] = i+1;
   kolmiot[i] += kolmiot[i-1]+luvut[i];
   tetrat[i] += tetrat[i-1]+kolmiot[i];

   luvutSumma += luvut[i];
   kolmiotSumma += kolmiot[i];
   tetratSumma += tetrat[i];

  }

 }

 public void LaskeSumma(boolean onkoLuku, boolean onkoKolmio, boolean onkoTetra){
 //Lasketaan jokaisen alkon summa lukujonoista.
 //Käyttäjä voi itse päättää, mitkä lukujonot otetaan huomioon laskemisessa.
 //Lukujonoja on kolmea erilaista.
  for (int i = 0; i < maara; i++){
   summa = 0;
   if (onkoLuku){
    summa += luvut[i];
   }
   if (onkoKolmio){

    summa += kolmiot[i];
   }
   if (onkoTetra){

    summa += tetrat[i];
   }
   summat[i] = summa; //Tämä voidaan myöhemmin palauttaa pääohjelmalle.
  }

 }

 public int AnnaOsanSumma(int valinta){
 //Lasketaaan tietyn lukujonon kaikkien määritettyjen alkioiden summa.
  switch (valinta){
   case 1:
    return luvutSumma;


   case 2:
    return kolmiotSumma;

   case 3:
    return tetratSumma;
  }
 return 0;
 }

 public int[] AnnaSumma(){
  return summat;
 }

 public void LisaaLuku(){
 //Lisätään ArrayListiin uudet luvut.
   luku++;
   kolmio += luku;
   tetra += kolmio;
   luvutLista.add(luku);
   kolmiotLista.add(kolmio);
   tetratLista.add(tetra);

 }

 public int AnnaLuku(int valinta, int indeksi){
 //Palautetaan käyttäjälle annettu lukujonon indeksi.
  switch (valinta){
   case 1:
    return luvutLista.get(indeksi);

   case 2:
      return kolmiotLista.get(indeksi);

   case 3:
      return tetratLista.get(indeksi);
  }
  return 0;

 }


}
public class TetraedrienSumma {

 public static void main(String[] args){
 //Tämän pääohjelman kautta voidaan laskea lukujonoja Summat-luokan kautta
  Summat s = new Summat(10);
  Summat s2 = new Summat(8);
  Summat s3 = new Summat(5);

  s.LaskeLuvut();
  s.LaskeSumma(false,true,true);

  for (Integer i : s.AnnaSumma()){
   System.out.println(i);
  }

  System.out.println("");
  System.out.println(s.AnnaOsanSumma(2));

  System.out.println("");

  s2.LaskeLuvut();
  s2.LaskeSumma(true,false,true);

  for (Integer i : s2.AnnaSumma()){
   System.out.println(i);
  }

  System.out.println("");
  System.out.println(s2.AnnaOsanSumma(2));

  System.out.println("");
  //Lopuksi käytetään ArrayListiä.
  for (int i = 0; i < 10; i++){
   s3.LisaaLuku();

  }
  System.out.println("");
   for (int i = 0; i < 10; i+=2){
   System.out.println(s3.AnnaLuku(3,i));

  }




 }

}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta