my $summe;

sub setsumme {
    my ($ergebnis) = @_;
    $summe = $ergebnis;
}

sub setaddition {
    my ($summand) = @_;
    $summe = $summe + $summand;
}

sub getsumme {
    return $summe;
}

## Die Summanden werden eingelesen
sub addiereneinlesen {
    my ( $nummer, $summand, $summandexp ) = @_;

    my $stellensummand;

    if ( $summandexp >= 0 ) {
	$stellensummand = vorkommastellen( $summand * 10**$summandexp );
    }
    else {
	$stellensummand = vorkommastellen($summand);
	if ( $stellensummand <= abs($summandexp) ) {
	    $stellensummand = abs($summandexp) + 1;
	}
    }
    setspaltenanzahl( $stellensummand + 1 );
    schreibezahlintabelle( $summand, $summandexp, $nummer, $stellensummand );
    setaddition( $summand * 10**$summandexp );
    setspaltenanzahl( vorkommastellen( getsumme() ) );
}

## Die Rechnungen für die Addtiom finden statt

sub addierenauslesen {
    my ($anzahlzeilen) = @_;
    my ( $j, $i, $speicherzahl );

    for ( $i = 1 ; $i <= $anzahlzeilen ; $i++ ) {
	for ( $j = 1 ; $j <= getspaltenanzahl() ; $j++ ) {
	    $speicherzahl = zusammensetzen( $i, 1, $j );
	}
	for ( $j = 1 ; $j <= getspaltenanzahl() ; $j++ ) {
	    schreibezelle( "", $i, $j );
	}
	schreibezahlintabelle( $speicherzahl, 0, $i, getspaltenanzahl() );

	if ( $i > 1 ) {
	    schreibezelle( "\$+\$", $i, 1 );
	}
    }
    my $uebertrag = 0;
    my $teilsumme = 0;
    for ( $i = getspaltenanzahl() ; $i > 0 ; $i-- ) {
	for ( $j = 1 ; $j <= $anzahlzeilen ; $j++ ) {
	    if (   ( $rechne[$j][$i] eq "" )
		   || ( $rechne[$j][$i] eq "\$+\$" ) )
	    {
		$teilsumme = $teilsumme;

	    }
	    else {
		$teilsumme += $rechne[$j][$i];
	    }
	    $uebertrag = ( $teilsumme - ( $teilsumme % 10 ) ) / 10;
	    if ( $uebertrag == 0 ) {
		$rechne[ $anzahlzeilen + 1 ][ $i - 1 ] = "";
	    }
	    else {
		$rechne[ $anzahlzeilen + 1 ][ $i - 1 ] = "\\tiny{" . $uebertrag . "}";
	    }
	    $rechne[ $anzahlzeilen + 2 ][$i] = $teilsumme % 10;
	}
	$teilsumme = $uebertrag;
    }
    for ( $j = 1 ; $j <= getspaltenanzahl() ; $j++ ) {
	schreibezelle( "", $anzahlzeilen + 2, $j );
    }
    schreibezahlintabelle( getsumme(), 0, $anzahlzeilen + 2, getspaltenanzahl() );

    for ( $i = 1 ; $i <= $anzahlzeilen + 1 ; $i++ ) {
	lesetabellenzeile( $i, getspaltenanzahl() );
    }

    ausgabe("\\hline \\hline");
    lesetabellenzeile( $anzahlzeilen + 2, getspaltenanzahl() );
}
