PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit C//programm zur berechnung der summe des geburt



lowtzow
16.09.2007, 21:17
hallo

ich weiß es hat nichts mit avr & co zu tun.
nur bin ich shcon eine weile hier und weiß auch nicht wo ich mich schnell mal nach rat umhörn kann als hier ;-)

ich besuch mal wieder die schule, diesmal die abendschule, bissl zach aber es geht. wir nehemn grad in programmierne c durch, hab früher immer nur mit bascom programmiert. vielleicht hab ich deshabl ein paar probleme damit.

zum problem, ich sollte ein programm programmieren welches die summe des geburtsdatums liefert, und zwar aus den einzelen ziffern.

also zb geb 1.1.1111 =6
2.2.2222 = 12

nur bekomm ich immer eine fehlermeldung beim kompilieren & hier bitte ich um rat & hilfe;falls möglich

fehlermeldung
`main' must return `int'
in Function `int zerlege(int)':
expected `;' before ')' token
expected primary-expression before "return"
expected `)' before "return"

mfg
piri


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

int zerlege (int);
int tag, monat, jahr, ergebnis, summe; //deklaration der Variablen

void main ()
{

printf("Berechnung der Summe ihrer Geburtsdaten"); // Textausagbe für Prorgrammstart

printf("\nBitte geben sie den Tag ein:");
scanf ("%d, &tag"); //der tag wird eingelesen

printf("\nBitte geben sie das Monat ein:");
scanf ("%d, &monat"); //das monat wird eingelesen

printf("\nBitte geben die das Jahr ein:");
scanf ("%d, &jahr"); //das jahr wird eingelesen

ergebnis=0; //um unerwünschte zustände zu vermeiden
ergebnis += zerlege(tag);
ergebnis += zerlege(monat);
ergebnis += zerlege(jahr);

printf ("\nDie Summe ihrer Daten beträgt:%d,ergebnis"); //Ausgabe des Ergebnis


}

int zerlege (int zahl) //Alogarithmus fürs Hauptprogramm
{
summe=0;
for (zahl>0)
summe+=(Zahl%10);
summe+=(zahl/10);
return summe;
}

robocat
16.09.2007, 21:43
1. schreib "int main(void)" und am ende ein "return 0;"
2. schreib deine scanfs und printfs so: scanf("%d",&i); (also die variable ausserhalb der gänsefüsschen)
3. for(zahl>0) gibt es nicht. du brauchst ein "while"
4. was in der schleife geschehen soll, musst du mit {} klammern, vor allem wenn es mehrere befehle sind
5. schreib zahl klein (in der zeile nach deinem for, das ein while sein soll
6. summe+=(zahl/10); ist ein denkfehler. du willst hier "zahl" statt "summe" ändern.
7. vermeide globale variablen, du kannst alle in den funktionen main und zerlege anlegen.

gruesse

WDragon91
17.09.2007, 07:24
Hi lowtzow ich hab da ein Buch was dich intressieren könnte, ich habe es mir zum Einstieg in C gekauft, das Buch heißt C programmieren von Anfang an Autor: Helmut Erlenkötter. Ist echt zu empfhelen, damit kannst du alles nocheinmal in Ruhe nachholen.

Mfg Marcel

lowtzow
17.09.2007, 20:52
hy danke für die hilfe.

es ist so, ich hab 3scripten aber bei fehlern ist man halt aufgeschmissen wenn der compiler was sagt, wenn man noch nicht viele fehler beseitigt hat.

zumindestens kommen jetzt keine fhler; herzlichen dank!!!!
aber ich seh kein ergebnis, ich denk mal er beendet so schnell, dass man nur kein ergebnis sieht?!

habs mit getchar(); versucht, das sollt auf den nächsten tastendruck warten; naja leider wenig erfolg. auch return 0 zeigt nix an.

beim nebenprogramm bin ich mir auch ein bisschen unsclüssig!

ich schreib "int zerlege (int summe)" also summe würde ich zurückgeben, wenn ich das richtig verstanden habe, und dann muss ich natürlich am programmende erst return summe sagen, damit es überhaupt weiß das eine variable zurückgegeben werden kann oder ist dies nichte rforderlich?!

gibt es irgendwo eine tabelle wo alle funktionen die man hauptsächlich verwendet kurz und übersichtlich zusammengefasst sind weil in jedem buch ist alles kreuz & quer verteilt und ich blätter immer herum und such mich deppat!



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

int zerlege (int);
int tag, monat, jahr, ergebnis; //deklaration der variablen

int main (void)
{

printf("Berechnung der Summe ihrer Geburtsdaten"); // Textausagbe für Prorgrammstart

printf("\nBitte geben sie den Tag ein:");
scanf ("%d", &tag); //der tag wird eingelesen

printf("\nBitte geben sie das Monat ein:");
scanf ("%d",&monat); //das monat wird eingelesen

printf("\nBitte geben die das Jahr ein:");
scanf ("%d,",&jahr); //das jahr wird eingelesen

ergebnis=0; //um unerwünschte zustände zu vermeiden
ergebnis += zerlege(tag);
ergebnis += zerlege(monat);
ergebnis += zerlege(jahr);

printf ("\nDie Summe ihrer Daten beträgt%d",&ergebnis);//Ausgabe des Ergebnis

getchar ();

}

int zerlege (int summe) //Alogarithmus fürs Hauptprogramm
{
int zahl;
summe = 0;
while (zahl>0)
{
summe+=(zahl%10);
summe+=(zahl/10);
}
return summe;
}




mfg
piri

robocat
17.09.2007, 21:42
win xp schliesst die konsole sofort wieder. um das zu umgehen man kann "getch();" vor "return 0" einfügen. dann muss man allerdings noch die conio.h einbinden.

das "return 0;" am ende von main sollte man nicht weglassen, auch wenn der code evtl. trotzdem compiliert. schliesslich ist main als funktion mit einem int als rückgabewert definiert.

in "int zerlege (int summe)" wird ein wert an die funktion übergeben. und was geschieht mit ihm? du setzt ihn auf 0. es wäre sinnvoller mit

int zerlege (int zahl)
{
int summe=0;
while(zahl>0)
...
return summe;
}

dann stimmt zwar immer noch nicht alles, aber den rest schaffst du allein.

über c gibt es einiges im netz, zb.
http://www.galileocomputing.de/openbook/c_von_a_bis_z/
hier werden auch paar links genannt:
http://www.wer-weiss-was.de/theme158/article1519732.html

eine liste mit befehlen dürfte es sicher irgendwo geben, ich weiss aber nicht wo. ein blick in die headerdatei (bspw. math.h) sagt einem aber wenigstens, was es für befehle gibt. was die dann tun, kann man sich googlen.

gruesse

edit, noch kurz zur erklärung:

int bla(int blub)
{
int ret=123;
return ret;
}
funktion bla wird aufgerufen mit zB int i=bla(7); die 7 steht in blub (innerhalb der funktion, ausserhalb gibt es kein blub) und zurückgegeben wird ret, also hier immer 123. nomal würde man aus blub was schönes berechnen.


int bla(void)
{
int ret=123;
return ret;
}
genauso wie zuvor, aber ohne blub. aufruf mit int i=bla();


void bla(void)
{
...
return;
}
keine parameter und kein rückgabewert.

maexlich
27.09.2007, 10:02
ich kann auch nur das buch von Helmut Erlenkötter empfehlen.
Es hat sehr viele Beispiele und viele Aufgaben.

Aller anfang ist schwer

MFG
maexlich

mefiX
28.09.2007, 16:21
Ich habe auch das Buch von Herrn Erlenkötter benutzt, also auch Empfehlung meinerseits!
LG, mefiX