Download presentation
Presentation is loading. Please wait.
1
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל : keren@eli-wigs.comkeren@eli-wigs.com
2
מחרוזות מחרוזת היא רצף של תווים. הצהרה על מחרוזת : כמו הצהרה על מערך של תווים : char name[size] כאשר size הוא האורך המקסימלי של המחרוזת
3
קליטת ערך למחרוזת אפשרות 1: scanf( “ %s ”,name); למשל : char st[20]; scanf( “ %s ”,st); שימו לב : אין צורך בתו &. באפשרות הזו נקלוט את המחרוזת עד שנגיע לרווח או ל tab, ושאר המחרוזת לא תיקלט. על מנת להימנע ממקרה זה נשתמש באפשרות השנייה. אפשרות 2: gets(name);
4
התו '0\' התו '0\' משמש כתו בקרה המודיע על סיום המחרוזת. כאשר קולטים מחרוזת מהמשתמש או כאשר מאתחלים מחרוזת בעת ההצהרה תו זה מוסף אוטומטית כתו אחרון. למשל, אם נרצה לאתחל מחרוזת מאורך 5, אז התו השישי יהיה '0\' ולכן יש להגדיר את גודל המערך ל -6 תווים לפחות דוגמה : char st[6]= “ keren ” ; st[0]= ‘ k ’, st[1]= ‘ e ’, …,st[4]= ‘ n ’ אז והערך של התא האחרון יהיה '0\'. אם נכתוב תוכנית שבונה את המחרוזת לבד יש להוסיף בסופה את התו.
5
כתוב תכנית שקולטת מחרוזת ויוצרת מחרוזת חדשה שהיא ההיפוך שלהץ למשל, קלט: abcd פלט: dcba #include <stdio.h> void main() { char st[10],new[10]; int i,k=0,length; printf ("\n enter string"); gets(st); for (i=0;st[i];i++); length=i; for (i=length;i>0;i--) new[k++]=st[i-1]; new[k]='\0'; printf ("\n the new string is: %s",new); {
6
כתבו תכנית שקולטת שתי מחרוזות ובונה מחרוזת חדשה, שבה אחרי כל תו של המחרוזת הראשונה תופיע המחרוזת השנייה. לדוגמה: מחרוזת ראשונה: "abcd" מחרוזת שנייה:"**". המחרוזת החדשה תהיה: "a**b**c**d**". #include void main() { char s1[10],s2[10],new[20]; int i,j,k=0; printf ("\n enter the first string"); gets(s1); printf ("\n enter the second string"); gets(s2); for(i=0;s1[i];i++) { new[k++]=s1[i]; for (j=0;s2[j];j++) new[k++]=s2[j]; } new[k++]='\0'; for(i=0;new[i];i++) printf("%c",new[i]); }
7
כתוב פונקציה שמקבלת מחרוזת ומוחקת את כל הרווחים שבמחרוזת. כתוב תוכנית שמשתמשת בפונקציה זו. #include void del_spaces(char a[]) } int i,count=0; for (i=0;a[i];i++) } if (a[i]!=' ') a[count++]=a[i]; { a[count]='\0'; { void main() } char st[80]; printf ("enter string \n"); gets(st); del_spaces(st); printf ("the string without spaces:\n%s",st); }
8
כתבו תכנית שקולטת שני מערכים של מספרים שלמים הממוינים בסדר עולה, ובונה מערך חדש ממוזג. כלומר, המערך החדש יכיל את אברי שני המערכים ויהיה ממוין. #include #define N 5 #define M 7 void kelet(int array[],int size) { int i; printf ("\n enter %d numbers",size); for (i=0;i<size;i++) scanf("%d",&array[i]); } void merge(int a[],int b[],int c[]) { int i=0,j=0,k=0; while (i<N && j<K) if (a[i]<b[j]) c[k++]=a[i++]; else c[k++]=b[j++]; while (i<N) c[k++]=a[i++]; while (j<M) c[k++]=b[j++]; } void main() { int i,a[N],b[M],new[N+M]; kelet(a,N); kelet(b,M); merge(a,b,new); for (i=0;i<N+M;i++) printf (" %d",new[i]); }
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.