בעייה בתוכנית ב C++

n0b0dy

New member
בעייה בתוכנית ב C++

איזו תוכנית שאני כותב והכל טוב ויפה חוץ ממשהו אחד שקורה לי. מה שאני רוצה לעשות זה שאם יש לי את התו רווח במחרוזת, אז הוא רק יודפס, ויקודם מקום אחד במחרוזת. רשמתי את זה, וזה לא פועל. לא כשאני רושם ' ' ולא כשאני רושם תקוד אסקיי (32). צירפתי פה תחלק הרלוונטי מהתוכנית, אם מישהו יוכל לומר הכין הטעות אני אודה לו. while (String_to_decrypt[p] != '.') { if ( String_to_decrypt[p] != 32) \\ אם זה שונה מרווח { if ((i-1) < 0) i = j; ch = String_to_decrypt[p] - decryption_key[i-1]; if ((String_to_decrypt[p] - decryption_key[i-1]) < 97) ch = String_to_decrypt[p] - decryption_key[i-1] + 26; i--; } else \\ אם זה רווח ch=String_to_decrypt[p]; cout << ch; p++; }
 

n0b0dy

New member
אוקי יישרתי אותו.

while (String_to_decrypt[p] != '.') { if (String_to_decrypt[p] != 32) //אם זה שונה מרווח { if ((i-1) < 0) i = j; ch = String_to_decrypt[p] - decryption_key[i-1]; if ((String_to_decrypt[p] - decryption_key[i-1]) < 97) ch = String_to_decrypt[p] - decryption_key[i-1] + 26; i--; } else // אם זה רווח ch = String_to_decrypt[p] cout << ch; p++; }​
 

n0b0dy

New member
אני חושב ש

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

gilad_no

New member
אולי אין לך שם רווח?

אולי יש לך במחרוזת המקורית תו אחר? (255)???
 

התמ-ים

New member
יש לך דוגמאות של הפלט?

אולי הבעיה היא בטבלה השניה? שאחד הערכים שם זה 7^ - backspace ? רווח זה אסקי 32 נסה את שורת ההשוואה לעשות בתור != ' ' ולא != 32 על פניו, הקוד נראה בסדר ...
 

n0b0dy

New member
אני מיואש. זאת התוכנית :

אני שם פה את כל התוכנית. פה, במקום רווח כתבתי את התו ; ז"א שבמשפט בין מילה למילה במקום רווח שמים ; וזה פועל. תנסו לשנות את ה ; לרווח או ל 32 ותראו שזה מתחיל להשתגע. עוד דבר חשוב, בתוכנה אני יכול להניח שיש נקודה בסוף המשפט. אז אם תשכחו את הנקודה בסוף אל תיבהלו שיהיה ארור, כי חייבת להיות נקודה בסוף כל המשפט, אז תזכרו לכתוב אותה. תודה לכל מי שינסה לפתור את הבעייה המוזרה הזאת!
#include <iostream.h> void decrypt(char String_to_decrypt[80], int decryption_key[10],int i) { int j, p = 0; char ch; j=i; while (String_to_decrypt[p] != '.') { if ( String_to_decrypt[p]!=';') { if ((i-1) < 0) i = j; ch = String_to_decrypt[p] - decryption_key[i-1]; if ((String_to_decrypt[p] - decryption_key[i-1]) < 97) ch = String_to_decrypt[p] - decryption_key[i-1] + 26; i--; } else ch = String_to_decrypt[p]; cout << ch; p++; } } void encrypt(char String_to_encrypt[80], int encryption_key[10], int i) { long j, p = 0, k = 0; char ch; char decryption_str[80]; j = i; while (String_to_encrypt[p] != '.') { if ( String_to_encrypt[p]!=';') { if ((i-1) < 0) i = j; ch = String_to_encrypt[p]+encryption_key[i-1]; if ((String_to_encrypt[p]+encryption_key[i-1]) > 122) { ch = String_to_encrypt[p] + encryption_key[i-1] - 122; ch+=96; } i--; } else ch = String_to_encrypt[p]; cout << ch; decryption_str[k] = ch; k++; p++; } if (String_to_encrypt[p] == '.') decryption_str[k] = String_to_encrypt[p]; cout << endl; decrypt(decryption_str ,encryption_key, j); } void main() { long num, temp_num; int Key[10]; int i = 0; char str[80]; cout << "Enter key :"; cin >> num; cout << "Enter word :"; cin >> str; while (num) { temp_num = num; temp_num = temp_num % 10; Key = temp_num; num = num/10; i++; } encrypt(str,Key,i); }
 

n0b0dy

New member
אוף!! סליחה שפתחתי הודעה חדשה...

אני כבר לא שם לב למה שאני עושה.....
 
למעלה