int *read_array(int end_singal,int *count) C language - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

int *read_array(int end_singal,int *count) C language


man with no name

Recommended Posts

א. (20%) כתוב פונקציה read_array הקוראת מספרים שלמים מהקלט לתוך מערך. הפונקציה מקבלת כפרמטר מספר שלם end_signal וקוראת מספרים מהקלט עד שמופיע המספר end_signal, אותו היא לא מכניסה למערך. הפונקציה תחזיר את כתובת תחילת המערך שלתוכו קראה את המספרים. הנחיות:

· כמות המספרים לא ידועה מראש אך אינה עולה על קבוע חיובי MAX .

· הפונקציה תחזיר את הכתובת של מערך מוקצה דינאמית שגודלו כמספר המספרים שהפונקציה קראה בפועל (לא בהכרח MAX).

· כמות המספרים שנקראו תוחזר בעזרת פרמטר נוסף של הפונקציה

· ניתן להניח שהקלט תקין.

· הפונקציה read_array לא מדפיסה את המערך שקראה.

זוהי בעיקרון השאלה ומשום מה הסתבכתי איתה אין לי מושג איך לעבוד עם ה WHILE

זה מה שכתבתי

#

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>


#define MAX 20
int *read_array(int end_singal,int *count)
{
int *a[MAX];
int cnt=0,i,j;
while ()
{
scanf("%d",&a[i]);
cnt++;
}


a[cnt]=(int*)malloc(cnt*sizeof(int));
*count=cnt;
return *a;
}


int main()
{
int len;
printf("plz enter numbers prees '666' to finish:");
read_array(666,&len);
return 0;
}

זה לא עובד מין הסתם

אני ישמח אם תעזרו לי :)

קישור לתוכן
שתף באתרים אחרים

#define MAX 20
int read_array(int end_singal,int *count)
{
int a[MAX];
int cnt=0,i=0,j;


for (i=0;i<MAX;++i){
scanf("%d",&a[i]);
if(a[i]==end_singal)
break;
else
cnt++;
}


//a[cnt]=(int*)malloc(cnt*sizeof(int));
*count=cnt;
return a[MAX];
}


int main()
{
int len=0;
printf("plz enter numbers prees '666' to finish:");
read_array(666,&len);
printf("\n%d\n",len);
return 0;
}

שמע זה עובד ...אבל זה לא פויינטר... איך אני עובד עכשיו עם פויינטר והקצאות לפי דרישת התרגיל ??

אגב תודה על ההדרכה עזרת לי מאוד

קישור לתוכן
שתף באתרים אחרים

א. (20%) כתוב פונקציה read_array הקוראת מספרים שלמים מהקלט לתוך מערך. הפונקציה מקבלת כפרמטר מספר שלם end_signal וקוראת מספרים מהקלט עד שמופיע המספר end_signal, אותו היא לא מכניסה למערך. הפונקציה תחזיר את כתובת תחילת המערך שלתוכו קראה את המספרים. הנחיות:

· כמות המספרים לא ידועה מראש אך אינה עולה על קבוע חיובי MAX .

· הפונקציה תחזיר את הכתובת של מערך מוקצה דינאמית שגודלו כמספר המספרים שהפונקציה קראה בפועל (לא בהכרח MAX).

· כמות המספרים שנקראו תוחזר בעזרת פרמטר נוסף של הפונקציה

· ניתן להניח שהקלט תקין.

· הפונקציה read_array לא מדפיסה את המערך שקראה.

זוהי הדרישה של השאלה

שמע שניצל יכול להיות שהפרוטוטייפ שלי לא נכון

(int *read_array(int end_singal,int *count)

קישור לתוכן
שתף באתרים אחרים

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>




#define MAX 20
int *read_array(int end_singal,int *count)
{
int *arr;
int a[MAX];
int cnt=0,i=0,j=0;


for (i=0;i<MAX;++i){
scanf("%d",&a[i]);
if(a[i]==end_singal)
break;
else
cnt++;
}
arr=(int*)malloc((cnt)*sizeof(int));
if (a==NULL)
return NULL;


j=0;
for(i=0;i<cnt;++i){
arr[j++]=a[i];
}


*count=cnt;

return arr;}


int main()
{
int len=0;
printf("plz enter numbers prees '666' to finish:");
read_array(666,&len);
printf("\n%d\n",len);
return 0;
}


אוקיי זה עובדדדד :D :D :D :D

אבל זה לא ביזבוז עם מערך של ה a[MAX] ??

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...