Error 26: type mismatch?

aloha alle!

ich habe grad erst mit pascal angefangen und habe mal ein programm geschrieben.
man kann den namen eines elemments (z.b. Fe) und dessen wertigkeit eingeben. das gleiche mit einem zweiten element.
nun soll das programm die richitge formel ausrechnen
(also: wertigkeit1*wertigkeit2=kgv und kvg/wertigkeit1 und kgv/wertigkeit2)


program formelberechner;

uses crt;

var element1, element2:string;
wertig1, wertig2, div1, div2, kgv:integer;

begin

writeln('Gib die chem. Bezeichnung des 1. Elements ein: ');
readln(element1);
writeln('Gib die Wertigkeit des Elements ein: ');
readln(wertig1);
writeln;
writeln('Gib die chem. Bezeichnung des 2. Elements ein: ');
readln(element2);
writeln('Gib die Wertigkeit des Elements ein: ');
readln(wertig2);

erg:= wertig1*wertig2;
div1 := kgv/wertig1; { CURSOR STEHT HIER }
div2 := kgv/wertig2;

writeln;
writeln('Die Formel lautet: ', element1, div1, element2, div2);


aber nun das problem. immer, wenn ich das programm ausführen will, wird angezeigt: „error 26: type mismatch“ der cursor steht beim kommentar.

also, wie gesagt, ich habe noch nicht viel ahnung von pascal und kann keinen fehler finden. weiss jemand wo der fehler liegen könnte?

danke im vorraus

cYA tom

PS: ich verwende virtual pascal 2.1 falls das eine rolle spielt.

Hallo Tom,

wenn Du Integer-Zahlen dividierst, erhälst Du als Ergebnis eine reelle Zahl und keinen Integer-Wert.

Du mußt also div1 und div2 z.B. als real-Typ definieren.

Gruß Ebi

Hallo Tom,

wenn Du Integer-Zahlen dividierst, erhälst Du als Ergebnis
eine reelle Zahl und keinen Integer-Wert.

Du mußt also div1 und div2 z.B. als real-Typ definieren.

aaaahja!! ist ja klar!! dankedanke! es läuft! :smile: +sternchen

Gruß Ebi

cYA tom

Hallo,

program formelberechner;

uses crt;

var element1, element2:string;
wertig1, wertig2, div1, div2, kgv:integer;

begin

writeln('Gib die chem. Bezeichnung des 1. Elements ein: ');
readln(element1);
writeln('Gib die Wertigkeit des Elements ein: ');
readln(wertig1);
writeln;
writeln('Gib die chem. Bezeichnung des 2. Elements ein: ');
readln(element2);
writeln('Gib die Wertigkeit des Elements ein: ');
readln(wertig2);

erg:= wertig1*wertig2;
div1 := kgv/wertig1; { CURSOR STEHT HIER }
div2 := kgv/wertig2;

writeln;
writeln('Die Formel lautet: ', element1, div1, element2,
div2);

PS: ich verwende virtual pascal 2.1 falls das eine rolle
spielt.

es macht keinen Sinn, div1 und div2 als real zu deklarieren, weil du im Ergebnis doch wieder Integer brauchst.
Real brauchst du nur, wenn du für die Division den Operator „/“ verwendest. Um eine echte Integerdivision durchzuführen, was im vorliegenden Fall sinnvoll ist, solltest du den Operator „div“ benutzen:

div1 := kgv div wertig1; {CURSOR STEHT HIER}
div2 := kgv div wertig2;

Im übrigen ist da natürlich noch das Problem, dass deine Rechnung komplett Unsinn ist, denn am Ende hast du

div1 = wertig2;
div2 = wertig1;

das kommt, weil dein kgv nicht wirklich das kgv ist.

Gruß, Niels