www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Algorithmen und Datenstrukturen" - Pseudocode Zahlendarstellung
Pseudocode Zahlendarstellung < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Pseudocode Zahlendarstellung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:17 So 11.11.2012
Autor: imzadi

Guten Tag,
Ich bin ein absoluter Neuling  und brauche Hilfe bei der Erstellung eines Pseudocodes,und zwar:
Es geht um die Dezimaldarstellung einer natuerlichen Zahl. Ich muss ein Pseudocode schreiben,das mir die i-te Ziffer dieser Darstellung zuruelckgibt.
Ich verstehe das so ,,dass ich erstmal nach der Eingabe der Zahl ihre Dezimaldarstellung ( mit dem Division-mit-Rest Algorithmus) ausgeben lassen soll und dann mit i irgendwie die i-et Ziffer aufrufen,ist das irgendwie so?
Fuer jede Hilfestellung bin ich euch sehr dankbar.(java)

Ich habe diese Frage in keinem anderen Forum auf anderen Seiten gestellt

        
Bezug
Pseudocode Zahlendarstellung: Antwort
Status: (Antwort) fertig Status 
Datum: 23:18 So 11.11.2012
Autor: reverend

Hallo imzadi,

das wird hier normalerweise entweder rekursiv gehen oder mit einer gezählten Schleife. Es geht aber auch sozusagen "direkt". Der Rechenaufwand ist allerdings der gleiche.

>  Es geht um die Dezimaldarstellung einer natuerlichen Zahl.
> Ich muss ein Pseudocode schreiben,das mir die i-te Ziffer
> dieser Darstellung zuruelckgibt.
>  Ich verstehe das so ,,dass ich erstmal nach der Eingabe
> der Zahl ihre Dezimaldarstellung ( mit dem
> Division-mit-Rest Algorithmus) ausgeben lassen soll

Nein, das ist nicht Teil der Aufgabe. Vielleicht ist ja nur die i-te Ziffer interessant und man will die 281.944.317 weiteren Ziffern gar nicht berechnen. Schließlich wird die Zahl ja nicht dezimal, sondern im Normalfall binär vorliegen (auch wenn man der Übersichtlichkeit halber gern hexadezimal zusammenfasst).

> und
> dann mit i irgendwie die i-et Ziffer aufrufen,ist das
> irgendwie so?

Naja, Du hast halt eine (theoretisch beliebig große) Zahl vorliegen.
Die erste Frage ist, wie eigentlich die Ziffern gezählt werden. Das geschieht normalerweise "von hinten", also die Einerstelle zuerst, dann die Zehner, die Hunderter etc. Dabei ist praktikabel, die Einerstelle mit der Ordnungsziffer 0 zu belegen, die Zehner mit 1 etc. Das entspricht dann dem Exponenten der Stellenwertigkeit. Die "dritte" Ziffer wären dann die, die den Stellenwert [mm] 10^3 [/mm] wiedergibt, also die Tausender. Das ist ja eigentlich die vierte Stelle von hinten.

Manchmal gibt ein Aufgabensteller zu erkennen, welche Zählweise er haben möchte, z.B. von vorne an gezählt oder aber von hinten beginnend mit "1", dann muss man eben entsprechend umrechnen.

Hier nun zwei Möglichkeiten in "meiner" Zählung:

1) Du schreibst einen Algorithmus, der Dir die letzte Stelle (also Nr. "0") einer Dezimalzahl liefert. Das geht natürlich durch Teilung durch 10 und Feststellung des Restes. Den schneidest Du ab (subtrahierst), teilst alles übrige durch 10 und hast damit die ursprüngliche Zahl ihrer letzten Stelle beraubt.
Das tust Du nun i-mal (also für die Tausender, die "dritte" Stelle, dreimal); erst im nächsten Durchgang liefert Dein Algorithmus die gesuchte Zahl, nämlich als Rest bzw. eben im nächsten Durchgang abzuschneidende Stelle.

2) Das geht auch in einem einmaligen Durchlauf. Deinem Rechner ist ja egal, ob er durch $10$ oder durch [mm] 10^i [/mm] teilt. Allerdings musst Du, wie bei der schriftlichen Division, die jeweils aktuelle Ziffer des Quotienten "aufschreiben", also festhalten. Danach brauchst Du sie nicht mehr, denn das Ergebnis der Division ist ja unerheblich.
Du folgst also der Regel der schriftlichen Division solange, bis der Rest kleiner als [mm] 10^i [/mm] ist. Die dann gerade aktuelle Ziffer des Quotienten (also die zuletzt berechnete) ist dann die gesuchte.

>  Fuer jede Hilfestellung bin ich euch sehr dankbar.(java)

Pseudocode sollst Du nehmen, weil die Struktur des Algorithmus unabhängig von seiner Implementierung in irgendeiner Sprache sein soll.

Das Prinzip funktioniert natürlich in jedem Stellenwertsystem. Zum Ausprobieren auf Papier ist es sogar besser, es einmal mit einem anderen System zu probieren, sagen wir im Siebenersystem.

Was ist denn die Stelle mit der Nummer 3 (also Stellenwert [mm] 7^3) [/mm] der Zahl 398.247 (dezimal)?

(Kontrolllösung: Dein Algorithmus sollte hier eine 6 auswerfen, da [mm] $398247_{10}=3246033_{7}$) [/mm]

Grüße
reverend


Bezug
                
Bezug
Pseudocode Zahlendarstellung: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 23:39 So 11.11.2012
Autor: imzadi

Super, vielen dank, muss mir noch darüber Gedanken machen... Kannst du vielleicht irgendeine Lektuere empfehlen, wo ich ueber so was nachlesen kann? Fühlt sich sehr ungewohnt  an.... Vielleicht mit Beispielalgorithmen und wie man Pseudocode schreibt,vielen Dank.

Bezug
                        
Bezug
Pseudocode Zahlendarstellung: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:20 Mi 14.11.2012
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]