Kleines Multiplikationsprogramm

Tobi-VWL

Grünschnabel
Hallo,

ich habe folgendes (kleines) Problem.

Die Aufgabe lautet: Lesen sie den Inhalt zweier Dateien aus und multiplizieren sie den ersten Wert der Datei mit dem ersten Wert der anderen Datei + den zweiten Wert der ersten Datei * den zweiten Wert der Zweiten Datei
( x1 * y1 + x2 * y2 + x3 *y3...... bis + x33 * y33)

Die beiden Daten findet ihr unter:
http://www.wiwi.uni-bielefeld.de/~spitta/download/xWerte.dat
http://www.wiwi.uni-bielefeld.de/~spitta/download/yWerte.dat


Das Program zu der Aufgabe, welches ich geschrieben habe so nun wie folgt aus:


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Program Aufgabe_6C;

uses wincrt;


type xwerte = file of integer;

type ywerte = file of integer;


var dateix, dateiy: xwerte;

var einwertx, einwerty : integer;

var summe : longint;

Procedure BausteinB1;

BEGIN


Assign (dateix, 'C:\XWerte.dat');
Assign(dateiy, 'C:\YWerte.dat');

Reset(Dateiy);
Reset(Dateix);


summe:= 0;

while not eof (Dateix) do begin
while not eof (Dateiy) do begin


Read(Dateix, Einwertx);
Read(Dateiy, Einwerty);

summe:= summe + einwertx + einwerty;

writeln(summe);



readkey;



END;


END;
END;


Begin


BausteinB1;

end.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Wenn ich nun anstelle " summe:= summe + einwertx + einwerty; "

"summe:= summe + einwertx * einwerty; " schreibe, so erhalte ich einen wust von

falschen Zahlen. Ich vermute das Problem liegt an meinen Datentypen.

Habe jedoch schon zahlreiche Varianten mit "integer" und "longint" ausprobiert,

wobei jedes mal andere Zahlen herauskamen, aber nie das Ergebnis.

Das Ergebnis muss lauten: 32.481.750


ICH HOFFE JEMAND KANN MIR BEI MEINEM PROBLEM HELFEN!


Ciao,


Tobi-VWL


:rolleyes:
 
While schleife zusammengefast.... geht aber immer noch nicht:

##############################################
Program Aufgabe_6C;

uses wincrt;


type xwerte = file of integer;

type ywerte = file of integer;


var dateix, dateiy: xwerte;

var einwertx, einwerty : integer;

var summe : longint;




(*...................................................*)


Procedure BausteinB1;

BEGIN


Assign (dateix, 'C:\XWerte.dat');
Assign(dateiy, 'C:\YWerte.dat');

Reset(Dateiy);
Reset(Dateix);


summe:= 0;

while (not eof (Dateix)) and (not eof (Dateiy)) do begin

Read(Dateix, Einwertx);
Read(Dateiy, Einwerty);

summe:= summe + einwertx * einwerty;

writeln(summe);



readkey;






END;
END;


Begin


BausteinB1;

end.
 
Hallo,

vielen Dank für deine Antwort.

Habe das Problem aber nun gelöst.
Man muss, warum auch immer,

der Variable einwertx und einwerty, jeweils eine eigene Variable zuordnnen,
also z.B.:

z1 := einwertx ;
z2 := einwerty;

Anstelle von " summe:= summe + einwertx * einwerty; " ,muss man schreiben:
"summe := summe + z1 + z2;

Dann hat es auch geklappt :)


CIao,

Tobi-VWL
 
Zurück