נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: למה התוכנית לא רצה?!?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
ענת
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 October 2008 בשעה 12:39 | IP רשוּם
ציטוט ענת

:
שלום

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

התוכנית עוברת קומפילציה אך יש run time error ואיני מבינה למה...

אשמח לעזרתכם:

#include <stdio.h>
#include <stdlib.h> 
#include <string.h> 

char *sentence(char ** words){

    char *newstring, *save;
    int     length, lines;

    for(lines = length=0;  ; lines++){
        length = length + strlen(*(words + lines) ) + 1;
        if(*(*(words + lines) + strlen(*(words + lines)) - 1) == '.')
            break;
    }

    newstring = (char *)malloc(length * sizeof(char));
    newstring[0] = '\0';
    for( save = *(words) ; *(words) <= save + lines ; *(words) ++){
        strcat(newstring, *(words));
        if(*(words) < save + lines)
            strcat(newstring, " ");
        else
            newstring[length - 1] = '\0';
    }
    return  newstring;
}

   void maim()
   {
       char *words[]={{"a"},{"picture"},{"is"},{"worth"},{"a"},{"thousand"},{"words"}};
       char *word=sentence(words);
       puts(word);
     
   }
חזרה לתחילת העמוד הצג את כרטיס החבר של ענת חפש הודעות אחרות של ענת בקר בדף הבית של ענת
 
ענת
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 October 2008 בשעה 12:40 | IP רשוּם
ציטוט ענת

הנה בצורה יותר מובנת :


#include <stdio.h>
#include <stdlib.h> 
#include <string.h> 

char *sentence(char ** words){

    char *newstring, *save;
    int     length, lines;

    for(lines = length=0;  ; lines++){
        length = length + strlen(*(words + lines) ) + 1;
        if(*(*(words + lines) + strlen(*(words + lines)) - 1) == '.')
            break;
    }

    newstring = (char *)malloc(length * sizeof(char));
    newstring[0] = '\0';
    for( save = *(words) ; *(words) <= save + lines ; *(words) ++){
        strcat(newstring, *(words));
        if(*(words) < save + lines)
            strcat(newstring, " ");
        else
            newstring[length - 1] = '\0';
    }
    return  newstring;
}

   void maim()
   {
       char *words[]={{"a"},{"picture"},{"is"},{"worth"},{"a"},{"thousand"},{"words"}};
       char *word=sentence(words);
       puts(word);
     
   }
חזרה לתחילת העמוד הצג את כרטיס החבר של ענת חפש הודעות אחרות של ענת בקר בדף הבית של ענת
 
ענת
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 October 2008 בשעה 12:43 | IP רשוּם
ציטוט ענת

זו הגרסא הסופית

#include <stdio.h>
#include <stdlib.h> 
#include <string.h> 

char *sentence(char ** words){

    char *newstring, *save;
    int     length, lines;

    for(lines = length=0;  ; lines++){
        length = length + strlen(*(words + lines) ) + 1;
        if(*(*(words + lines) + strlen(*(words + lines)) - 1) == '.')
            break;
    }

    newstring = (char *)malloc(length * sizeof(char));
    newstring[0] = '\0';
    for( save = *(words) ; *(words) <= save + lines ; *(words) ++){
        strcat(newstring, *(words));
        if(*(words) < save + lines)
            strcat(newstring, " ");
        else
            newstring[length - 1] = '\0';
    }
    return  newstring;
}

   void maim()
   {
       char *words[]={{"a"},{"picture"},{"is"},{"worth"},{"a"},{"thousand"},{"words."}};
       char *word=sentence(words);
       puts(word);
     
   }
חזרה לתחילת העמוד הצג את כרטיס החבר של ענת חפש הודעות אחרות של ענת בקר בדף הבית של ענת
 
הלוחם
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 10 November 2008 בשעה 11:25 | IP רשוּם
ציטוט הלוחם

יש לך בעיה בלולאה השניה בפונקציה...

רק תתקני את זה ואת על הסוס!

בהצלחה.

 

חזרה לתחילת העמוד הצג את כרטיס החבר של הלוחם חפש הודעות אחרות של הלוחם בקר בדף הבית של הלוחם
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה