עזרה בקשה

nightmare89

New member
עזרה בקשה

שלום, יש לי בעיה קטנה. בניתי תוכנית וברגע שאני מפעיל אותה היא פועלת אבל רושמת לי warning וזה גורם לפעילות בלתי חלקה של התוכנית בבקשה תמצאו מה הבעיה ותתקנו אם אפשר תודה מראש.
#include <stdio.h> int check1(int a[], int x); void main() // קלט: מערך בן 20 תאים // פלט: מספר פונקציות { int array[20],c1,num; printf("Enter number to check\n"); scanf("%d",&num); c1=check1(array,num); if (c1 == 1) printf("The number is in the array\n"); else printf("The number is not in the array\n"); printf("\n\n"); } int check1(int a[], int x) // טענת כניסה: 20 תאים // טענת יציאה: בדיקת מספר { int i; for (i=0;i<20;i++) { if (x == a) return 1; else return 0; }//for }//check1

והבעיה היא: C:\Microsoft Visual Studio\MyProjects\fgfth\ghg.cpp(151) : warning C4715: 'check1' : not all control paths return a value
 

koby222

New member
לא בטוח אבל

אולי הבעיה היא שב...
if (c1 == 1)​
אין נקודה פסיק בסוף?
 

annefan

New member
זו לא הבעיה שלך

הבעיה שלך היא שהמערך לא מאותחל, ואתה לא יכול לדעת מה יש בכל אחד מהתאים.
 

yoash17

New member
לא על הבעיות האלו צעק הקומפילר

הקומפילר מודיע שהפונקציה check1 לא תמיד מחזירה ערך. לדוגמא אם הוא לא נכנס ללולאה אז הוא לא מחזיר ערך ובנוסף האלגוריתם שלך לא נכון. אתה צריך להחזיר אפס אם הוא הגיעה אחרי הלולאה: for(int i=0;i<20;i++) { if(Arr == num) { return 1; } } return 0;
 

selalerer

New member
ההזהרה מהקומפיילר מיותרת לחלוטין

בערך כמו הפונקציה ckeck1 במתקונתה הנוכחית. היא תמיד תחזיר בריצה הראשונה של הלולאה או 0 או 1 ולא תעבור על כל המערך.
 
למעלה