עזרה בתרגיל בשפת C

nas123

New member
עזרה בתרגיל בשפת C

שלום,
אני צריכה לכתוב ב- C את הפונקציה הבאה:
קידוד RLE מאפשר לדחוס מחרוזות בצורה פשוטה לדiגמא
AAZyOOOp הופך ל A2Z1y1O3p1
או BBccccccD הופך ל- B2c6D1
התרגיל הוא לכתוב פונקציה המקבלת מחרוזת המהווה קידוד של מחרוזת נוספת,על הפונקציה להקצות דינמית מקום למחרוזת המקורית, למלא את ערכה ולהחזיר אותה.
אם פונקציי, ההקצאה נכשלה יש להחזיר הודעת שגיאה.
למשל אם coded_string = p3B2c4 על הפונקציה להחזיר את המחרוזת pppBBcccc

התחלתי לכתוב את הפונקציה אבל אני פשוט לא יודעת איך להמשיך, אשמח לקבל עזרה :)

קוד:
char *uncompress(char *coded_string)
{
	int size,i;
	char *original = (char *)malloc(size*sizeof(char));
	if (original == NULL)
	{
		printf("Dynamic allocation failed in uncompress\n");

		return NULL;
	}
	for (i = 0; coded_string[i] != '\0'; i++)
	{
		
		
	}
}
בנתיים מה שלמדתי זה מצביעים מערכים ומחרוזות לולאות והקצאת זיכרון דינאמית כך שהקוד לא אמור להכיל משהו מעבר לזה.
 

BravoMan

Active member
לא ממש התחלת.

מה שכתבת אינו התחלה, כי לפני שאת מקצה מקום למחרוזת החדשה, את צריכה לחשב את הגודל שלה.
&nbsp
מה בדיוק לא מובן לך?
האם את מבינה איך עובדת ה-"דחיסה" שנתנו לך בתרגיל?
האם ברור לך כמה אותיות יהיו אחרי "פתיחת" הדחיסה?
 

פרסאוס

New member
ראשית יש בעיות ב"דחיסה" כפי שמתוארת

אבל זה לא ממש העניין כרגע.
1. עלייך למצוא כמה תווים יהיו במחרוזות ה"פרוסה".
רק אז את יכולה להקצות אותם. אז איך מוצאים אותם? רמז, זה נתון בשאלה.
היות ולא בקשו לצמצם בסיבוכיות ריצה כזאת לא אמורה להוריד נקודות.
 
למעלה