![]() |
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. |
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 |
Re: Pascalprogramm
Was für'n Kauderwelsch der Code ist ... wer soll denn da durchblicken? :shock:
|
Re: Pascalprogramm
Hallo,
procedure Eingabe(var al,be:vektor); Eingabe (a); 2 Parameter werdne erwartet, einer übergeben ??? Heiko |
Re: Pascalprogramm
Das ist bei den anderen Prozeduren genauso. Ich denke, man müsste sich mal über Gültigkeitsbereiche von Variablen schlau machen.
|
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:
Grüße
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. Klaus |
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. |
Re: Pascalprogramm
Wie wäre es, wenn du deinen Quellcode richtig formatieren/den Delphi-Tag verwenden würdest?
|
Re: Pascalprogramm
sorry, ich versteh nicht was du meinst.
|
Re: Pascalprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Markiere deinen Code und Klicke auf Delphi-Code
|
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. |
Re: Pascalprogramm
ich habs geändert - ich hoffe ihr könnt jetzt besser durchsehen.
Danke!!! |
Re: Pascalprogramm
Ich würde den Rückgabewert auch als solchen deklarieren und nicht als Var-Parameter
|
Re: Pascalprogramm
kannst du mir vielleicht ein Beispiel schreiben!?!?
Da müssen irgendwo noch andere Fehler drin sein. |
Re: Pascalprogramm
Delphi-Quellcode:
Aufruf:
function Kreuz(a,b: Vektor): Vektor;
...
Delphi-Quellcode:
c := Kreuz( a, b);
|
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: |
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.
|
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. |
Re: Pascalprogramm
Womit hast Du es denn kompilieren wollen? Delphi, Lazarus, TP?
|
Re: Pascalprogramm
Zitat:
Sonst siehe Detlefs Antwort. |
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; ... |
Re: Pascalprogramm
Aber ein Konsolenprogramm ist was anderes als ein DOS-Programm
|
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? |
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 |
Re: Pascalprogramm
Und in welcher Zeile?
BTW. Du gibst dir wirklich alle Mühe, Hilfswilligen zu vergraulen. Zitat:
|
Re: Pascalprogramm
Zeigt FP denn die fehlerhaften Zeilen nicht an? Ansonsten benenn doch die Variablen einfach mal um.
|
Re: Pascalprogramm
Zitat:
2.&3.: Ein Bezeichner ist doppelt vorhanden -> du hast entweder 2 Variablen/Konstanten gleich benannt oder eine Variable/Konstante doppelt deklariert. Mfg |
Re: Pascalprogramm
Wenn es immer noch der Code aus #7 ist: ich kann da kein ks entdecken :gruebel:
|
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