יעילות - אני צריך ללמוד את כל הנושא הזה... עריכה: או שלא? - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

יעילות - אני צריך ללמוד את כל הנושא הזה... עריכה: או שלא?


SweeT_EviL

Recommended Posts

  • תגובות 40
  • נוצר
  • תגובה אחרונה

משתתפים בולטים בדיון

הנה עוד הסבר קצר שרשמתי מהר(תשנו את הסיומת לDOC. משום מה הוא לא נותן להעלות קבצים כאלו):

וזה לא משנה כמה יש בכל שורה?

כאילו אם מ-1 קופץ ל4 ואז ל 16 וכו'...

ומה בקשר לזה

עריכה:

ולמה אני, או יותר נכון איך אני עושה שהמערכים יהיו גמישים - בסגנון הזה:

int arr1[size/2];

int arr2[size/2 + 1];

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

בקשר למערכים "גמישים", רשמתי מקודם - הקצאה דינמית.

מסובך להסביר את זה בהודעה אחת.

תתחיל מפה:

http://he.wikibooks.org/wiki/%D7%A9%D7%A4%D7%AA_C/%D7%94%D7%A7%D7%A6%D7%90%D7%AA_%D7%96%D7%99%D7%9B%D7%A8%D7%95%D7%9F_%D7%93%D7%99%D7%A0%D7%90%D7%9E%D7%99%D7%AA

אחרי זה כבר יהיה אפשר לדבר. כמובן יש מלא מידע בסיסי בגוגל :P

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

בקשר למערכים "גמישים", רשמתי מקודם - הקצאה דינמית.

מסובך להסביר את זה בהודעה אחת.

תתחיל מפה:

http://he.wikibooks.org/wiki/%D7%A9%D7%A4%D7%AA_C/%D7%94%D7%A7%D7%A6%D7%90%D7%AA_%D7%96%D7%99%D7%9B%D7%A8%D7%95%D7%9F_%D7%93%D7%99%D7%A0%D7%90%D7%9E%D7%99%D7%AA

אחרי זה כבר יהיה אפשר לדבר. כמובן יש מלא מידע בסיסי בגוגל :P

סידר אותי. תודה!

כרשמת את זה אז חשבתי שזה בטח קשור ליעילות איכשהו.. =]

יותר מאוחר אני יבדוק את זה במיוון..

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

אני מניח אני יסתדר עם הזמן.

כשלמדתי אמבלר התעסקתי רק עם , ואני לא מאמין ששפת עילית תיהיה מסובכת יותר מסף, לא?

איך הדיבאג של טורבו C? זה היחיד שאני יכול לעבוד איתו =\

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

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

גלישת , בעיות ב heap, שחרור לא נכון, משחקים אם פוינטרים שמשתבשים..... קיצר כיף כיף :xyxthumbs:

הדיבאגר הזה לא משהו. visual studio הרבה יותר טוב.

יש סיבה למה אתה צריך את הטורבו ספציפית?

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

בין היתר.

בכל אופן לא אני קבעתי במה לתכנת, אלא המנהל של יג =\

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

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

THANKS.

/*Nir Ben Ezri Task2*/

#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "stdlib.h"

void sort(int *a,int size); /* Sorting the arrey */
void combine(int *a, int *arr1, int *arr2, int size, int sArr1, int sArr2); /* Combine arr1 & arr2 into arrey a by sorting variabels */

int main()
{
int i,n=100;
int *x=(int*)malloc(n * sizeof(int));
clrscr();
for(i=0;i<n;i++)
x[i]=random(100) + 1;
sort(x,n);
for(i=0;i<n;i++)
printf("%d , ", x[i]);
free(x);
getch();
return(0);
}

/* Sorting the arrey */
void sort(int *a,int size)
{
int *arr1=(int*)malloc((size/2) * sizeof(int));
int *arr2=(int*)malloc(((size/2)+1) * sizeof(int));
int i, arr2s;

if(!arr1 || !arr2)
{
printf("not enof space!");
return;
}

if(size<=1)
{
free(arr1);
free(arr2);
return;
}

for(i=0;i<size;i++)
{
if(size/2>i)
arr1[i]=a[i];
else
arr2[i-(size/2)]=a[i];
}

arr2s = size%2==0 ? size/2 : (size/2)+1;

sort(arr1,size/2);
sort(arr2,arr2s);

combine(a, arr1, arr2, size, size/2, arr2s);

free(arr1);
free(arr2);

return;
}

/* Combine arr1 & arr2 into arrey a by sorting variabels */
void combine(int *a, int *arr1, int *arr2, int size, int sArr1, int sArr2)
{
if(size==0)
return;
if(sArr2==0 || arr1[0] < arr2[0] && sArr1>0)
{
a=arr1;
combine(a+1, arr1+1,arr2, size-1, sArr1-1, sArr2);
return;
}
a=arr2;
combine(a+1, arr1,arr2+1, size-1, sArr1, sArr2-1);
}

אה ועוד משהו יש משהו אני יכול לעשות עם זה:

	if(!arr1 || !arr2)
{
printf("not enof space!");
return;
}

כאילו לא נראה לי זה טוב לשים אותו ככה סתם, והוא יכול להפסיק באמצע המיוון.

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

1) קודם כל, לא בדקת אם הזכרון הוקצה בהצלחה ב main

2) שים לב שכשאתה עושה return בפונקציה sort אתה יוצא מהפונקציה כשהמערך לא מסודר, אבל התוכנית ממשיכה אחרי זה. אז או שתשתמש ב exit או שתחזיר ערך שאומר שהייתה שגיאה ותבדוק אותו אחרי השימוש בפונקציה.

אגב, מספיק - enough לא enof.

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

ארכיון

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


×
  • צור חדש...