PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] scanf wird übersprungen???



nul
22-05-2003, 15:27
Also, ich habe folgendes geschrieben:



#include <stdio.h>
#include <stdlib.h>


int jahr; /* Jahre */
int eink = 550; /* Volkseinkommen */
int s; /* Steuersatz */
int k; /* Konsumquote */
int S; /* Ersparnis */
int i; /* Zinssatz */
int StV= -500; /* Staatsverschuldung */

/* Variablen für die Berechnung */

int einkommen[11];
int steuern[11];
int verfEink[11];
int konsum[11];
int sparen[11];
int invest;
int stausg;
int stv[11];

/* Funktionsprototy für die Eingabe der Daten bzw. für die Zufallsgenerierung */

void eingaben(void);
/*
void steuer(void);

void konsumF(void);

void zins(void);
*/
int main(void)
{

eingaben();
/*
steuer();
zins();
konsumF();
*/

printf("Jahr\tEinkommen\tSteuern\t verf.Eink.\tKonsum\tSparen\tInvest.\tSt.Ausg.\ts\t StV\n");

for (jahr = 0; jahr < 11; jahr++)
{

/* Formel für das Einkommen */
if (jahr == 0)
{
einkommen[jahr] = eink;
}
else
{
einkommen[jahr] = konsum[jahr-1] + invest + stausg;
}

/* Formel für die Steuern */
steuern[jahr] = s * eink;


/* Formel für das verfügbare Einkommen */
verfEink[jahr] = einkommen[jahr] - steuern[jahr];

/* Formel für den Konsum */
konsum[jahr] = k * verfEink[jahr];

/* Formel für das Sparen */
sparen[jahr] = verfEink[jahr] - konsum[jahr];

/* Formel für die Staatsverschuldung */
if (jahr == 0)
{
stv[jahr] = StV;
}
else
{
stv[jahr] = stv[jahr-1] + steuern[jahr-1]-stausg+ stv[jahr-1] * i;
}





printf(" %d\t %d\t\t %d\t %d\t\t %d\t %d\t %d\t %d\t\t%d\t%d\n",
jahr,
einkommen[jahr],
steuern[jahr],
verfEink[jahr],
konsum[jahr],
sparen[jahr],
invest,
stausg,
s,
stv[jahr]);
}

return 0;
}


void eingaben(void)
{

/* Eingabe für die Investitionen */
printf("Geben Sie den Wert für die Investitionen ein: ");
scanf("%d", &invest);

/* Eingabe für die Staatsausgaben */
printf("Geben Sie den Wert für die Staatsausgaben ein: ");
scanf("%d", &stausg);


}

void steuer(void)
{
/* Eingabe für den Steuersatz */
printf("Geben Sie den Wert für den Steuersatz ein: ");
scanf("%d", &s);
}

void zins(void)
{
/* Eingabe für den Zinssatz */
printf("Geben Sie den Wert für den Zinssatz ein: ");
scanf("%d", &i);
}

void konsumF(void)
{
/* Eingabe für die Konsumquote */
printf("Geben Sie den Wert für die Konsumquote ein: ");
scanf("%d", &k);
}


mache folgendes:

gcc -Wall -ggdb zufall.c -o zufall
./zufall

dann kann ich zwei Werte eingeben (Investitionen und Staatsausgaben)
und dann passierts. Es steht noch "Geben Sie den Wert für den Steuersatz ein: "
dann bricht die Eingabe ab und es erscheint die erwünschte Tabelle, aber nur halbs ausgefüllt.
Man müsste noch die letzten drei Werte eingeben können, hab aber keine Ahnung
warum das bei mir immer abbricht
:confused:

Ich hoffe ihr könnt mir helfen
mfg nul

P,S, Ich weiß das Programm ist ein wenig kompliziert geschrieben, sicherlich ginge es einfacher, aber dafür dass ich ein halbes jahr mehr nichts getan habe find ich es nicht einmal so schlecht.

EDIT by anda_skoa: code tags eingefügt

mrasp
22-05-2003, 15:47
Hallo nul.

Das Programm würde bestimmt gerne die drei Eingaben entgegennehmen. Allerdings müsstest du dazu die Kommentarzeichen entfernen.

eingaben();
/*
steuer();
zins();
konsumF();
*/

:-)

Martin

nul
22-05-2003, 17:35
UPS, da hast du aber wirklich recht. So, das hab ich jetzt ausgebessert, noch einmal die Formeln kontrolliert und ausprobiert, aber es geht noch nicht.
Damit es einfacher wird, hab ich mir gedacht schieb ich die Eingabeaufforderungen jetzt in die main-Funktion, aber das funktioniert auch nicht.
Ich kann die Konsumquote eingeben, dann bricht die Eingabeaufforderung ab und spuckt die Tabelle aus; hier noch mal der neue Code:

#include <stdio.h>
#include <stdlib.h>

/* Variablen für die Berechnung */

int einkommen[11];
int steuern[11];
int verfEink[11];
int konsum[11];
int sparen[11];
int invest;
int stausg;
int stv[11];
int s; /* Steuersatz */
int k; /* Konsumquote */
int StV= -500; /* Staatsverschuldung */
int jahr; /* Jahre */
int eink = 550; /* Volkseinkommen */
int i; /* Zinssatz */

int main(void)
{

/* Eingabe für die Konsumquote */
printf("Geben Sie den Wert für die Konsumquote ein: ");
scanf("%d", &k);

/* Eingabe für den Steuersatz */
printf("Geben Sie den Wert für den Steuersatz ein: ");
scanf("%d", &s);

/* Eingabe für den Zinssatz */
printf("Geben Sie den Wert für den Zinssatz ein: ");
scanf("%d", &i);

/* Eingabe für die Investitionen */
printf("Geben Sie den Wert für die Investitionen ein: ");
scanf("%d", &invest);

/* Eingabe für die Staatsausgaben */
printf("Geben Sie den Wert für die Staatsausgaben ein: ");
scanf("%d", &stausg);

printf("Jahr\tEinkommen\tSteuern\t verf.Eink.\tKonsum\tSparen\tInvest.\tSt.Ausg.\ts\t StV\n");

for (jahr = 0; jahr < 11; jahr++)
{
/* Formel für das Einkommen */
if (jahr == 0)
{
einkommen[0] = eink;
}
else
{
einkommen[jahr] = konsum[jahr-1] + invest + stausg;
}

/* Formel für die Steuern */
steuern[jahr] = s * einkommen[jahr];


/* Formel für das verfügbare Einkommen */
verfEink[jahr] = einkommen[jahr] - steuern[jahr];

/* Formel für den Konsum */
konsum[jahr] = k * verfEink[jahr];

/* Formel für das Sparen */
sparen[jahr] = verfEink[jahr] - konsum[jahr];

/* Formel für die Staatsverschuldung */
if (jahr == 0)
{
stv[0] = StV;
}
else
{
stv[jahr] = stv[jahr-1] + sparen[jahr-1]-stausg + stv[jahr-1] * i;
}





printf(" %d\t %d\t\t %d\t %d\t\t %d\t %d\t %d\t %d\t\t%d\t%d\n",
jahr,
einkommen[jahr],
steuern[jahr],
verfEink[jahr],
konsum[jahr],
sparen[jahr],
invest,
stausg,
s,
stv[jahr]);
}

return 0;
}

Vielleicht findest du ja auch hier noch den Fehler, ich bin völlig ratlos,
danke schon mal im VORAUS!!!!!

mfg nul

nul
22-05-2003, 17:38
UPS, da hast du aber wirklich recht. So, das hab ich jetzt ausgebessert, noch einmal die Formeln kontrolliert und ausprobiert, aber es geht noch nicht.
Damit es einfacher wird, hab ich mir gedacht schieb ich die Eingabeaufforderungen jetzt in die main-Funktion, aber das funktioniert auch nicht.
Ich kann die Konsumquote eingeben, dann bricht die Eingabeaufforderung ab und spuckt die Tabelle aus; hier noch mal der neue Code:



Vielleicht findest du ja auch hier noch den Fehler, ich bin völlig ratlos,
danke schon mal im VORAUS!!!!!

mfg nul
#include <stdio.h> #include <stdlib.h> /* Variablen für die Berechnung */ int einkommen[11]; int steuern[11]; int verfEink[11]; int konsum[11]; int sparen[11]; int invest; int stausg; int stv[11]; int s; /* Steuersatz */ int k; /* Konsumquote */ int StV= -500; /* Staatsverschuldung */ int jahr; /* Jahre */ int eink = 550; /* Volkseinkommen */ int i; /* Zinssatz */ int main(void) { /* Eingabe für die Konsumquote */ printf("Geben Sie den Wert für die Konsumquote ein: "); scanf("%d", &k); /* Eingabe für den Steuersatz */ printf("Geben Sie den Wert für den Steuersatz ein: "); scanf("%d", &s); /* Eingabe für den Zinssatz */ printf("Geben Sie den Wert für den Zinssatz ein: "); scanf("%d", &i); /* Eingabe für die Investitionen */ printf("Geben Sie den Wert für die Investitionen ein: "); scanf("%d", &invest); /* Eingabe für die Staatsausgaben */ printf("Geben Sie den Wert für die Staatsausgaben ein: "); scanf("%d", &stausg); printf("Jahr\tEinkommen\tSteuern\t verf.Eink.\tKonsum\tSparen\tInvest.\tSt.Ausg.\ts\t StV\n"); for (jahr = 0; jahr < 11; jahr++) { /* Formel für das Einkommen */ if (jahr == 0) { einkommen[0] = eink; } else { einkommen[jahr] = konsum[jahr-1] + invest + stausg; } /* Formel für die Steuern */ steuern[jahr] = s * einkommen[jahr]; /* Formel für das verfügbare Einkommen */ verfEink[jahr] = einkommen[jahr] - steuern[jahr]; /* Formel für den Konsum */ konsum[jahr] = k * verfEink[jahr]; /* Formel für das Sparen */ sparen[jahr] = verfEink[jahr] - konsum[jahr]; /* Formel für die Staatsverschuldung */ if (jahr == 0) { stv[0] = StV; } else { stv[jahr] = stv[jahr-1] + sparen[jahr-1]-stausg + stv[jahr-1] * i; } printf(" %d\t %d\t\t %d\t %d\t\t %d\t %d\t %d\t %d\t\t%d\t%d\n", jahr, einkommen[jahr], steuern[jahr], verfEink[jahr], konsum[jahr], sparen[jahr], invest, stausg, s, stv[jahr]); } return 0; }

mrasp
22-05-2003, 17:43
Hallo.

Bei mir lässt sich der Code compilieren und das Programm fragt auch alles ab.
Entschuldige die Frage, aber hast du das Programm wirklich neu compiliert?

Martin

nul
22-05-2003, 18:35
Ich weiß nicht, bei mir läuft es jetzt auch, hast sicherlich recht,
danke für die Hilfe.