Kap 11 øvelse 3 (Et forslag til løsning) + brug for sparring

Her kan du diskutere opgaverne til Java serien og evt. dele dine egne løsningsforslag med andre.
Besvar
Henrik Halle
Entusiast
Entusiast
Indlæg:38
Tilmeldt:4. maj 2014, 09:22
Kap 11 øvelse 3 (Et forslag til løsning) + brug for sparring

Indlæg af Henrik Halle » 9. maj 2014, 18:59

Jeg har to forslag til løsninger.

Kode: Vælg alt

public class Main2 {
// funktioner
	
	static void findentabel(int x) {
	
		
		for(int i=x; i<=10*x ; i+=x)
			
		      System.out.println(i);
		
			return;
	}
	//programudførelse	

	public static void main(String[] args) {
		
		findentabel(6);
		
Jeg er i tvivl om det er ok eller om jeg skal fange et return som jeg skal bruge senere.

Jeg havde først en løsning der hed.

Kode: Vælg alt

public class Main2 {
// funktioner
	
	static void findentabel(int x) {
	
		
		for(int i=x; i<=10*x ; i++)
			if (i%x==0)
		      System.out.println(i);
		
			return;
	}

	
//programudførelse	

	public static void main(String[] args) {
		
		findentabel(6);
		

Men tænker at ved den sidste skal der køres 60 gennemløb, hvor ved min øverste kun skal køres 10 gennemløb.

Jeg har et andet problem. Jeg vil gerne have en tekst linje øvers som fortæller hvilken tabel det er .

Min ide var dette

Kode: Vælg alt


public class Main2 {
// funktioner
	
	static void findentabel(int x) {
	
		
		for(int i=x; i<=10*x ; i+=x)
			
		      System.out.println(i);
		
			return;
	}

	
//programudførelse	

	public static void main(String[] args) {
		System.out.println("Du har valgt " + x + " tabellen");
		findentabel(6);
Det virker ikke, og jeg tænker det ikke virker fordi int x er i local scope i funktionen.
Men hvordan får jeg det så til at virke?

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: Kap 11 øvelse 3 (Et forslag til løsning) + brug for spar

Indlæg af seerex » 10. maj 2014, 16:20

Jeg starter lige med det sidste spørgsmål:
Henrik Halle skrev:Jeg vil gerne have en tekst linje øvers som fortæller hvilken tabel det er .
Dette kan du ikke på den måde du angav, og netop fordi x er local scope, men også fordi x faktisk slet ikke eksistere på det tidspunkt. Det er nok nemmest og kigge på det som localt scope, altså funktionen er indehaver af den der x variable fordi den er angivet som en parameter i den. Du kan altså ikke få adgang til den udefra.

Men måske man kan flytte din print ind et sted, så den har adgang til den x variabel? *hint hint*
Henrik Halle skrev:Men tænker at ved den sidste skal der køres 60 gennemløb, hvor ved min øverste kun skal køres 10 gennemløb.
Korrekt, din øverste løsning er klart den mest optimale. Som du siger, spares der ekstremt mange gennemløb, og det er naturligvis at foretrække. Hvis man skulle bruge din anden løsning, der ligesom kigger på hvert eneste tal, og ikke bare hopper direkte til den næste i tabellen, så skulle det nok være hvis man vil finde flere tabeller indenfor den samme loop. Så kan man for eksempel finde alle tabeller der er lig med, og mindre end den der blev angivet som parameter. (ny øvelse måske? Kan godt være lidt svær tror jeg). ;)

Men rigtig fine løsninger, og håber du fik svar på dine spørgsmål.

Henrik Halle
Entusiast
Entusiast
Indlæg:38
Tilmeldt:4. maj 2014, 09:22

Re: Kap 11 øvelse 3 (Et forslag til løsning) + brug for spar

Indlæg af Henrik Halle » 10. maj 2014, 16:56

Tak for hjælpen.
Jeg vil sige med funktioner var jeg presset mentalt. Jeg skulle virkelig tænke mig om. Men det er jo heldigvis det sjove når det så lykkes.

Tak for dit hint.
Så kom jeg frem til dette.

Kode: Vælg alt

public class Main2 {
// funktioner
	
	static void findentabel(int x) {
		System.out.println("Du har valgt " + x + " tabellen");
		
		for(int i=x; i<=10*x ; i+=x)
			
		      System.out.println(i);
		
			return;
	}

	
//programudførelse	

	public static void main(String[] args) {
		
		findentabel(6);

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: Kap 11 øvelse 3 (Et forslag til løsning) + brug for spar

Indlæg af seerex » 10. maj 2014, 17:03

Hehe ja funktioner er der hvor det bliver rigtig sjovt at prøve og forstå programmering :) Bare vent til du skal snakke med Objekter, så bliver du i hvert fald skaldet af alle de hår du river ud ;)

Super løsning! :)

HrLau
Begynder
Indlæg:2
Tilmeldt:21. mar 2019, 14:01

Re: Kap 11 øvelse 3 (Et forslag til løsning) + brug for sparring

Indlæg af HrLau » 22. mar 2019, 18:51

Jeg valgte følgende løsning inspireret fra ovenstående, samt et break, da der opstår fejl (eller uendeligt mange iterationer) hvis der indsættes 0 eller et negativt tal og en tekst, der fortæller, man skal prøve igen med et helt positivt tal.

Kode: Vælg alt

public class Main {

	static int tabel(int x) {
		if ( x <= 0 )
			System.out.println("Prøv igen, men med et helt positivt tal !");
		for (int i = x; i <= 10 * x; i+=x)	
		
		{	if ( i <= 0)
			break;
		
		       System.out.println(i);
            if ( i == 10 * x)
            System.out.println("Det var så " + x + "-tabellen !");}
	
return x;}
	
	public static void main(String[] args) {
		
		tabel(8);
		}}

Besvar