Forum: Knobelecke
Moderatoren: broesel, juergenThema: Finde die 12!
Finde die 12!
broesel (webmaster) am 15.12.2010 um 00:55
Der Ansatz ist klar: while((c = getchar()) != EOF) /* ... */
Das Rätsel: wer kann den kürzesten Schleifenkörper bauen, der die Aufgabe löst?
Keine schäbigen Tricksereien mit dem Präprozessor und keine Funktionsaufrufe! Maximale Portabilität, kein ASCII-Getrickse! Erlaubt sind Variablen (klar), Kontrollstrukturen, Operatoren, Klammern und was man sonst so in einem Appendix über Syntax findet. Eventuell benötigte Variablen dürfen natürlich vorher definiert werden.
Wer eine kürzere Lösung als ich findet, bekommt von mir eine Flasche bestes saarländisches Bier per Post. Damit hier auch alles mit rechten Dingen zugeht, habe ich meine derzeitige Lösung per PN an Jürgen geschickt, der hiermit von der Teilnahme ausgeschlossen ist :P
Viel Spaß,
Philip
--
The C Programming Quiz
- bitte Fragen einreichen :)
Re: Finde die 12!
broesel (webmaster) am 15.12.2010 um 02:43
Gruss,
Philip
--
The C Programming Quiz
- bitte Fragen einreichen :)
Re: Finde die 12!
Martin Conrad (webmaster) am 15.12.2010 um 06:53
Wenn c 1 ist, dann muss c = getchar() 2 sein.
Interessant ist auch die rekursive Funktion für eine Zeichenkette variabler Länge
Bis denne
Martin
--
0xC0FFEE
Re: Finde die 12!
Patrick am 15.12.2010 um 09:19
#include <stdio.h>
#include <stdlib.h>
int main ( void )
{
int c,b=0, hits=0;
while (EOF != (c=getchar()))
{
if(c=='1')
{
b=1;
continue;
}
if(b && c=='2')
hits++;
b=0;
}
printf("12 ist %d mal vorgekommen.\n", hits);
return EXIT_SUCCESS;
}
--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.
[EDIT] - Re: Finde die 12!
Martin Conrad (webmaster) am 15.12.2010 um 10:00
bei ner zweistelligen Zahl kannst du das Zwischenergebnis schlicht weglassen. Du brauchst keine Variablen ausser dem Zähler und einem char:
c = getchar();
while( c != EOF)
{
if( c == '1')
{
if( (c = getchar()) == '2')hits++;
}
else c = getchar();
}
Bis denne
Martin
--
0xC0FFEE
