Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pascalprogramm (https://www.delphipraxis.net/112922-pascalprogramm.html)

recht_250 29. Apr 2008 18:03


Pascalprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich brauche unbedingt Hilfe.

Ich bin Student am Studienkolleg und habe dieses Jahr zum erstenmal Informatik.
Im Unterricht machen wir gerade Pascalprgramme.
das ist eine Aufgabe, die ich bis Freitag unbedingt lösen muss, aber es klappt nicht bei mir und ich finde den Fehler nicht.

Es wäre schön, wenn ihr euch das mal anschaut und mir den Fehler sagt und mir hilfe geben kann.

Danke.

PS: Im Anhang unten, ist die Datei als Text.

hoika 29. Apr 2008 18:05

Re: Pascalprogramm
 
Hallo,

wo ist denn ein Fehler ?

- deine Eingabewerte -> fehlt
- aktuelle Ausgabe des Programms -> fehlt
- was soll rauskommen -> fehlt

der Hausaufgaben-Löser (jaja, musste sein ;) )



Heiko

Nuclear-Ping 29. Apr 2008 19:15

Re: Pascalprogramm
 
Was für'n Kauderwelsch der Code ist ... wer soll denn da durchblicken? :shock:

hoika 29. Apr 2008 19:26

Re: Pascalprogramm
 
Hallo,

procedure Eingabe(var al,be:vektor);


Eingabe (a);


2 Parameter werdne erwartet, einer übergeben ???


Heiko

DeddyH 29. Apr 2008 19:29

Re: Pascalprogramm
 
Das ist bei den anderen Prozeduren genauso. Ich denke, man müsste sich mal über Gültigkeitsbereiche von Variablen schlau machen.

Klaus01 29. Apr 2008 19:42

Re: Pascalprogramm
 
Guten Abend,

habe es mal etwas kommentiert.
Es hängt noch irgendwo.Korrektur, es hängt nicht, es wartet auf Benutzereingaben.

Etwas sprechendere Prozedure- und Variablennamen wären nicht schlecht.
Die Eingabe ist etwas unglücklich, und wird des öfteren wiederholt, den Grund
dafür sehe ich nicht.

Delphi-Quellcode:
program vektrech;

{Programmtext(Susila), Erklärung(Revilla), Eingabe (Ali, Oentari), Summe (Ren, Kambang, Abuali), Differenz(Mewara, Sthapit, Zhong), Skalarprodukt(Habig, Keshmiri, Younes), Kreuzprodukt(Gregoryev, Nguyen, Tognia)}
const n=3;

type
  vektor = array[1..n] of real;

var
  a, b, s, d, k : vektor;
  sp:real;

  procedure Eingabe(var al,be:vektor);
    {var a1,a2,a3,b1,b2,b3:real;}
  var
    i: integer;
  begin
    writeln('Geben sie die Komponenten der vektoren ''al'' und ''be''ein');
    for i:=1 to n do
      begin
        {al:=a;be:=b;}
        write('a:');
        readln(al[i]);
        write('b:');
        readln(be[i]);
      end;
  end;



  procedure sum(al,be:vektor;var su: vektor);
  var
    k:integer;
  begin
    for k:= 1 to n do
      begin
        read (al[k],be[k]);  // warum werden hier die Wert nocheinmal eingelesen
        su[k]:= al[k]+be[k];
        write(su[k]);
      end;
  end;

  procedure di(al,be:vektor; var di: vektor);
    var k: integer;
    begin
      for k:=1 to n do
        begin
          read(al[k]);     // warum hier auch noch einmal einlesen?
          read(be[k]);     // warum hier auch noch einmal einlesen?
          di[k{i}]:=al[k]-be[k]; // wo kommt das i her ??
          write(di[k]);
       end;
    end;

  procedure skal (var skap: real; al, be: vektor);
    begin
      skap:=al[1]*be[1]+al[2]*be[2]+al[3]*be[3];
    end;



  procedure Kreuz(a,b: Vektor; var kr: Vektor);
    begin
      kr[1]:=a[2]*b[3]-a[3]*b[2];
      kr[2]:=a[3]*b[1]-a[1]*b[3];
      kr[3]:=a[1]*b[2]-a[2]*b[1];
   end;

begin  // Hauptprogramm
        // die Parameterübergabe war im original falsch
        // ob sie jetzt richtig ist ??
  Eingabe(a,b);
  sum (a,b,s);
  di(a,b,s);
  skal(sp,a,b);
  kreuz (a,b,k);
end.
Grüße
Klaus

recht_250 4. Mai 2008 12:30

Re: Pascalprogramm
 
Hallo.

Irgendwie verstehe ich nicht was Hoiko da meint mit Eingabewert und so.
Vielleicht kann mir von euch noch jemand genauer weiter helfen.

Ich weiß auch nicht warum da alles doppelt steht. Wir haben das so vom Lehrer bekommen.

Hier nochmal:

Delphi-Quellcode:
program Kreuz_Produkt;
const n=3;
{Anzahl der Dimension. Man kann offentsichtlich eine beliebige natrliche
Zahl in n einsetzen. Nur die Procedure Kreuz gilt fr n=3. Fr n>3 gibts
kein Kreuz mehr!}
type Vektor=array [1..n] of real; {vektor mit n reelen Komponenten}

procedure Kreuz(a,b: Vektor; var kr: Vektor);
{die Procedure berechnet das Kreuz von 2 Vektoren a und b, welche
als KONSTANTE PARAMETER schon vorgegeben sind. Das Kreuz wird in den
VERŽNDERLICHEN PARAMETER, also Vektor kr gespeichert. Warum ist kr ein
ver„nderlicher Parameter? Denn, wenn wir sonst kr als einen Konstanten
Parameter betiteln wrden, k”nnte der Wert von kr aber nach der Ausfhrung
der Procedure nicht ver„ndert werden. Zum Probieren k”nnt ihr ja das Wort
"Var" vor kr weglassen und den Wert von kr betrachten. Der bleibt aber
unver„ndert.
}
   begin
      kr[1]:=a[2]*b[3]-a[3]*b[2];
      kr[2]:=a[3]*b[1]-a[1]*b[3];
      kr[3]:=a[1]*b[2]-a[2]*b[1];
   end;

procedure Addier(a,b:Vektor;var s:vektor);
   var i:integer;
   begin
      for i:=1 to n do s[i]:=a[i]+b[i];
   end;
procedure Subtrahier(a,b:Vektor;var s:vektor);
   var i:integer;
   begin
      for i:=1 to n do s[i]:=a[i]-b[i];
   end;
procedure Skalar(a,b:Vektor;var sk:real);
   var i:integer;
   begin
      sk:=0;
      for i:=1 to n do sk:=sk+a[i]*b[i];
   end;

procedure Ausgabe(a:Vektor);
   {stellt a in den Bildschirm dar nach der Form (a1,a2,a3)}
   begin
      write (' (',a[1]:0:3,',',a[2]:0:3,',',a[3]:0:3 ,') ');
   end;

procedure Eingabe(var a:vektor);
   {einen Vektor von der Tastatur eingeben}
   var i:integer;
   begin
      writeln;
      for i:=1 to n do
         begin
            write('Die ',i,'-te Komponente:');readln(a[i]);
         end;
   end;
VAR
   a,b,c:Vektor;t:real;

BEGIN
   a[1]:=1;a[2]:=0;a[3]:=0;
   write('a= ');Ausgabe(a);writeln;
   b[1]:=0;b[2]:=1;b[3]:=0;
   write('b= ');Ausgabe(b);writeln;
   Kreuz(a,b,c);write('a * b = ');Ausgabe(c);writeln;
   Skalar(a,b,t);writeln('a . b = ',t:0:3);
   write('Vektor a wiederum eingeben!');Eingabe(a);
   write('Vektor b wiederum eingeben!');Eingabe(b);
   Kreuz(a,b,c);write('a * b = ');Ausgabe(c);writeln;
   Skalar(a,b,t);write('a . b = ',t:0:3);
   readln;
END.


Es wäre schön wenn ihr mit weiter helfen könnt.
Ich muss das heute Abend meinem Lehrer auf Zensoerung schicken.

Danke an alle.

mkinzler 4. Mai 2008 12:32

Re: Pascalprogramm
 
Wie wäre es, wenn du deinen Quellcode richtig formatieren/den Delphi-Tag verwenden würdest?

recht_250 4. Mai 2008 12:40

Re: Pascalprogramm
 
sorry, ich versteh nicht was du meinst.

mkinzler 4. Mai 2008 12:52

Re: Pascalprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Markiere deinen Code und Klicke auf Delphi-Code

christian_r 4. Mai 2008 12:52

Re: Pascalprogramm
 
Im Beitrags-Editor gibt es einen Button mit der Beschriftung "Delphi-Code".

[tag]
Inhalt
[/tag]

"tag" durch "delphi" ersetzen oder die Buttons benutzen. Und schon wird alles innerhalb der Tags entsprechend der Vorgaben zu jedem Tag formatiert.

recht_250 4. Mai 2008 13:31

Re: Pascalprogramm
 
ich habs geändert - ich hoffe ihr könnt jetzt besser durchsehen.

Danke!!!

mkinzler 4. Mai 2008 13:40

Re: Pascalprogramm
 
Ich würde den Rückgabewert auch als solchen deklarieren und nicht als Var-Parameter

recht_250 4. Mai 2008 14:34

Re: Pascalprogramm
 
kannst du mir vielleicht ein Beispiel schreiben!?!?

Da müssen irgendwo noch andere Fehler drin sein.

mkinzler 4. Mai 2008 14:38

Re: Pascalprogramm
 
Delphi-Quellcode:
function Kreuz(a,b: Vektor): Vektor;
...
Aufruf:
Delphi-Quellcode:
c := Kreuz( a, b);

recht_250 4. Mai 2008 14:53

Re: Pascalprogramm
 
Also, es tut mir ja leid, dass ich mich so anstelle, aber ich habe von Informatik wirklich gar keine Ahnung, GAR KEINE und ich danke euch sehr für eure Antworten und Hilfe, aber so wie ihr mir die schreibt, verstehe ich leider gar nichts.


Ich weiß gar nicht wo ich was wie ändern soll.

Tut mir leid. :( :oops:

DeddyH 4. Mai 2008 15:58

Re: Pascalprogramm
 
Kannst Du uns denn mal sagen, was nicht funktioniert? Ich habe den Quelltext eben mal mit TP7 kompiliert, und das läuft. Da ich aber von Vektoren keine Ahnung (mehr) habe, kann ich nicht mit Bestimmtheit sagen, ob die Berechnungen korrekt sind.

recht_250 4. Mai 2008 16:19

Re: Pascalprogramm
 
Wenn du das kompiliert hast und dein Prgoramm kein Fehler gefunden hat, ist alles super.

Ich hab es auch kompiliet und er zeigt immer, das mindestens 5 Fehler da sind.

DeddyH 4. Mai 2008 16:21

Re: Pascalprogramm
 
Womit hast Du es denn kompilieren wollen? Delphi, Lazarus, TP?

mkinzler 4. Mai 2008 16:22

Re: Pascalprogramm
 
Zitat:

Zitat von recht_250
Wenn du das kompiliert hast und dein Prgoramm kein Fehler gefunden hat, ist alles super.

Ich hab es auch kompiliet und er zeigt immer, das mindestens 5 Fehler da sind.

Welche und wo?
Sonst siehe Detlefs Antwort.

DeddyH 4. Mai 2008 16:25

Re: Pascalprogramm
 
Nach Einfügen einer Zeile geht das auch in Delphi 2007 (gerade ausprobiert):
Delphi-Quellcode:
program Kreuz_Produkt;

{$APPTYPE CONSOLE} //diese Zeile einfügen

const n=3;
...

mkinzler 4. Mai 2008 16:28

Re: Pascalprogramm
 
Aber ein Konsolenprogramm ist was anderes als ein DOS-Programm

Der.Kaktus 4. Mai 2008 16:36

Re: Pascalprogramm
 
Hallo, ich muss mal wieder feststellen..Hausaufgaben werden immer am letzten Tag gemacht(war ich nur auch so? :lol: ) aber bei solchen Themen habe ich wenigstens eine Woche frueher angefangen *gg* und bin, durch den Zeitdruck, immer zum Erfolg gekommen...scheint die Jugend nicht mehr so zu sehen im Zeitalter der Foren..aber egal...

Welchen Compiler nimmst Du ueberhaupt?..Freepascal..Delphi..etc?

recht_250 4. Mai 2008 19:18

Re: Pascalprogramm
 
ich habe freepascal.

ich habe es dort kompiliert und folgende Fehler zeigt er an:

gesamte Fehler: 3

1. Identifier not found "ks"
2. Duplicate identifire "a"
3. Duplicate identifire "b"

Fatal: compelation aborted

ps: ich hab die Hausaufgabe erst am Dienstag bekommen und ja schon früher gefagt gehabt. Aber jetzt ja auch egal.

Wisst ihr denn, was ich jetzt ändern muss?
Aber bitte nicht so viel Fachsprache, bin ja nur blutiger anfänger.

Danke

mkinzler 4. Mai 2008 19:24

Re: Pascalprogramm
 
Und in welcher Zeile?
BTW. Du gibst dir wirklich alle Mühe, Hilfswilligen zu vergraulen.
Zitat:

ps: ich hab die Hausaufgabe erst am Dienstag bekommen und ja schon früher gefagt gehabt. Aber jetzt ja auch egal.
Und gestern war ja erst Dienstag. Wie lange hast du schon Delphi-Unterricht?

DeddyH 4. Mai 2008 19:25

Re: Pascalprogramm
 
Zeigt FP denn die fehlerhaften Zeilen nicht an? Ansonsten benenn doch die Variablen einfach mal um.

Fussball-Robby 4. Mai 2008 19:28

Re: Pascalprogramm
 
Zitat:

Zitat von recht_250
1. Identifier not found "ks"
2. Duplicate identifire "a"
3. Duplicate identifire "b"

1.:Der Bezeichner "ks" wurde nicht gefunden -> ks wurde nirgendwo deklariert
2.&3.: Ein Bezeichner ist doppelt vorhanden -> du hast entweder 2 Variablen/Konstanten gleich benannt oder eine Variable/Konstante doppelt deklariert.

Mfg

DeddyH 4. Mai 2008 19:33

Re: Pascalprogramm
 
Wenn es immer noch der Code aus #7 ist: ich kann da kein ks entdecken :gruebel:

Nuclear-Ping 4. Mai 2008 22:14

Re: Pascalprogramm
 
Boahr seid ihr fies, jetzt hatter wegen euch ne 6 gekriegt! :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz