Házi feladat
Alapfejezet - Kerekítés - gombolyítás külön függvényeskedéssel
Az implementáció során próbáltam megtartani az eredeti kódokat (azaz a lehető legkevesebbet módosítani), ebből következően nem lesz egészen elegáns (értsd: nem egészen objektumorientált) a kerekítő és kiíró algoritmust 1 függvényen belül felhasználni, ám a cél az eredeti kódstruktúrák megtartása és tegyük hozzá: a gyors megoldási idő volt. Az utóbbi is lehet néha fontos szempont. (Programozó kollégák szoktak csinálni ilyen és ehhez hasonló trükköket, sokszor "sunyiságokat".) Akit ez zavar, az megpróbálhatja az alábbi implementációk kerekítő és kiíró algoritmusait külön függvényekbe illeszteni.
import java.util.Scanner;
public class Main {
public static int[] adatBekeres() {
Scanner scanner = new Scanner(System.in);
System.out.print("Kérem a tömb elemszámát: \n");
int elemszam = scanner.nextInt();
int[] tomb = new int[elemszam];
System.out.println("Kérem a tömb elemeit:");
for (int i = 0; i < tomb.length; i++) {
System.out.print((i + 1) + ". elem:
");
tomb[i] = scanner.nextInt();
}
scanner.close();
return tomb;
}
public static void szamkerekites(int[] tomb) {
int [] tomb2 = new int[tomb.length];
for(int i = 0; i < tomb2.length; i++) {
char c = ' ';
String s = Integer.toString(tomb[i]);
if(tomb[i] % 10 >= 1) {
c = s.charAt(s.length()
- 1);
}
else if(tomb[i] % 10 < 1) {
c = s.charAt(0);
}
String szamString =
Character.toString(c);
double szam = Double.parseDouble(szamString);
if (tomb[i] % 5 == 0) {
tomb2[i] =
tomb[i];
System.out.println((i + 1) + ". elem (" + tomb[i] + ") nem kerekítve: " +
tomb2[i]);
continue;
}
else if(szam < 2.5) {
tomb2[i] =
tomb[i] - (int)szam;
System.out.println((i
+ 1) + ". elem (" + tomb[i] + ") lefelé kerekítve: " + tomb2[i]);
continue;
}
else if(szam > 2.5 && szam < 5) {
tomb2[i] = (tomb[i]
- (int)szam) + 5;
System.out.println((i +
1) + ". elem (" + tomb[i] + ") felfelé kerekítve: " + tomb2[i]);
continue;
}
else if(szam > 5 && szam < 7.5) {
tomb2[i] = (tomb[i]
- (int)szam) + 5;
System.out.println((i +
1) + ". elem (" + tomb[i] + ") lefelé kerekítve: " + tomb2[i]);
continue;
}
else {
tomb2[i] = (tomb[i] - (int)szam) +
10;
System.out.println((i + 1) + ". elem
(" + tomb[i] + ") felfelé kerekítve: " + tomb2[i]);
}
}
}
public static void main(String[] args) {
szamkerekites (adatBekeres());
}
}
Végeredmény:
Kérem a tömb elemszámát:
5
Kérem a tömb elemeit:
1. elem: 23
2. elem: 40
3. elem: 11
4. elem: 103
5. elem: 45
1. elem (23) felfelé kerekítve: 25
2. elem (40) nem kerekítve: 40
3. elem (11) lefelé kerekítve: 10
4. elem (103) felfelé kerekítve: 105
5. elem (45) nem kerekítve: 45
import java.util.Scanner;
public class Main {
public static int[] adatBekeres() {
Scanner scanner = new Scanner(System.in);
System.out.print("Kérem a tömb elemszámát: \n");
int elemszam = scanner.nextInt();
int[] tomb = new int[elemszam];
System.out.println("Kérem a tömb elemeit:");
for (int i = 0; i < tomb.length; i++) {
System.out.print((i + 1) + ". elem:
");
tomb[i] = scanner.nextInt();
}
scanner.close();
return tomb;
}
public static void szamkerekites(int[] tomb) {
int [] tomb2 = new int[tomb.length];
for(int i = 0; i < tomb2.length; i++) {
char c = ' ';
String s = Integer.toString(tomb[i]);
if(tomb[i] % 10 >= 1) {
c = s.charAt(s.length()
- 1);
}
else if(tomb[i] % 10 < 1) {
c = s.charAt(0);
}
String szamString =
Character.toString(c);
int szam = Integer.parseInt(szamString);
if (tomb[i] % 5 == 0) {
tomb2[i] =
tomb[i];
System.out.println((i + 1) + ". elem (" + tomb[i] + ") nem kerekítve: " +
tomb2[i]);
continue;
}
else {
tomb2[i] = (tomb[i]
- szam) + Math.round(((float)szam) / 5) * 5;
System.out.println((i + 1) + ". elem (" + tomb[i] + ") kerekítve: " +
tomb2[i]);
}
}
}
public static void main(String[] args) {
szamkerekites (adatBekeres());
}
}
Végeredmény:
Kérem a tömb elemszámát:
5
Kérem a tömb elemeit:
1. elem: 12
2. elem: 111
3. elem: 34
4. elem: 50
5. elem: 65
1. elem (12) kerekítve: 10
2. elem (111) kerekítve: 110
3. elem (34) kerekítve: 35
4. elem (50) nem kerekítve: 50
5. elem (65) nem kerekítve: 65