ASTRO - PHYSIK

Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

Albert Einstein

Programmiergeschick

Number-Repetition

Auch die dritte Woche war zeitlich primär geprägt vom Laborkurs. Aber dieses Mal möchte ich nicht darüber schreiben, womit ich die meiste Zeit verbracht habe, sondern welche Erkenntnis ich diese Woche hatte. Ich würde es allerdings nicht gerade als grösste Erkenntnis aller Zeiten bezeichnen… In einem meiner Kurse lerne ich die Programmiersprache C. Eine Aufgabe war es ein Programm zu schreiben, bei dem der Nutzer sowohl eine Zahl vorgeben kann, als auch, wie oft diese wiederholt werden soll. Z.B. „Wiederhole die Zahl „7“ dreimal“. → „777“. Über den Nutzen eines solchen Programmes lässt sich freilich streiten. Spannend war hier eher die Umsetzung. Eine sehr offensichtliche Variante wäre es einfach einen loop zu schreiben, der dreimal die Zahl 7 ausgibt. Dies könnte wie folgt aussehen:

#include <stdio.h>
#include <math.h>

int main()
{
	int a;
	int b;
	int c;
	printf("We repeat the number 'a' b times\n a = ");
    	scanf("%d", &a);
	printf(" b = ");
   	scanf("%d", &b);
    	printf("Result ");
    
   	int x;
    	for( x = 1; x < b; x++ )
    	{
    		printf("%d",a);
    	}
    	printf("%d\n",a);
       
	return 0;
}

Diese Variante wäre wohl einigen sofort in den Sinn gekommen. Aber man kann das ganze (allerdings mit gewissen Einschränkungen) auch viel eleganter Lösen! Nämlich mit einer mathematischen Formel!

 


#### SPOILER ####

 

x = (10^b – 1)/(9*a)

Das Programm könnte dann wie folgt aussehen: 

#include <stdio.h>
#include <math.h>

int main()
{
	int a;
	int b;
	int c;
	printf("We repeat the number 'a' b times\n a = ");
    	scanf("%d", &a);
	printf(" b = ");
    	scanf("%d", &b);
    	c = (pow(10,b)-1)/9*a;
	printf("Result %d\n",c);    
	return 0;
}

 

#### SPOILER END ####


 

Der Output den man bei Verwenden des Programmes erhält, ist bei beiden Varianten identisch (bis auf den Fall, man hätte gerne die Zahl 0 wiederholt. Das zweitere Programm ist aber schlanker.

 

Faszinierend hieran finde ich, dass man manchmal doch auf eine verblüffend andere Art zum gleichen Ergebnis kommen kann, wie mit der Holzhammer-Methode. Manchmal kann ein kleiner Umweg im Voraus viel Zeit bei der Umsetzung ersparen. Es kann sich also lohnen das Vorgehen nochmals grundlegend zu überdenken und einen völlig anderen Ansatz zu wählen. Selbiges werde ich nun auch beim Laborkurs versuchen, dort gibt es nämlich noch ein kleines programmiererisches Problem zu lösen. Wünscht mir Glück.

 

Kurzlebige schwarze Löcher
Altlast Laborbericht
 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Gäste
Mittwoch, 19. Dezember 2018
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Weitere Informationen Ok Ablehnen