Software Denk Sport C CPP 1 Auswertung
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Auswertung

..nocht nicht fertig, ein wenig geduld bitte noch!!..

Ursprung der Aufgabe war einst ein Thread aus einer englischen NG, bei der es um Einstellungstest ging. Aufgeschnappt hat sie Ulrich Eckhardt, einen ehemaligen Arbeitskollegen von mir. Nochmal Danke Uli!!. Es gab ja wirklich einige wunderbar quergedachte Lösungen. Neben denen unter SoftwareDenkSport C CPP 1 habe ich auch einige Lösungen per Mail bekommen.

Ich habe versucht die Lösungen ein wenig zu unterteilen nach:

Includes sind weggefallen..

Trivial
..
   printf("1 2 3 4 5 6 7 8 9 10\n");
   printf("10 9 8 7 6 5 4 3 2 1\n");
..
Wörtlich
..
   printf("Alle ganzen Zahlen von 1 bis 10\n");
   printf("Alle ganzen Zahlen von 10 bis 1\n");
..
Noch Wörtlicher
Z.B. auf Briefpapier:
..
ein Programm in C oder C++, ohne die Schlüsselworte "for", "do" und "while" zu benutzen, das folgendes ausgibt:
*Alle ganzen Zahlen von 1 bis 10
*Alle ganzen Zahlen von 10 bis 1
..
goto
..
   printf("Alle ganzen Zahlen von 1 bis 10\n");
   printf("Alle ganzen Zahlen von 10 bis 1\n");
..
Rekursion (Funktion)
Rekursion (Programm)
Callbacks
Eingebettete andere Sprache
..
	volatile unsigned long	esps;
	volatile char*			szFmt	= "%i ";
	volatile char*			szNl	= "\n";

   printf("Von Jirka Klaue\n");

	_asm{
	jmp		progstart;				// zum programmanfang (asm)

/* Neue linie anfangen */
newline:
	mov		esps,	esp;			// sp sichern

	mov		edx,	szNl;			// 1. Parameter für printf
	push	edx;
	call	printf;					// printf aufrufen

	mov		esp,	esps;			// sp widerherstellen

	ret;							// zurück

/* Programmstartpunkt */
progstart:
	/* Raufzählen */
	mov		ecx,	10;				// für loop (10x)
	mov		eax,	0;				// zählregister

uploop:
	inc		eax;					// zähler inkrementieren

	push	ecx;					// zähler und loopregister sichern
	push	eax;

	mov		esps,	esp;			// sp sichern

	push	eax;					// 2. Parameter für printf
	push	szFmt;					// 1. Parameter für printf

	call	printf;					// Ausgabe

	mov		esp,	esps;			// sp widerherstellen

	pop		eax;					// zähler und loopregister widerherstellen
	pop		ecx;

	loop	uploop;					// ecx dekrementieren und wenn nicht 0, dann nochmals

	call	newline;				// Neue Zeile beginnen


	/* Runterzählen */
	mov		ecx,	10;				// für loop (10x)

downloop:
	push	ecx;					// zähler sichern
	mov		esps,	esp;			// sp sichern

	push	ecx;					// 2.Parameter für printf
	push	szFmt;					// 1. Parameter für printf

	call	printf;					// Ausgabe

	mov		esp,	esps;			// sp widerherstellen
	pop		ecx;					// zähler widerherstellen

	loop	downloop;				// ecx dekrementieren und wenn nicht 0, dann nochmals

	call	newline;				// Neue Zeile beginnen
	}
}
..

Aufruf externer Programme
{
    execlp("perl", "-e", "for $i (1..10) { print $i,'\n'; };");
}
Präprozessormakros
..
#define FO(x) fo##x
void main()
{
   int i;
   FO(r)( i=1 ; i<=10 ; ++i)
      printf("%d ",i);
   printf("\n");
   FO(r)( i=10 ; i>0 ; --i)
      printf("%d ",i);
}
..
Konstruktor / Destruktor
..
unsigned n = 0;
struct N
{
    N(){std::cout << ++n;}
    ~N(){std::cout << n--;}
};
int main()
{
    N nn[10];
}
..
Sonstiges


StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 6. März 2003 21:45 (diff))
Suchbegriff: gesucht wird
im Titel
im Text