AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

fehler gibts... die gibts nit...

Ein Thema von Thunderbolt · begonnen am 13. Mär 2005 · letzter Beitrag vom 13. Mär 2005
Antwort Antwort
Benutzerbild von Thunderbolt
Thunderbolt

Registriert seit: 29. Feb 2004
26 Beiträge
 
#1

fehler gibts... die gibts nit...

  Alt 13. Mär 2005, 13:30
Kann mir irgendjemand Erklären, warum um alles in der Welt dieses Programm total unsinnige Sachen ausgibts?


Delphi-Quellcode:
program aa;
{$APPTYPE CONSOLE}
uses SysUtils;

const obergrenze=50;

type feld = array [1..obergrenze] of string;

var potenzen :feld;
    i,eingabe :integer;

function zwei_hoch (n: word) :extended;
var temp :integer;
begin
  temp:=1;
  for i:=1 to n do temp:=temp*2;
  zwei_hoch:=temp;
end;

procedure generieren;
begin
  for i:=1 to obergrenze do potenzen[i]:=floattostr(zwei_hoch(i));
end;

begin
  generieren;
  repeat
    readln(eingabe);
    writeln(potenzen[eingabe]);
  until eingabe=0;
end.
Eigentlich solls ja nur ein Paar Potenzen generieren und speichern. Ich musste aber lustigerweise feststellen dass die for schleife beim generieren in 2 er schritten hochgeht und andere unerklärliche sachen...
Ich habe in der Vergangenheit gute Entscheidungen getroffen. Ich habe in der Zukunft gute Entscheidungen getroffen.
George W. Bush
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: fehler gibts... die gibts nit...

  Alt 13. Mär 2005, 13:45
Hallo, diese Warnungen sollte man unbedingt beachten!

Code:
  [Warnung] Project2.dpr(16): FOR-Schleifenvariable muss eine einfache lokale Variable sein
[Warnung] Project2.dpr(22): FOR-Schleifenvariable muss eine einfache lokale Variable sein
Du veränderst nämlich die variable i bei deinen berechnungen, so das ein normaler schleifendurchlauf nicht möglich ist.
Thomas H.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: fehler gibts... die gibts nit...

  Alt 13. Mär 2005, 14:23
So was ähnliches wollt ich auch grad antworten, dann is mir aber aufgefallen, daß er eigentlich das i in der Funktion "zwei_hoch" nicht verändert. Die Schleife dort läuft immer nur von 1 bis zu dem i aus der For-Schleife in "generieren". Daher steht das i nach "zwei_hoch" eigentlich wieder genau dort, wo es vorher war...
Schön ist es sicherlich nicht, aber ich kann jetzt direkt keinen logischen Fehler feststellen. Aber nichtsdestotrotz wirds wohl daran liegen.

Aber auf jeden Fall versteh ich nicht ganz, warum du das so kompliziert machst, Thunderbolt. Warum denn nicht einfach so:
Delphi-Quellcode:
program aa;
{$APPTYPE CONSOLE}
uses
  SysUtils, Math;

var eingabe : integer;

Begin
  WriteLn('Berechnung der 2er-Potenzen. Zum Beenden 0 eingeben!');
  Repeat
    Repeat
      Write('Geben sie den Exponenten ein: ');
      readln(eingabe);
      If eingabe > 50 Then
        WriteLn('Exponent muss <= 50 sein!');
    Until eingabe <= 50;
    WriteLn('2^' + IntToStr(eingabe) + ' = ' + FloatToStr(power(2,eingabe)));
  Until eingabe = 0;
End.
"power" macht ja schließlich genau das, was du willst. Erster Parameter ist die Basis, der zweite der Exponent. Mußt halt dafür noch die Unit Math einbinden
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: fehler gibts... die gibts nit...

  Alt 13. Mär 2005, 15:08
Moin Thunderbolt,

warum deklarierst Du eigentlich den Ergebnistyp von zwei_hoch als Extended, und verwendest dann nur integer?
(temp ist als integer deklariert)
Ab einer bestimmten Zahlengrösse muss das schiefgehen.

[EDIT]
Ausserdem ändere bitte umgehend mal den Titel Deines Threads.
Danke.
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Thunderbolt
Thunderbolt

Registriert seit: 29. Feb 2004
26 Beiträge
 
#5

Re: fehler gibts... die gibts nit...

  Alt 13. Mär 2005, 16:06
tut mir leid. ich muss für meine klassenkameraden die nichts checken aufgaben vormachen und das war so vorgegeben von der aufgabenstellung also was von wegen mach prozerdur für dies mach prozedur für das...

[edit] hab vergessen ne lokale variable i zu erstellen in der prozedur zwei_hoch. hat sich erledigt. [/edit]
Ich habe in der Vergangenheit gute Entscheidungen getroffen. Ich habe in der Zukunft gute Entscheidungen getroffen.
George W. Bush
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz