הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה עם מערכים בC (https://hosts.co.il/forums/showthread.php?t=74751)

Xinxy 22-05-09 13:51

בעיה עם מערכים בC
 
שלום לכולם
עשיתי את התוכנית הזאת:
PHP קוד:

#include <stdio.h>
#include <conio.h>

int main()
{
    
int numberArraySize=3, Array[ArraySize];
    
printf("Write Number ");
    
scanf("%d", &number);
    
    
//הכנסת הספרות למערך
    
for(int i ArraySize-1>= 0i--)
    {
          Array[
i] = number%10;
          
number /= 10;
    }
    
    
//הצגת המערך
    
for(int i=0ArraySizei++)
    {
             
printf("%d, ", Array[i]);
    }
    
    
getch();


בDEV C++ התוכנית עובדת נהדר
אבל כשאני מנסה להפעיל אותה דרך הVS זה אומר לי
PHP קוד:

Error    1    error C2057expected constant expression    ...................arry.cpp    6    arry
Error    2    error C2466
cannot allocate an array of constant size 0    ....................arry.cpp    6    arry
Error    3    error C2133
'Array' unknown size    ..........arry.cpp    6    arry 

מישהו יודע אולי מה צריך לעשות בשביל לסדר את זה?

ani 22-05-09 14:02

אוקי לא מצאתי כאן בעיות,
אבל לפי מה שאני יודע, חלק מהקומפיילרים לא מקבלים כמה מהדברים שעשיתה כאן.
לדוגמא, ה main היא פונ' שלא מחזירה ערך ולכן היא צריכה להיות void ולא int .
או למשל הגדרת ה I בתוך הfor.
לא כל כך הבנתי את השגיאה שנתתה פה, אבל ייתכן שזה בגלל שהגדרתה את גודל המערך עם משתנה.

מקווה שעזרתי,
אם לא, תרשום, אני אנסה לחשוב על עוד כמה דברים.
שבת שלום :)

Xinxy 22-05-09 14:37

ציטוט:

נכתב במקור על ידי ani (פרסם 716422)
אוקי לא מצאתי כאן בעיות,
אבל לפי מה שאני יודע, חלק מהקומפיילרים לא מקבלים כמה מהדברים שעשיתה כאן.
לדוגמא, ה main היא פונ' שלא מחזירה ערך ולכן היא צריכה להיות void ולא int .
או למשל הגדרת ה I בתוך הfor.
לא כל כך הבנתי את השגיאה שנתתה פה, אבל ייתכן שזה בגלל שהגדרתה את גודל המערך עם משתנה.

מקווה שעזרתי,
אם לא, תרשום, אני אנסה לחשוב על עוד כמה דברים.
שבת שלום :)

שכחתי לציין שעשיתי את הדברים שאמרת
אני בטוח שהבעיה היא של המשתנה בתוך משתנה, אבל אני חייב לעשות את הדבר הזה :\

ani 22-05-09 20:04

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

Slash 22-05-09 20:53

תנסה לשנות את זה ל:
קוד:

int number, ArraySize=3;
int Array[ArraySize];

וצריך לבדוק יכול להיות ש Array זה מילה שמורה .

תשנה גם את התוכנית ל void main כדי שלא יחזיר ערך .
והרבה זמן לא תיכנתתי בC אבל אני לא בטוח שצריך להכריז פעמיים int i

ani 22-05-09 21:08

אם הבנתי נכון,
וזאת באמת הבעיה, אז אתה פשוט יכול להגדיר את גודל המערך בעזרת define
אם אתה לא מכיר את הפקודה זה עובד ככה:
אתה רושם מעל הvoid main
define ArraySize 3
ואז בכל פעם שאתה תרשום ArraySize
מבחינה תכנתית תופיע שם הספרה "3".
מה החסרון של זה? אתה לא יכול לעשות שינויים ב ArraySize.
אבל לפי מה שראיתי אתה גם ככה לא עושה בו שינויים.

sholaman 22-05-09 23:33

תנסה להגדיר את גודל המערך כקבוע ולא כמשתנה.


כל הזמנים הם GMT +2. הזמן כעת הוא 17:01.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ