עבור לתוכן

עזרה בתרגיל פשוט ב C.

Featured Replies

פורסם

אני מתחיל בכל העניין, אבל עדיין לא מבין למה לא הולך לי בתרגיל הזה.

אני לומד את השפה דרך הספר "המדריך השלם לשפת C" הוצאה שנת 1998

התרגיל:

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

התרגיל בא אחרי חומר על לולאת while אז צריך לבצע את התרגיל בעזרתו.

הקוד:





#include "stdafx.h"
#include <stdio.h>


void main()
{
int i=0, top=0, input=1 ;


while(i<=4 && input!=0)
{
printf("enter a number: ");
scanf("%d", &input);


if(input>top)
top=input;


i=i+1;


}


printf("the biggest number is: %d", &top);
}


אני משתמש ב visual c++ 2008 בגלל זה יש את הספריה הראשונה.

מה שקורה לי בעצם שהלולאה רצה 5 פעמים (או פחות אם הוזן הספרה 0 ) אבל אני לא מקבל בסוף הלולאה את הספרה האחרונה, מתקבל "ג'אנק".

מה לא עשיתי טוב ?

פורסם

ב-printf לא צריך &, רק ב-scanf.

חוץ מה, כמה המלצות:

1. ה-stdafx נובע מזה שיצרת פרוייקט Win32 Console Application. במקום זה, צור Empty Project ואז לא תצטרך אותו.

2. אל תשתמש ב-void main. רשום במקומו int main, ובסוף (לפני הסוגר המסולסל) רשום return 0. הסיבה לכך היא ש-void main הוא לא תקני, וזה עצוב שיש ספרים מ-1998 שעדיין מלמדים ככה (התקן המדובר הוא מ-1989).

3. במקום i=i+1 אתה יכול פשוט לכתוב i++ או ++i

4. זה סתם עניין של טעם, אבל לדעתי יותר יפה לעשות כאן i<5 במקום i<=4. זה נוח כי ככה זה ברור שהלולאה רצה 5 פעמים (אם לדוגמה היית רוצה להחליף את המספר 5 במשתנה כלשהו, אז בצורה שבה כתבת צריך להחסיר ממנו 1). כמובן מבחינה מעשית שתי הצורות הן אותו דבר.

5. גם אם ב-if שלך יש פקודה אחת בלבד, עדיין מומלץ להשתמש בסוגריים מסולסלים. תאר לך שבעתיד תסתכל על הקוד הזה ותרצה להוסיף עוד פקודות שירוצו תחת ה-if, אבל לא תשים לב שאין סוגריים מסולסלים. מה שיקרה הוא שרק הפקודה הראשונה באמת תהיה ב-if, וכל השאר ירוצו תמיד. אם יש סוגריים מסולסלים אז טעות כזו לא יכולה לקרות.

פורסם
  • מחבר

שניצל תודה על ההערות!

בscanf לא רשמתי & , למה אתה מתכוון?

פורסם

ודאי שרשמת שם &, לפני input.

ב-printf לא צריך להיות ה-& ששמת לפני top.

פורסם
  • מחבר

אוקיי נכון, אני התכוונתי ל printf הראשון.

סידרתי את הבעיה, עכשיו עובד מעולה. תודה על ההערות! :xyxthumbs:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים