void cb_degressiv(Fl_Widget *w){
//variablen auf null setzen
anschaff_kstn=0;
nutzungsdauer=0;
abschr_betr=0;
betrag=0;
for(int i=0; i<100;i++){
liste[i]="";
}
/////////////////////////////
double abschr_betr_zurueck_linear;
int for_schleifen_var=0; //für die restlaufzeit
anschaff_kstn= atof(imp_anschaffungpreis->value()); //const char nach double
nutzungsdauer= atof(imp_nutzungsdauer->value());
prozentsatz=atof(imp_prozentsatz->value());
//out_uebergangsjahre
uebergangsjahre= nutzungsdauer + 1 - (100 / prozentsatz);
sprintf(buffer,"%i",(int)uebergangsjahre);
out_uebergangsjahre->value(buffer);
abschr_betr_zurueck_linear=anschaff_kstn/nutzungsdauer-(uebergangsjahre);
for(for_schleifen_var=1;for_schleifen_var<=nutzungsdauer; for_schleifen_var++){
if(for_schleifen_var==((int)uebergangsjahre)){
break;
}
betrag=anschaff_kstn; //sicherung für das erste jahr
abschr_betr=(anschaff_kstn*prozentsatz)/100;
anschaff_kstn=anschaff_kstn-abschr_betr;
//eine zeile nach basteln
sprintf(buffer,"%i",for_schleifen_var); //int nach char
liste[for_schleifen_var]=buffer;
liste[for_schleifen_var]+=".Jahr";
liste[for_schleifen_var]+=" Anfangsbetrag: ";
sprintf(buffer,"%i",(int)betrag);
liste[for_schleifen_var]+=buffer;
liste[for_schleifen_var]+=" - abschr_betr ";
sprintf(buffer,"%i",(int)abschr_betr);
liste[for_schleifen_var]+=buffer;
liste[for_schleifen_var]+=" = Schlußbetrag: ";
sprintf(buffer,"%i",(int)anschaff_kstn);
liste[for_schleifen_var]+=buffer;
out_berechnung->add(liste[for_schleifen_var].c_str()); //ausgabe
}
out_berechnung->add("Übergang zu linear!!"); //ausgabe
string hilfsvar;
double hilfe;
abschr_betr=anschaff_kstn/((1+nutzungsdauer)-for_schleifen_var); //+1 wegen rest jahre
hilfe=for_schleifen_var; //für letztes jahr
for(int i=(int)hilfe;i<=nutzungsdauer; i++){
betrag=anschaff_kstn; //sicherung für das erste jahr
anschaff_kstn=anschaff_kstn-abschr_betr;
if(i==nutzungsdauer){
anschaff_kstn=1; //schlusswert muss ja 1 euro sein
abschr_betr=betrag-1; //minimierung abschr_betr für das letzte jahr um eins
}
//eine zeile nach basteln
sprintf(buffer,"%i",i); //int nach char
liste[i]=buffer;
liste[i]+=".Jahr";
liste[i]+=" Anfangsbetrag: ";
sprintf(buffer,"%i",(int)betrag);
liste[i]+=buffer;
liste[i]+=" - abschr_betr ";
sprintf(buffer,"%i",(int)abschr_betr);
liste[i]+=buffer;
liste[i]+=" = Schlußbetrag: ";
sprintf(buffer,"%i",(int)anschaff_kstn);
liste[i]+=buffer;
out_berechnung->add(liste[i].c_str()); //ausgabe
}
}