orlupo פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 מדוע השורה הבאה נותנת שגיאה: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בתודה מראש קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 תעשה קאסטינג ידני int * קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 באוגוסט 13 מחבר Share פורסם 2005 באוגוסט 13 אוקיי הסתדרתיומה עם השורה הזו שמפעילה את הפונקציה 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)בתודה מראש קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 יעזור שתגיד מה ה WARNING/ERROR גם כן... אין לנו כח לחפש.. (ואיך הגדרת את המשתנים).. קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 באוגוסט 13 מחבר Share פורסם 2005 באוגוסט 13 יעזור שתגיד מה ה 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 קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 בידיוק מה שהוא אומר לך, אתה שלחת int * והוא מצפה ל- int ** קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 באוגוסט 13 מחבר Share פורסם 2005 באוגוסט 13 בידיוק מה שהוא אומר לך, אתה שלחת int * והוא מצפה ל- int **int * זה פוינטר ומזה int **? קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 פוינטר לפוינטר ? יכול לשמש בין היתר כסוג מסויים של מערך דו-מימדי... קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 באוגוסט 13 מחבר Share פורסם 2005 באוגוסט 13 אז אני לא מבין עדיין איזה ערך לא מועבר טוב....לא למדנו מזה מערך דו מימדי. קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 אולי במקום לכתוב חלקים, פשוט שים פה את התוכנית וזהו? קישור לתוכן שתף באתרים אחרים More sharing options...
frozen_fire פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 אני לא בטוח שאני יודע על מה אני מדבר אבל בהנחה שאני כן זוכר את הדברים האלו אז מה שקרה הוא פשוט מאוד שלחת לפונקציה מערך שמתחיל במקום i של הפונקציה ומה שהפונקציה מצפה לקבל זה מצביע למערך - פוינטר לפוינטר מערך הוא בסך הכול סדרה של משתנים שיש מצביע לראשון מבינהם שהמצביע הוא המערך עצמו (השם שקראת לו זה פשוט מצביע לתא הראשון במערך) אתה פשוט צריך להעיף את ה* מהמערכים כי זה לא אמור להיות שם וזה מה שיוצר את התקלה קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 באוגוסט 13 מחבר Share פורסם 2005 באוגוסט 13 אתה פשוט צריך להעיף את ה* מהמערכים כי זה לא אמור להיות שם וזה מה שיוצר את התקלהכם צריך תכף תבין למה.הנה כל התוכנית:#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]);}}} קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 יש סיבה מיוחדת שאתה משלב C++ (IOSTREAM/CIN/COUT) עם C רגיל (MALLOC במקום NEW) וכו'? קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 באוגוסט 13 מחבר Share פורסם 2005 באוגוסט 13 יש סיבה מיוחדת שאתה משלב C++ (IOSTREAM/CIN/COUT) עם C רגיל (MALLOC במקום NEW) וכו'?האמת שכן. CIN/COUT אני מעדיף אותן על SCAN/PRINTF.NEW לא כ"כ התנסתי בה אז העדפתי את MALLOC.שאר הפקודות שילבתי אותן ב-C כי למדתי קורס ב-C וביום הלפני האחרון רק למדנו CIN/COUT,NEW,מחלקות, משתנה boll והעמסת פונקציות. זהו אני חושב. קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 באוגוסט 13 Share פורסם 2005 באוגוסט 13 אני חייב לציין שהקוד שלך בעייתי ביותר, גם בלי הקשר לערבור... בכל מקרה, זאת צריכה להיות ה 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); קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.