28-03-2008, 07:55
|
|
|
חבר מתאריך: 26.07.06
הודעות: 20
|
|
שאלה, cpp.
נתון מערך
int arr [n]
a. החלף את האיברים ה-"שכנים"
קוד:
/*
Name: P47.3.1.3
Copyright:
Author: **** ******
Date: 28/03/08 07:38
Description:
*/
#include <iostream.h>
#include <conio.h>
void printarr(int x[])
{
int N = sizeof(x)/sizeof(int);
for(int k=0; k <N; k++)
cout<<"["<<x[k]<<"] ";
cout<<endl;
}
int main()
{
int arr[] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9};
int N = sizeof(arr)/sizeof(int);
//1.Replace two neighbor cells.
printarr(arr);
for(int i=0; i<N; )
{
arr[i]^=arr[i+1];
arr[i+1]^=arr[i];
arr[i]^=arr[i+1];
i+=2;
}
printarr(arr);
getch();
return 0;
}
הבעיה היא כזו, בפונקצית הדפסת המערך printarr
כאשר אני מנסה לגלות את גודל המערך הנתון הוא מחזיר לי 1
int N = sizeof(arr)/sizeof(int) //N equates to 1 ם_O ?
מדובר בסביבת עבודה שגודל משתנה מסוג אינטג'ר הוא 4 בייט.
וזה פשוט יוצר מצב לא הגיוני, כיוון שאם אני מציב במשתנה
N=10
אז הוא כן מדפיס לי את כל המערך..
משמע או שהפונקציה
sizeof
לא תקינה, או שאני פשוט עושה טעות שאני לא מודע אליה.
האם מישהו יכול לעזור עם זה?
תודה רבה.
_____________________________________
The man of tomorrow
is forged by the battles of today.
|