צריך עזרה בכתיבת תוכנית בשפת C, כל עזרה תתקבל בברכה! - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

צריך עזרה בכתיבת תוכנית בשפת C, כל עזרה תתקבל בברכה!


Chaos

Recommended Posts

הבעיה שאתה מנסה להדפיס מערך דו מימדי כאשתה רושם line .

בעוד שלמשל אם נסתכל על "was"

ב-line אין את המחרוזת הזאת אלא יש 3 מחרוזות("w","a","s")

לכן עדיף להשתמש במערך דו ולא תלת מימדי.

בכל מקרה אפשר לפתור את הבעיה ע"י הדפסת המחרוזות ב-line עד שנקבל מחרוזת רחקה

שמסמלת סוף מילה כמו שעשיתי כאן:

http://tennis.bravehost.com/filpWords.txt

כמו-כן שים לב שלא חייבים להשתמש ב-flag אלא פשוט לבודד את המקרים

עם else if מאחר וידוע שרק מבצ אחד אפשרי כל פעם כולל טעות.

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

תודה רבה לך עמית.

בתוכנית שלך ישנה בעייה קטנה. לדוגמא, עבור הקלט:

I love America. I love USA.

הפלט הוא:

America Love I..

בתוכנית שלך נעשו שני שינויים בלבד:

שורת הקוד:

else if (char_A <= toupper(letter) && toupper(letter) <= char_Z)

הוחלפה בושרת הקוד:

else if ((char_A<=letter && letter<=char_Z) || (char_a<=letter && letter<=char_z))

ונמחקו שלושת השורות הראשונות של הקוד, הקוראות לתקיות conio, schar ו stdlib.

תודה מראש.

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

נכון, הרצתי אותה.

אך, יש לך מושג לגבי הבעייה?

עריכה:

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

#include <stdio.h>
#include <string.h>
#define max_letters 32
#define char_A 'A'
#define char_Z 'Z'
#define char_a 'a'
#define char_z 'z'
#define enter 10
#define space 32
#define dot '.'
#define null '\0'

int main()
{
int i=0, j=0, k=0, temp_k, length_sentence, length_line, flag_error=0;
char letter, sentence[max_letters]="", temp_line[max_letters]="", temp_reverse[max_letters]="", final_sentence[max_letters]="";
do
{
scanf("%c", &letter);
if (letter==enter)
continue;
sentence[i]=letter;
i++;
printf("%s", sentence);
}
while(letter!=enter);
length_sentence=i-1;
/*for (i=0; i<=length_sentence; i++)
if ((char_A<=sentence[i] && sentence[i]<=char_Z) || (char_a<=sentence[i] && sentence[i]<=char_z) || sentence[i]==space || sentence[i]==dot || letter==enter)
flag_error++;
if (flag_error==length_sentence-1)
{*/
sentence[31]=null;
i=0;
for (i=0; i<=length_sentence; i++)
if (sentence[i]=dot)
final_sentence[i]=dot;
strcat(temp_line, sentence);
temp_line[i]=null;
printf("tp:%s", temp_line);
do
{
length_line=i-1;
k=0;
while(temp_line[length_line-k]!=space)
k++;
temp_k=k;
for (k=length_line-temp_k; k<=length_line; k++)
{
temp_reverse[j]=temp_line[k];
j++;
}
temp_line[length_line-temp_k-1]=null;
temp_reverse[j]=space;
j++;
}
while(k>=0);
strcat(final_sentence, temp_reverse);
printf("%s", final_sentence);
printf("fs: %s\n", final_sentence);
/*}
else
printf("error\n"); */
return 0;
}

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

ארכיון

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

×
  • צור חדש...