פונקציות

davidw260

New member
פונקציות

אני הגדרתי פונקציה שצריכה לסכום את כל המספרים הזוגיים והאי זוגיים לפני המס' שהמשתמש מכניס.הגדרתי שתי פונקציות אחת לסכום של הזוגיים ואחת לאי זוגיים.בשניהם אני מריץ לולאה שמאתחלת משתנה שבודק כל פעם איפה הוא ביחס למס' שהמשתמש אמור להכניס ונתתי קידום ב-2 למשתנה שלי כדי שיסכום את המספרים. את המספר שהמשתנה אמור להכניס לא הגדרתי בשתי הפונקציות אלא רק בתוכנית עצמה הוא קולט את המס' ואז אמור לעשות עם זה מה שהוא אמור- זה פשוט לא עובד.
 

davidw260

New member
פונקציות

|#include<stdio.h>
int printeven(int sumeven)
{
int mispar=0,i,sumeven=0;
for(i=0;i<mispar;i+2)
{
sumeven=sumeven+i;
}
return sumeven;
}
int printodd(int sumodd)
{
int mispar=1,j,sumodd=0;
for(j=1;j<mispar;j+2)
{
sumodd=sumodd+j;
}
return sumodd;
}

void main()
{
int mispar;
printf("enter a number\n");
scanf("%d",&mispar);
printf("%d\n",printeven(mispar));
printf("%d\n",printodd(mispar));
}|
 

BravoMan

Active member
אני ממליץ בחום שתחזור על חומר הלימוד

בנושא העברת פרמטרים לפונקציה.

דבר ראשון, אתה יוצר בכל פונקציה משתנה מקומי עם שם זהה לשם הפרמטר, ובכך בעצם מסתיר את הפרמטר מה שהופך את השימוש בו לבלטי אפשרי.

בנוסף, בתנאי הלולאה אתה בכלל לא מנסה להשתמש בפרמטר שהעברת, אלא משתמש במשתנה מקומי שמאותחל ל-0, כלומר, הלולאה לעולם לא תתבצע.
 

davidw260

New member
פונקציות

לא עובד לצערי:
|#include<stdio.h>
int printeven(int mispar)
{
int sumeven=0,i;
for(i=0;i<mispar;i+2)
{
sumeven+=i;
}
return sumeven;
}
int printodd(int mispar)
{
int sumodd=0,j;
for(j=1;j<mispar;j+2)
{
sumodd+=j;
}
return sumodd;
}
void main()
{
int mis1;
printf("enter a number\n");
scanf("%d",&mis1);
printf("the sum of all even numbers before %d is %d\n",mis1,printeven(mis1));
printf("the sum of all odd numbers before %d is %d\n",mis1,printodd(mis1);
}|
 

BravoMan

Active member
עוד פרט אחד קטן:

אתה לא מקדם את המונים של הלולאות, ולכן התוכנה נתקעת בלולאה אין סופית.
 

Pitzuk

New member
בעיה בסיסית

|#include<stdio.h>

אתה לא יכול לקבל פרמטר חיצוני ואז לדרוס אותו (אין בזה הרבה הגיון

int printeven(int sumeven)
{
int mispar=0,i,sumeven=0;
for(i=0;i<mispar;i+2){

התנאי לעולם לא ייתקיים והלולאה לא תתבצע|

sumeven=sumeven+i;
}
return sumeven;
}

אתה לא יכול לקבל פרמטר חיצוני ואז לדרוס אותו - אין בזה הרבה הגיון
int printodd(int sumodd)
{
int mispar=1,j,sumodd=0;
for(j=1;j<mispar;j+2)
{
sumodd=sumodd+j;
}
return sumodd;
}

void main()
{
int mispar;
printf("enter a number\n");
scanf("%d",&mispar);
printf("%d\n",printeven(mispar));
printf("%d\n",printodd(mispar));
}|
 
למעלה