פורסם 2005 באוגוסט 1320 שנים מדוע השורה הבאה נותנת שגיאה: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בתודה מראש
פורסם 2005 באוגוסט 1320 שנים מחבר אוקיי הסתדרתיומה עם השורה הזו שמפעילה את הפונקציה 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)בתודה מראש
פורסם 2005 באוגוסט 1320 שנים יעזור שתגיד מה ה WARNING/ERROR גם כן... אין לנו כח לחפש.. (ואיך הגדרת את המשתנים)..
פורסם 2005 באוגוסט 1320 שנים מחבר יעזור שתגיד מה ה 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
פורסם 2005 באוגוסט 1320 שנים מחבר בידיוק מה שהוא אומר לך, אתה שלחת int * והוא מצפה ל- int **int * זה פוינטר ומזה int **?
פורסם 2005 באוגוסט 1320 שנים מחבר אז אני לא מבין עדיין איזה ערך לא מועבר טוב....לא למדנו מזה מערך דו מימדי.
פורסם 2005 באוגוסט 1320 שנים אני לא בטוח שאני יודע על מה אני מדבר אבל בהנחה שאני כן זוכר את הדברים האלו אז מה שקרה הוא פשוט מאוד שלחת לפונקציה מערך שמתחיל במקום i של הפונקציה ומה שהפונקציה מצפה לקבל זה מצביע למערך - פוינטר לפוינטר מערך הוא בסך הכול סדרה של משתנים שיש מצביע לראשון מבינהם שהמצביע הוא המערך עצמו (השם שקראת לו זה פשוט מצביע לתא הראשון במערך) אתה פשוט צריך להעיף את ה* מהמערכים כי זה לא אמור להיות שם וזה מה שיוצר את התקלה
פורסם 2005 באוגוסט 1320 שנים מחבר אתה פשוט צריך להעיף את ה* מהמערכים כי זה לא אמור להיות שם וזה מה שיוצר את התקלהכם צריך תכף תבין למה.הנה כל התוכנית:#include <iostream.h>#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define need 12void 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]);}}}
פורסם 2005 באוגוסט 1320 שנים יש סיבה מיוחדת שאתה משלב C++ (IOSTREAM/CIN/COUT) עם C רגיל (MALLOC במקום NEW) וכו'?
פורסם 2005 באוגוסט 1320 שנים מחבר יש סיבה מיוחדת שאתה משלב C++ (IOSTREAM/CIN/COUT) עם C רגיל (MALLOC במקום NEW) וכו'?האמת שכן. CIN/COUT אני מעדיף אותן על SCAN/PRINTF.NEW לא כ"כ התנסתי בה אז העדפתי את MALLOC.שאר הפקודות שילבתי אותן ב-C כי למדתי קורס ב-C וביום הלפני האחרון רק למדנו CIN/COUT,NEW,מחלקות, משתנה boll והעמסת פונקציות. זהו אני חושב.
פורסם 2005 באוגוסט 1320 שנים אני חייב לציין שהקוד שלך בעייתי ביותר, גם בלי הקשר לערבור... בכל מקרה, זאת צריכה להיות ה 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);
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.