Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Zahlenreihe

Diskussion: Zahlenreihe im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige Hi, also hier meine erste Aufgabe (gar nicht leicht sich da was auszudenken ;-) Aufgabe: Es sind alle Zahlen ...

Antwort
Alt 14.07.06, 14:30   #1 (permalink)
 
Registriert seit: 23.05.05
Xalon Leistung: Facit NTK
Xalon eine Nachricht über ICQ schicken
Likes: 0
Standard Zahlenreihe

Anzeige

Hi,
also hier meine erste Aufgabe (gar nicht leicht sich da was auszudenken ;-)

Aufgabe:
Es sind alle Zahlen von 1 bis 100 auf den Bildschirm zu "zaubern",
allerdings OHNE Schleifen und OHNE Gotos im Code zu benutzen.
Das ganze dürfte selbst für Anfänger leicht zu lösen sein.

Hier meine Lösung:
(Zum lesen einfach mit STRG+C und STRG+V in einen Editor kopieren
oder bei diesem Beitrag auf Zitieren klicken.)


#include <iostream>
using namespace std;

void zahlenreihe(void);
int counter = 0;

int main(void)
{
zahlenreihe();
}


void zahlenreihe(void)
{
counter++;
cout << counter << endl;

if(counter < 100)
zahlenreihe();
}





Happy Coding,
Xalon

Xalon ist offline   Mit Zitat antworten
Alt 14.07.06, 14:36   #2 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Auch ohne Rekursion?

(seltsame Aufgabe, btw)

Edit: Ich glaube, alles nacheinander auszugeben ist auch nicht gemeint
Edit2: Ich sehe gerade, dass Rekursion wohl erlaubt war, obwohl es eigentlich das selbe ist wie gotos/schleifen..
Lesco ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.07.06, 14:38   #3 (permalink)
Senior Member
 
Registriert seit: 23.12.03
silenced Leistung: Facit NTK
Likes: 0
Standard

#/bin/bash
echo 1
echo 2
echo 3
echo 4
....
return 0
silenced ist offline   Mit Zitat antworten
Alt 14.07.06, 14:39   #4 (permalink)
 
Registriert seit: 02.11.04
M@rex Leistung: Facit NTK
Likes: 0
Standard

Bisel Ruby-Eval-Zauberei gefällig?

Code:
# Ruby 1.8.04

i = 1
cmd = "puts i.to_s; i += 1;" * 99
eval(cmd)
Gut, ich gebe zu ist fieß eine Script-Sprache zu verwenden.

EDIT:

Vll so etwas eleganter:

Code:
i = 1
eval("puts (i += 1);" * 99)
Ist deshalb möglisch, da Ruby bei "i += 1" den neuen Wert zurückgibt.
M@rex ist offline   Mit Zitat antworten
Alt 14.07.06, 14:44   #5 (permalink)
Themenstarter
 
Registriert seit: 23.05.05
Xalon Leistung: Facit NTK
Xalon eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
Original von Lesco
Auch ohne Rekursion?

(seltsame Aufgabe, btw)

Edit: Ich glaube, alles nacheinander auszugeben ist auch nicht gemeint
Seltsam?Naja also ich find für Einsteiger passts ganz gut .
Aber ok,nächstes mal bekommt ihr was schwierigeres,ich weiß auch schon was
Rekursion ist natürlich erlaubt.

@silenced:Naja,nicht sehr elegant

Xalon
Xalon ist offline   Mit Zitat antworten
Alt 14.07.06, 15:00   #6 (permalink)
Senior Member
 
Registriert seit: 23.12.03
silenced Leistung: Facit NTK
Likes: 0
Standard

:-) Naja, so ganz ohne Schleife.... geht´s ja doch nicht :-) war ja auch mehr als scherz gemeint, aber alle achtung für M@rex ;-)

alternativ
silenced ist offline   Mit Zitat antworten
Alt 14.07.06, 15:17   #7 (permalink)
Member of Honour
 
Benutzerbild von ivegotmail
 
Registriert seit: 28.05.03
ivegotmail Leistung: Z3
Likes: 1
Standard

Code:
#!/usr/bin/perl
my @Zahlen = 1..100;
print "@Zahlen";
__________________
http://livehabo.hackerboard.de | http://livebb.sourceforge.net
ivegotmail ist offline   Mit Zitat antworten
Alt 14.07.06, 15:21   #8 (permalink)
Senior Member
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Code:
 
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("4");
System.out.println("5");
System.out.println("6");
System.out.println("7");
System.out.println("8");
System.out.println("9");
System.out.println("10");

System.out.println("11");
System.out.println("12");
System.out.println("13");
System.out.println("14");
System.out.println("15");
System.out.println("16");
System.out.println("17");
System.out.println("18");
System.out.println("19");
System.out.println("20");

System.out.println("21");
System.out.println("22");
System.out.println("23");
System.out.println("24");
System.out.println("25");
System.out.println("26");
System.out.println("27");
System.out.println("28");
System.out.println("29");
System.out.println("30");

System.out.println("31");
System.out.println("32");
System.out.println("33");
System.out.println("34");
System.out.println("35");
System.out.println("36");
System.out.println("37");
System.out.println("38");
System.out.println("39");
System.out.println("40");

System.out.println("41");
System.out.println("42");
System.out.println("43");
System.out.println("44");
System.out.println("45");
System.out.println("46");
System.out.println("47");
System.out.println("48");
System.out.println("49");
System.out.println("50");

System.out.println("51");
System.out.println("52");
System.out.println("53");
System.out.println("54");
System.out.println("55");
System.out.println("56");
System.out.println("57");
System.out.println("58");
System.out.println("59");
System.out.println("60");

System.out.println("61");
System.out.println("62");
System.out.println("63");
System.out.println("64");
System.out.println("65");
System.out.println("66");
System.out.println("67");
System.out.println("68");
System.out.println("69");
System.out.println("70");

System.out.println("71");
System.out.println("72");
System.out.println("73");
System.out.println("74");
System.out.println("75");
System.out.println("76");
System.out.println("77");
System.out.println("78");
System.out.println("79");
System.out.println("80");

System.out.println("81");
System.out.println("82");
System.out.println("83");
System.out.println("84");
System.out.println("85");
System.out.println("86");
System.out.println("87");
System.out.println("88");
System.out.println("89");
System.out.println("90");

System.out.println("91");
System.out.println("92");
System.out.println("93");
System.out.println("94");
System.out.println("95");
System.out.println("96");
System.out.println("97");
System.out.println("98");
System.out.println("99");
System.out.println("100");
*rofl* Also ich find meinen Code super
Serow ist offline   Mit Zitat antworten
Alt 14.07.06, 15:58   #9 (permalink)
Senior Member
 
Registriert seit: 28.08.05
2Bios Leistung: Facit NTK
Likes: 0
Standard

ivegotmail war schneller
2Bios ist offline   Mit Zitat antworten
Alt 14.07.06, 17:11   #10 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Lightbulb

Code:
#!/bin/bash

if [ ! $1 ]
then
  number=1
else
  let number=$1+1
fi

if [ $number -lt 101 ]
then
  echo $number
  ./$0 $number
fi
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 14.07.06, 20:57   #11 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

kommt zwar nicht an ruby ran, immerhin aber 32 Byte
Code:
44 40 50 D4 0A 05 30 30  50 8A D4 B4 02 CD 21 58  8A D0 B4 02 CD 21 58 81 EC 8F 02 BB 01 01 53 C3
bzw.
Code:
.Model tiny
CSEG segment
org 100h
Begin:     
    inc sp      
    Ausgeben:
    
    inc ax
    push ax
    aam   
    add ax,3030h 
    push ax
    mov dl,ah
    mov ah,02
    int 21h
    pop ax
    mov dl,al
    mov ah,02
    int 21h    
    pop ax    
    
    sub sp,655
    mov bx,offset Ausgeben 
    push bx
    ret
   
    
CSEG ends
end Begin
Das ganze als fertige COM (die Endung TXT abschneiden).
Angehängte Dateien
Dateityp: txt zahlen.com.txt (32 Bytes, 128x aufgerufen)
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 23.07.06, 19:08   #12 (permalink)
 
Registriert seit: 20.07.06
Darkslide Leistung: Facit NTK
Likes: 21
Standard

Und hier noch ein Beispiel in Python:

Code:
def zahlenreihe(n=0):
   print n
   if n==100:
      raise SystemExit()
   else:
      zahlenreihe(n+1)
Ist zwar sau umständlich und geht noch einfacher aber was solls!
Darkslide ist offline   Mit Zitat antworten
Alt 14.08.06, 00:58   #13 (permalink)
 
Registriert seit: 03.01.05
Chatter Leistung: Facit NTK
Chatter eine Nachricht über ICQ schicken
Likes: 0
Standard

Und das ganz noch in PHP(falls erlaubt):

PHP-Code:
<html>
<head>
<title>Zähler</title>
</head>
<body>
<?php

$zahl 
1;

function 
zaehlen($zahl)  {

    if (
$zahl == 100) {
      echo 
$zahl."<br>Fertig.";
    } else {
      echo 
$zahl."<br>";
      
$zahl++;
      
zaehlen($zahl);
    }

 }

zaehlen($zahl);
?>
</body>
</html>
Chatter ist offline   Mit Zitat antworten
Alt 14.08.06, 21:50   #14 (permalink)
mig
 
Registriert seit: 12.08.06
mig Leistung: Facit NTK
Likes: 0
Standard

Code:
class zahl {
	public static void main(String[] args) {
	int i=0;
	inc(i);
	}
	static void inc(int i){
		if(i<100){
			i++;
			System.out.println(i);
			inc(i);
		}
	}
}
mig ist offline   Mit Zitat antworten
Alt 14.08.06, 21:56   #15 (permalink)
 
Registriert seit: 13.08.06
lux_mit_x Leistung: Facit NTK
lux_mit_x eine Nachricht über ICQ schicken
Likes: 0
Standard

die lösung von CDW is natürlich state of the art

und für mich ein guter einstiegspunkt, sich endlich mal an assembler heran zu wagen

EDIT: @CDW: nur für mich als kleiner einblick: wie lange hast du dafür gebraucht? .. is das sowas wie routine für jemanden, der assembler kann?
lux_mit_x ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Zahlenreihe
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
rekursive Zahlenreihe CDW Programmieraufgaben 22 08.06.11 12:01


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61