עזרה בתרגיל
היי אני מנסה לפתור איזה תרגיל כמו :
כתבו פונקציה ReadPerson הקולטת מהמשתמש שם פרטי (מילה אחת עד 20 אותיות), שם משפחה (מילה אחת עד 30 אותיות) ושנת לידה (4 ספרות) ויוצרת מחרוזת אחת המכילה את כל המידע הזה בפורמט הבא: שם משפחה, רווח אחד אחריו, שם פרטי, רווח אחד אחריו, שנת לידה. הפונקציה רושמת את המחרוזת לתוך מערך מטיפוס char, שאותו היא מקבלת כפרמטר, ומחזירה 1. אם המשתמש מכניס במקום אחד השמות 0 (ספרה אפס), אז הפונקציה לא יוצרת את המחרוזת ומחזירה 0. בתוך הפונקציה מותר להניח כי המערך מספיק גדול למחרוזת הנוצרת וכי הקלט מהמשתמש תקין וכל השמות מופיעים עם אות ראשונה גדולה ושאר האותיות קטנות.
לדוגמא, דו-שיח עם המשתמש יכול להיראות כך:
Enter the first name:
Dan
Enter the last name:
Adler
Enter the year of birth:
1980
וכך ייראה המערך כתוצאה:
‘\0’ ‘0’ ‘8’ ‘9’ ‘1’ ‘ ‘ ‘n’ ‘a’ ‘D’ ‘ ‘ ‘r’ ‘e’ ‘l’ ‘d’ ‘A’
הצלחתי לבנות את המערכים אבל לא הצלחתי לעשות שברגע שבמקום השם או השם משפחה יוקש 0 התוכנית תרשום 0 ולא תריץ את המערך ואם השמות תקינים ואין בהם 0 אז יודפס המערך המלא עם ירידת שורה ואז 1 .
זה מה שבניתי עד עד כה
:#pragma warning(disable : 4996)
#include
#include
#include
#include
void main()
{
char fname[20], lname[10], year[4];
printf("Please enter first name: ");
scanf("%s", fname);
printf("Please enter last name: ");
scanf("%s", lname);
printf("Please enter year of birth: ");
scanf("%s", year);
printf("\n");
printf("\n");
while (fname == 0)
printf("0");
strcat(lname, " ");
strcat(lname, fname);
strcat(lname, " ");
strcat(lname, year);
printf("details:%s\n\n", lname);
system("pause");
}
אשמח לעזרה מכל אחד שיודע
היי אני מנסה לפתור איזה תרגיל כמו :
כתבו פונקציה ReadPerson הקולטת מהמשתמש שם פרטי (מילה אחת עד 20 אותיות), שם משפחה (מילה אחת עד 30 אותיות) ושנת לידה (4 ספרות) ויוצרת מחרוזת אחת המכילה את כל המידע הזה בפורמט הבא: שם משפחה, רווח אחד אחריו, שם פרטי, רווח אחד אחריו, שנת לידה. הפונקציה רושמת את המחרוזת לתוך מערך מטיפוס char, שאותו היא מקבלת כפרמטר, ומחזירה 1. אם המשתמש מכניס במקום אחד השמות 0 (ספרה אפס), אז הפונקציה לא יוצרת את המחרוזת ומחזירה 0. בתוך הפונקציה מותר להניח כי המערך מספיק גדול למחרוזת הנוצרת וכי הקלט מהמשתמש תקין וכל השמות מופיעים עם אות ראשונה גדולה ושאר האותיות קטנות.
לדוגמא, דו-שיח עם המשתמש יכול להיראות כך:
Enter the first name:
Dan
Enter the last name:
Adler
Enter the year of birth:
1980
וכך ייראה המערך כתוצאה:
‘\0’ ‘0’ ‘8’ ‘9’ ‘1’ ‘ ‘ ‘n’ ‘a’ ‘D’ ‘ ‘ ‘r’ ‘e’ ‘l’ ‘d’ ‘A’
הצלחתי לבנות את המערכים אבל לא הצלחתי לעשות שברגע שבמקום השם או השם משפחה יוקש 0 התוכנית תרשום 0 ולא תריץ את המערך ואם השמות תקינים ואין בהם 0 אז יודפס המערך המלא עם ירידת שורה ואז 1 .
זה מה שבניתי עד עד כה
:#pragma warning(disable : 4996)
#include
#include
#include
#include
void main()
{
char fname[20], lname[10], year[4];
printf("Please enter first name: ");
scanf("%s", fname);
printf("Please enter last name: ");
scanf("%s", lname);
printf("Please enter year of birth: ");
scanf("%s", year);
printf("\n");
printf("\n");
while (fname == 0)
printf("0");
strcat(lname, " ");
strcat(lname, fname);
strcat(lname, " ");
strcat(lname, year);
printf("details:%s\n\n", lname);
system("pause");
}
אשמח לעזרה מכל אחד שיודע