עבור לתוכן

שורה שנותנת שגיאה

Featured Replies

פורסם

מדוע השורה הבאה נותנת שגיאה:

month=malloc(2*days*sizeof(int));

שימו לב ש-month מוגדר כך:

int *month;

השגיאה שניתנת:

error C2440: '=' : cannot convert from 'void *' to 'int *'
        Conversion from 'void*' to pointer to non-'void' requires an explicit cast

בתודה מראש

פורסם

תעשה קאסטינג ידני int *

פורסם
  • מחבר

אוקיי הסתדרתי

ומה עם השורה הזו שמפעילה את הפונקציה time:

time(&hs[i],&ms[i],&he[i],&me[i],&hh,&mm);

ההגדרה של הפונקציה time:

void time (int *hs[],int *ms[],int *he[],int *me[],int *hh,int *mm)

בתודה מראש

פורסם

יעזור שתגיד מה ה WARNING/ERROR גם כן... אין לנו כח לחפש.. (ואיך הגדרת את המשתנים)..

פורסם
  • מחבר

יעזור שתגיד מה ה WARNING/ERROR גם כן... אין לנו כח לחפש.. (ואיך הגדרת את המשתנים)..

error C2664: 'time' : cannot convert parameter 1 from 'int *' to 'int *[]'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

פורסם

בידיוק מה שהוא אומר לך, אתה שלחת int * והוא מצפה ל- int **

פורסם
  • מחבר

בידיוק מה שהוא אומר לך, אתה שלחת int * והוא מצפה ל- int **

int * זה פוינטר ומזה int **?

פורסם

פוינטר לפוינטר ? יכול לשמש בין היתר כסוג מסויים של מערך דו-מימדי...

פורסם
  • מחבר

אז אני לא מבין עדיין איזה ערך לא מועבר טוב....

לא למדנו מזה מערך דו מימדי.

פורסם

אולי במקום לכתוב חלקים, פשוט שים פה את התוכנית וזהו?

פורסם

אני לא בטוח שאני יודע על מה אני מדבר אבל בהנחה שאני כן זוכר את הדברים האלו אז מה שקרה הוא פשוט מאוד שלחת לפונקציה מערך שמתחיל במקום i של הפונקציה ומה שהפונקציה מצפה לקבל זה מצביע למערך - פוינטר לפוינטר מערך הוא בסך הכול סדרה של משתנים שיש מצביע לראשון מבינהם שהמצביע הוא המערך עצמו (השם שקראת לו זה פשוט מצביע לתא הראשון במערך)

אתה פשוט צריך להעיף את ה* מהמערכים כי זה לא אמור להיות שם וזה מה שיוצר את התקלה

פורסם
  • מחבר

אתה פשוט צריך להעיף את ה* מהמערכים כי זה לא אמור להיות שם וזה מה שיוצר את התקלה

כם צריך תכף תבין למה.

הנה כל התוכנית:

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define need 12

void time (int *hs[],int *ms[],int *he[],int *me[],int *hh,int *mm)
{
*hh=*he-*hs;
if(ms<me)
*mm=*me-*ms;
else
{
*hh++;
*mm=60+*me-*ms;
}
}

void main()
{
int choose;
FILE* f;
int *day,*month,*year,*hs,*ms,*he,*me;
int days;
int daysn;
int i;
int nh,nm;
int h=0;
int m=0;
int *hh;
int *mm;

cout<<"Please choose option.\n 1-for view\n 2-for calculate hours to leashlim\n 3-for write.";
cin>>choose;

if(choose==2)
{
f=fopen("D:\\a.txt","r");
fscanf(f,"%d",&days);
((void*)day)=malloc(2*days*sizeof(int));
((void*)month)=malloc(2*days*sizeof(int));
((void*)year)=malloc(2*days*sizeof(int));
((void*)hs)=malloc(2*days*sizeof(int));
((void*)ms)=malloc(2*days*sizeof(int));
((void*)he)=malloc(2*days*sizeof(int));
((void*)me)=malloc(2*days*sizeof(int));
for(i=0;i<days*2;i++)
{
fscanf(f,"%d,%d,%d,%d,%d,%d,%d",&day[i],&month[i],&year[i],&hs[i],&ms[i],&he[i],&me[i]);
}

for(i=0;i<days*2;i++)
{
time(&hs[i],&ms[i],&he[i],&me[i],&hh,&mm);
h+=*hh;
m+=*mm;
}

nm=(need*days-h)*60-m;
nh=nm/60;
nm%=60;
cout<<nh<<" "<<nm;
fclose(f);
}

if(choose==1)
{
f=fopen("D:\\a.txt","r");
fscanf(f,"%d",&days);
((void*)day)=malloc(2*days*sizeof(int));
((void*)month)=malloc(2*days*sizeof(int));
((void*)year)=malloc(2*days*sizeof(int));
((void*)hs)=malloc(2*days*sizeof(int));
((void*)ms)=malloc(2*days*sizeof(int));
((void*)he)=malloc(2*days*sizeof(int));
((void*)me)=malloc(2*days*sizeof(int));
for(i=0;i<days*2;i++)
{
fscanf(f,"%d,%d,%d,%d,%d,%d,%d",&day[i],&month[i],&year[i],&hs[i],&ms[i],&he[i],&me[i]);
}
for(i=0;i<days*2;i++)
{
printf("%d,%d,%d,%d,%d,%d,%d",&day[i],&month[i],&year[i],&hs[i],&ms[i],&he[i],&me[i]);
}
fclose(f);
}

if(choose==3)
{
f=fopen("D:\\a.txt","r");
fscanf(f,"%d",&days);
days++;
((void*)day)=malloc(2*days*sizeof(int));
((void*)month)=malloc(2*days*sizeof(int));
((void*)year)=malloc(2*days*sizeof(int));
((void*)hs)=malloc(2*days*sizeof(int));
((void*)ms)=malloc(2*days*sizeof(int));
((void*)he)=malloc(2*days*sizeof(int));
((void*)me)=malloc(2*days*sizeof(int));
for(i=0;i<days*2;i++)
{
fscanf(f,"%d,%d,%d,%d,%d,%d,%d",&day[i],&month[i],&year[i],&hs[i],&ms[i],&he[i],&me[i]);
}
fclose(f);
f=fopen("D:\\a.txt","w");
fprintf(f,"%d \n",&days);
for(i=0;i<days*2;i++)
{
fprintf(f,"%d,%d,%d,%d,%d,%d,%d",&day[i],&month[i],&year[i],&hs[i],&ms[i],&he[i],&me[i]);
}
}
}

פורסם

יש סיבה מיוחדת שאתה משלב C++ (IOSTREAM/CIN/COUT) עם C רגיל (MALLOC במקום NEW) וכו'?

פורסם
  • מחבר

יש סיבה מיוחדת שאתה משלב C++ (IOSTREAM/CIN/COUT) עם C רגיל (MALLOC במקום NEW) וכו'?

האמת שכן.

CIN/COUT אני מעדיף אותן על SCAN/PRINTF.

NEW לא כ"כ התנסתי בה אז העדפתי את MALLOC.

שאר הפקודות שילבתי אותן ב-C כי למדתי קורס ב-C וביום הלפני האחרון רק למדנו CIN/COUT,NEW,מחלקות, משתנה boll והעמסת פונקציות. זהו אני חושב.

פורסם

אני חייב לציין שהקוד שלך בעייתי ביותר, גם בלי הקשר לערבור... בכל מקרה, זאת צריכה להיות ה TIME שלך:

void time (int hs,int ms,int he,int me,int *hh,int *mm)

{

*hh=he-hs;

if(ms<me)

*mm=me-ms;

else

{

*hh++;

*mm=60+me-ms;

}

}

וככה אתה צריך לקרוא לה:

time(hs,ms,he,me,hh,mm);

ארכיון

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

דיונים חדשים