Problem beim Ausführen des Programmes

Hallölle,

Ich hab ein Programm zur Bestimmung eines Versicherungsbeitrages geschrieben jetzt habe ich aber Probleme beim Ausführen. Das heißt er hat mir keinen Fehler angezeigt und hat es bis zur Ausgabe des Wortes „Jahr“ geschafft, dann zeigt er mir einen Fehler an und beendet die Anwendung…

Woran kann das liegen?

Mein Programm:

#include
int main() {
int m, versicherungsrate, versicherungsjahr, versicherungsbeitrag, j;
versicherungsrate=0.8;
versicherungsjahr=1;
versicherungsbeitrag=0;
printf(„Bitte geben Sie die Groesse der Wohnung an:“);
scanf("%d",&m);
printf(„Bitte geben sie die Anzahl der Versicherungsjahre ein:“);
scanf("%d", &j);

while(versicherungsjahr=j){
if (versicherungsjahr

Ein fehler habe ich schon gefunden. es sollte bei den printf-Befehl z.B. heißen printf("%d", versicherungsbeitrag).

Allerdings will er mir jetzt die werte nicht ausgeben ich weiß nicht wo mein Fehler liegt :frowning:

Hallo

Also wenn man deinen Quellcode so durchließt, hat man fast den Eindruck, dass du kaum bis gar keine Erfahrung mit C hast.

int m, versicherungsrate, versicherungsjahr, versicherungsbeitrag, j;
versicherungsrate=0.8;

Du kannst der Variable versicherungsrate nicht 0.8 zuweisen, weil du sie als integer (int) deklariert hast und ein int keine Kommazahlen speichern kann. Da musst du dann float oder double nehmen.

while(versicherungsjahr=j)

Dir muss klar sein, dass = der Zuweisungsoperator ist. Er weist der Variable versicherungsjahr den Wert der Variable j zu. Anschließend wird eine Wahrheitsprüfung durchgeführt, die dann bei einem j gleich 0 als false und bei einem j ungleich 0 als true ausfällt. Ich glaube, dass du in deinem fall eher den Vergleichsoperator == benötigst. Dierser vergleicht die Werte beider Variablen und gibt bei Gleichheit true sonst false zurück.

versicherungsrate*m*20/100==versicherungsbeitrag;

Dieser Ausdruck ist auch unsinnig. Ich vermute, dass du eher das gemeint hast:

versicherungsbeitrag = versicherungsrate \* m \* 20 / 100;

Ebenso dieser:

versicherungsbeitrag==versicherungsrate*m*10/100;

Besser:

versicherungsbeitrag = versicherungsrate \* m \* 10 / 100;

Und dieser:

versicherungsbeitrag==versicherungsrate*m;

Besser:

versicherungsbeitrag = versicherungsrate \* m;

Weiters solltest du dir die genaue Beschreibung der Funktion printf ansehen. http://www.cplusplus.com/reference/clibrary/cstdio/p…
Einen int gibt man so aus:

printf("%d", aninteger);

Die vielen printf könntest du dann auch in ein printf zusammenfassen:

printf("Jahr %d: %d €\n", versicherungsjahr, versicherungsbeitrag);

Ich weiß zwar nicht genau, wie deine Berechnung aussehen sollte, aber ich glaube du willst, dass die Schleife für jedes Jahr einmal durchläuft. Wenn du eine Schleife brauchst, bei der du zur Laufzeit weißt, wie lange sie laufen soll, dann benutze besser eine for Schleife:

for(int versicherungsjahr=1;versicherungsjahr
Wenn du bei der while Schleife bleiben willst, dann sollte das in etwa so aussehen:


    
    j = ...
    int versucherungsjahr = 1;
    while (versicherungsjahr 
    
    Der Operator ++ erhöht übrigens den Wert einer Variable um eins.
    
    Und wenn du das nächste Mal einen Quellcode postest, formatiere in bitte schön und setz ihn unter pre tags.
    
    So sollte das dann am Schluss aussehen:
    
    
    
        
        #include 
        
        int main()
        {
         int m, versicherungsjahr, j;
         double versicherungsrate, versicherungsbeitrag;
        
         versicherungsrate = 0.8;
         versicherungsjahr = 1;
         versicherungsbeitrag = 0.0;
         printf("Bitte geben Sie die Groesse der Wohnung an:");
         scanf("%d",&m);
         printf("Bitte geben sie die Anzahl der Versicherungsjahre ein:");
         scanf("%d", &j);
        
         while (versicherungsjahr 
        
        mfg dixxi

Danke ich hab die kleinen Fehler schon verbesser XD. Das war tortzdem nett die gesamte zusammen Fassung.

LG Kitti