Integer-Ziffernfolge in Array speichern

Gast #2508291
Lesenswert?
• ▲
▼
Danke an alle für die Ratschläge.
Leider steht der Abgabezeitraum meines Schulprojektes kurz bevor, daher 
habe ich es (aus Gründen meines Unverständnisses) so gelößt:

Möchte mich für mein Unwissen schon im Vorab entschuldigen (Bin halt 
totaler Anfänger)

so:

if temp >= 10000000 then
  temp := temp - 10000000;
  Dezimal8 := Dezimal8 +1 ;
end if;
if temp >= 1000000 then
  temp := temp - 1000000;
  Dezimal7 := Dezimal7 +1 ;
end if;
if temp >= 100000 then
  temp := temp - 100000;
  Dezimal6 := Dezimal6 +1 ;
end if;
if temp >= 10000 then
  temp := temp - 10000;
  Dezimal5 := Dezimal5 +1 ;
end if;
if temp >= 1000 then
  temp := temp - 1000;
  Dezimal4 := Dezimal4 +1 ;
end if;
if temp >= 100 then
  temp:= temp - 100;
  Dezimal3 := Dezimal3 +1;
end if;
if temp >= 10 then
  temp:= temp - 10;
  Dezimal2 := Dezimal2 +1;
end if;
Dezimal1 :=  temp;



Die Ziffern der Zahl sind Dezimal8 + Dezimal7 + Dezimal6 + Dezimal5 + 
Dezima4 + Dezimal3 + Dezimal2 + Dezimal1

Besteht die Möglichkeit, diese If-Anweisungen mit Case Statements zu 
realisieren oder sind bei Case Statemts Operatoren wie >=, <= illegal 
???

Beispielcode..........

case temp is
 when >= 10 =>
  temp:= temp - 10;
  Dezimal2 := Dezimal2 +1;
end case;

.........führt zu einem Error

Möchte das so machen weil "Generate Programming File" eeeeewig dauert 
und ich woanders gehört habe, mann könne dies optimieren in dem man case 
statements statt if-statements benutzt.....oder ist das Mumpitz????
Gast #2508338
Lesenswert?
• ▲
▼
Spiel doch mal durch:
nimm eine Zahl, z.B. 6000

if temp >= 10000000 then
  temp := temp - 10000000;
  Dezimal8 := Dezimal8 +1 ;
end if;

temp = 6000 , Dezimal8 = 0

if temp >= 1000000 then
  temp := temp - 1000000;
  Dezimal7 := Dezimal7 +1 ;
end if;

temp = 6000 , Dezimal7 = 0

if temp >= 100000 then
  temp := temp - 100000;
  Dezimal6 := Dezimal6 +1 ;
end if;

temp = 6000 , Dezimal6 = 0


if temp >= 10000 then
  temp := temp - 10000;
  Dezimal5 := Dezimal5 +1 ;
end if;

temp = 6000 , Dezimal5 = 0


if temp >= 1000 then
  temp := temp - 1000;
  Dezimal4 := Dezimal4 +1 ;
end if;

temp = 5000 , Dezimal4 = 1

if temp >= 100 then
  temp:= temp - 100;
  Dezimal3 := Dezimal3 +1;
end if;

temp = 5900 , Dezimal3 = 1


if temp >= 10 then
  temp:= temp - 10;
  Dezimal2 := Dezimal2 +1;
end if;

temp = 5890 , Dezimal2 = 1


Dezimal1 :=  temp;


Dezimal1 = 5890




Scheint mir nicht sinnvoll zu sein.
Fazit: du brauchst Schleifen, und die gehen in VHDL nur mit 
Zustandsautomaten.
Moderator (Firma: Titel) Persönliche Seite #2508361
Lesenswert?
• ▲
▼
PittyJ schrieb:
> Fazit: du brauchst Schleifen, und die gehen in VHDL nur mit
> Zustandsautomaten.
Wenn das eine Schulaufgabe ist, dann reicht es evtl. aus, wenn die 
Simulation funktioniert. Und dann kann man da schon ein paar Schleifen 
reinbasteln. Murks bleibt Murks...  ;-)

Mich packt schon das Grauen, wenn Anfänger mit Variablen rumhantieren...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren