محمد عنيبة نشر 15 يناير 2021 أرسل تقرير نشر 15 يناير 2021 (معدل) هذا برنامج يحشر سلسلة s1 في سلسلة s2 عند مكان n يحدده المستخدم #include<iostream.h> void st(char s1[],char s2[],int n) {int i,j; for(i=0;s1[i]!='\0';i++); for(j=0;s2[j]!='\0';j++); for(i=i+1;i>=n-1;i--) s1[i+j]=s1[i]; for(j=0;s2[j]!='\0';j++) s1[n+j]=s2[j]; } main() {char x[100], y[10]; int n; cin.getline(x,100); cin.getline(y,10); cout<<x<<endl; cout<<y<<endl; cout<<"enter the place"<<endl; cin>>n; st(x,y,n); cout<<x<<endl; cout<<y<<endl; } جربت أحولة لـForm بلغة #C بس عند التنفيذ يظهر خطأ System.IndexOutOfRangeException عرفت أن الفهرس index لا يستطيع الوصول لكل عناصر المجموعة أو شيء من هذا القبيل فما المشكلة؟ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int i, j; for (i = 0; textBox1.Text[i] != '\0'; i++) ; for ( j = 0; textBox2.Text[j] != '\0'; j++) ; for (i = i + 1; i >= int.Parse(textBox3.Text) - 1;i--) { StringBuilder sb = new StringBuilder(textBox1.Text); sb[i + j] = textBox1.Text[i]; textBox1.Text = sb.ToString(); } for (j = 0; textBox2.Text[j] != '\0'; j++) { StringBuilder sb = new StringBuilder(textBox1.Text); sb[int.Parse(textBox3.Text) + j] = textBox2.Text[j]; textBox1.Text = sb.ToString(); } textBox4.Text = textBox1.Text; } } } تم التعديل في 15 يناير 2021 بواسطة محمد عنيبة اقتباس
1 Abdulraheem Barghouthi نشر 15 يناير 2021 أرسل تقرير نشر 15 يناير 2021 أنواع الـstrings في لغة C/C++ : C-Style-Strings : وهي تعتبر null terminated strings كما أنها عبارة عن مصفوفة من الحروف بالإضافة إلى الـnull character في آخر تلك المصفوفة. على سبيل المثال : char name[] = "ahamad"; هي عبارة عن مصفوفة من الحروف بالإضافة إلى الـnull character في آخرها كما يلي: [ "a", "h", "m", "a", "d", "\0" ] C++ strings : لا تعتبر null terminated strings. الشرط الموجود بالـfor loop يتعلق بالعثور على الـNull character وإذا لم يتم العثور عليه سيكون هذا عبارة عن infinite loop أي تكرار لا نهائي وينتهي بالخطأ الذي ذكرته بسبب زيادة متغير الi والمتغير j الى ارقام تتعدى حدود مصفوفة الحروف الموجودة. الحل: جرب إستبدال الشرط الخاص بالعثور على null character بالشرط التالي: إذا كان الـindex الخاص بالحرف اقل من الـ string .length - ناقص واحد أي أن الشرط سيكون هكذا: (str[i] < str.length - 1) اقتباس
0 محمد عنيبة نشر 15 يناير 2021 الكاتب أرسل تقرير نشر 15 يناير 2021 بتاريخ 33 دقائق مضت قال Abdulraheem Barghouthi: أنواع الـstrings في لغة C/C++ : C-Style-Strings : وهي تعتبر null terminated strings كما أنها عبارة عن مصفوفة من الحروف بالإضافة إلى الـnull character في آخر تلك المصفوفة. على سبيل المثال : char name[] = "ahamad"; هي عبارة عن مصفوفة من الحروف بالإضافة إلى الـnull character في آخرها كما يلي: [ "a", "h", "m", "a", "d", "\0" ] C++ strings : لا تعتبر null terminated strings. الشرط الموجود بالـfor loop يتعلق بالعثور على الـNull character وإذا لم يتم العثور عليه سيكون هذا عبارة عن infinite loop أي تكرار لا نهائي وينتهي بالخطأ الذي ذكرته بسبب زيادة متغير الi والمتغير j الى ارقام تتعدى حدود مصفوفة الحروف الموجودة. الحل: جرب إستبدال الشرط الخاص بالعثور على null character بالشرط التالي: إذا كان الـindex الخاص بالحرف اقل من الـ string .length - ناقص واحد أي أن الشرط سيكون هكذا: (str[i] < str.length - 1) شكرا بس بالمناسبة يعني كيف تحسب طول السلسلة بدون استخدام دوال جاهزة في #C مثلا في ++C كل ماعليك فعله هو حساب الأحرف حتى '0\' اقتباس
0 Abdulraheem Barghouthi نشر 15 يناير 2021 أرسل تقرير نشر 15 يناير 2021 إليك الأمثلة التالية لحساب طول سلسة ما بدون إستخدام الدوال الجاهزة: مثال 1: عن طريق التجربة والخطأ بإستخدام Do while loop private int stringLength(string str) { int length = 0; bool done = false; do { try { char c = str[length]; length++; } catch (IndexOutOfRangeException) { done = true; } } while(!done); return length; } مثال 2: عن طريق إستخدام foreach loop int numberOfLetters = 0; foreach (var c in str) { numberOfLetters++; } اقتباس
السؤال
محمد عنيبة
هذا برنامج يحشر سلسلة s1 في سلسلة s2 عند مكان n يحدده المستخدم
جربت أحولة لـForm بلغة #C بس عند التنفيذ يظهر خطأ System.IndexOutOfRangeException عرفت أن الفهرس index لا يستطيع الوصول لكل عناصر المجموعة أو شيء من هذا القبيل فما المشكلة؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.