פורסם 2008 בדצמבר 2516 שנים שלום, הקוד הבא אמור לקבל מהמשתמש 3 תווים או מספרים ולתת את הגבוה, יש איתו בעיה בפלט ובעיה בקלט התוויםאולי בקשה גדולה מידי אבל מישו יכול להגיד לי מה הבעיה???#include<stdio.h>#define SIZE 3void main_1(int *n ,int ar[] ,int ar2[],int *d);void read_num(int ar[], int n);void read_ab (char ar2[], int n);void max_num(int ar[] ,int n ,int *d);void max_ab(char ar2[] ,int n ,int *d);int main(){ int d ,x = 0; int a[SIZE]; char b[SIZE]; printf("For Num Check Press 1\nFor letters press 2\n"); scanf("%d",&x); main_1(&x,a,b,&d);}void main_1(int *n ,int ar[] ,int ar2[] ,int *d){ switch (*n) { case 1 : read_num(ar ,SIZE ,&d); break; case 2 : read_ab(ar2 ,SIZE ,&d); break; default : printf("Error Input\n"); }}void read_num(int ar[] ,int n ,int *d){ int i; printf("enter 3 numbers\n"); for(i = 0; i < n; i++) { scanf("%d",&ar[i]); } max_num(ar ,SIZE ,&d);}void read_ab(char ar2[] ,int n ,int *d){ int i; printf("enter 3 letters\n"); for(i = 0; i < n; i++) { scanf("%c",&ar2[i]); } max_ab(ar2 ,SIZE ,&d);}void max_num(int ar[] ,int n ,int *d){ int i ,temp = ar[0]; for (i = 1; i < n; i++) { if(ar[i] > temp) { *d = ar[i]; temp = ar[i]; } else { *d=temp; } } printf("\nThe Maximum Number Is: %d \n",d);}void max_ab(char ar2[] ,int n ,int *d){ int i ,temp = ar2[0]; for (i = 1; i < n; i++) { if(ar2[i] > temp) { *d = ar2[i]; temp = ar2[i]; } else { *d=temp; } } printf("\nThe Maximum letter Is: %c \n",d);}
פורסם 2008 בדצמבר 2516 שנים void main_1(int *n ,int ar[] ,int ar2[] ,int *d)בשורה הזאת , d מוגדר כ pointer ל int, בתוך ה CASE אתה שולח את &d, מה שאומר שאתה בעצם שולח את הכתובת של d, בשורה void read_num(int ar[] ,int n ,int *d) אתה מגדיר את d שוב כ Pointer ל INT, כאשר בפועל אתה שולח pointer ל pointer ל Int.הבעייה הזאת מופיעה אצלך כמה פעמים.
פורסם 2008 בדצמבר 2516 שנים מחבר אוקי, תוקנה הבעיה בנתיים עובד על הספרות, יש לי בעיה אחרת בקליטת תווים, משום מה אחרי תו אחד הוא מסייםאת התכנית למרות שאמור לרוץ ולקלוט 3 תווים
פורסם 2008 בדצמבר 2516 שנים מחבר קלט מספרים עובד אחרי ששינית מהכתובת d לערך עצמו, עכשיו הבעיה שהייתה עוד קודם,בפונקציה read_ab אני אמור לקלוט 3 תווים אם ככה בחר המשתמש, אבל אחרי קליטת תו אחד הוא מראה אותוכמקס' ויוצא החוצה.
פורסם 2008 בדצמבר 2516 שנים כשאתה קולט CHAR, האנטר שאתה מקיש בסוף גם נקלט כתו. תנסה למצוא דרך להתעלם ממנו.
פורסם 2008 בדצמבר 2516 שנים מחבר טוב, אולי פתרון דבילי אבל הגדלתי את מערך הצ'ארים ל-6 והקלט שלי יהיה בשורה אחת :a b c לדוג', ככה הרווחים לא יחשבו..
פורסם 2008 בדצמבר 2516 שנים גם פתרון, אבל מה אם אתה תצתרך לקלוט 5 תווים? 10? 100?תנסה לשנות את הלולאה המקורית, כל שתתעלם מתו שנקלט במידה והוא תו "סתמי" ( רווח, אנטר, טאב וכו'.. ).או את זהhttp://clang.eitan.ac.il/index.php?doc=chp&id=4
פורסם 2008 בדצמבר 2516 שנים מחבר ז"א- לדוג' אם נקלט הערך האסקי של אנטר (10 או 32 אם אני זוכר נכון) אז לדלג על האיטרציה?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.