اذهب إلى المحتوى

محمد عنيبة

الأعضاء
  • المساهمات

    32
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة محمد عنيبة

  1. بتاريخ 23 دقائق مضت قال Mustafa Suleiman:

    قم بتسجيل الدخول إلى لوحة cPanel وستجد قسم خاص بالـ Email، وبه خيار باسم Email Deliverability.

    email-delivaribirity.thumb.jpg.75a59765baf1be79b10119853950120a.jpg

    وستجد اسم الدومين الخاص بك ويجب أن يكون بجانبه حالة Valid كالتالي:

    email-delivaribirity-2.thumb.jpg.567cea504c2a02c8f1b28b118e3396d4.jpg

    وإذا كانت غير ذلك سيظهر لك حالة Problems Exist ووجود مشكلة في DKIM AND SPF أو مشكلة أخرى.

    وما أنت بحاجة إلى فعله هو الضغط على manage ثم ستجد زر أسفل إعدادات DKIM باسم Install the suggested Record قم بالضغط عليه. 

    وأيضًا ستجد زر بأسفل إعدادات SPF باسم Install the suggested Record قم بالضغط عليه. 

    وفي حال كنت تستخدم Cloudflare فعليك بوضع إعدادات الـ DKIM وهما name و Value  وضعهم في حقل من نوع TXT في إعدادات الـ DNS في Cloudflare، حيث ستضغط على Add record ثم تختار حقل من نوع TXT وذلك من القائمة المنسدلة Type وستضع name في حقل name و value في حقل content ثم اضغط save

    وكرر نفس الأمر بالنسبة لإعدادت SPF.

    والآن توجه إلى صفحة Email Deliverability مرة أخرى والتي ستجد بها الدومين الخاص بموقعك، ثم بالأعلى ستجد خيار باسم list Domains اضغط عليه

    وفي حالة استمرار المشكلة 

    التحقق من سجلات MX: تأكد من أن سجلات MX (Mail Exchanger) الخاصة بنطاق البريد الإلكتروني الخاص بك مكونة بشكل صحيح وتشير إلى الخادم الصحيح، وستحتاج إلى التحقق من هذا مع مزود خدمة الاستضافة الخاص بك.

     مكتوب valid بجانب الـ domain  هل هذا يعني أنه لا يحتوي على مشاكل

     

  2. استأجرت استضافة مشتركة تستخدم لوحة تحكم cPanel واجهتني فيها مشكلة وهي أن رسائل البريد الإلكتروني التي أرسلها بها تنتقل للspam 
    هل هناك أي إعدادات معينة يجب القيام؟ أم أن المشكلة من مزود الخدمة

    • أعجبني 1
  3. بتاريخ 9 ساعة قال Mustafa Suleiman:

    قرار تحويل صفة نوع العقار إلى كينونة أخرى يعتمد على عدة عوامل، مثل نوع التطبيق ومتطلبات الأعمال المحددة للنظام الذي يستخدم هذه الجداول.

    على سبيل المثال، باستطاعتك استخدام جدول منفصل لتعريف أنواع العقارات، حيث يمكن تحديد مفتاح فريد لكل نوع عقار واستخدام هذا المفتاح في جدول العقارات بدلاً من صفة النوع.

    يمكن أيضًا توفير جدول منفصل للميزات المشتركة بين أنواع العقارات، مثل عدد الغرف أو المساحة، وتوصيلها بجدول العقارات باستخدام مفتاح خارجي.

    باختصار، تحويل صفة نوع العقار إلى كينونة أخرى يمكن أن يساعد في تحسين تنظيم وفهرسة البيانات وجعلها أكثر فعالية وسهولة في الإدارة.

    شكرا، أعتقد أني سأتركه هكذا لا داعي لإضافة كينونات جديدة وتعقيده أكثر. 

  4. بتاريخ 17 ساعة قال Mohammed Fahmy3:

    العلاقة بين كينونة المفضلة والعقارات هي many to many، حيث يمكن للمستخدم أن يضيف العديد من العقارات إلى قائمة المفضلة الخاصة به، وبالمثل يمكن للعقارات أن تكون مفضلة لدى العديد من المستخدمين. وبالتالي، يتم تطبيق علاقة many to many بين كلا الجانبين. 

    وتحديدًا، يتم استخدام جدول وسيط (pivot table) لربط جدول المستخدمين بجدول العقارات. هذا الجدول يحتوي على مفتاح خارجي (foreign key) لكلا جدول المستخدمين والعقارات، ما يسهل على قاعدة البيانات إضافة أو حذف علاقات many to many بسهولة. 

    وبشكل عام، تُستخدَم علاقة one to many في حالات ربط جانب واحد بجانب آخر، في حين تُستخْدَم علاقة many to many في حالات ربط جانب متعدِّد بجانب آخر متعدِّد

    شكرًا، لدي سؤال آخر، هل من الأفضل تحويل صفة نوع هل العقار شقة أو أرض أو محل إلى كينونة أخرى؟

    • أعجبني 1
  5.  

    بتاريخ منذ ساعة مضت قال Mustafa Suleiman:

    الخطأ يحدث لأنك تحاول الوصول إلى موارد API من موقع آخر، ويتم منع ذلك بسبب سياسة الـCORS، ويتم ذلك لأسباب أمانية لمنع الوصول غير المصرح به إلى بيانات المستخدم.

    لحل هذا المشكلة، يجب تمكين الوصول لمصدر الموارد في الخادم الذي تستخدمه. وفي حال لم تكن تملك خادم خاص بك، يمكنك استخدام خدمات بروكسي مثل CORS Anywhere أو بدائل أخرى لتفادي هذه المشكلة.

    وهذه الخدمات تسمح بإرسال طلب من الموقع المضيف إلى خدمة البروكسي، ثم يتم إعادة إرسال الطلب من خلال البروكسي إلى المصدر الأصلي دون تعريض الصفحة لمشكلة CORS.

    يمكنك قراءة المزيد عن سياسة CORS وطرق تجاوزها من هنا:

    https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

    لذلك، يمكن تعديل الرابط في الطلب ليتضمن عنوان بروكسي، على سبيل المثال:

    axios.get('https://cors-anywhere.herokuapp.com/https://timeapi.io/api/Time/current/zone?timeZone=Africa/Tripoli')
    .then(function (response) {
    // handle success
    console.log(response);
    })
    .catch(function (error) {
    // handle error
    console.log(error);
    });

    المثال يستخدم خدمة بروكسي مجانية تسمى "CORS Anywhere"، والتي تضيف رأس "Access-Control-Allow-Origin" إلى الطلب لحل مشكلة CORS. ويجب الانتباه إلى أنه يجب استخدام خدمات بروكسي بحذر، وتأكد من أن المصدر المستخدم هو موثوق به وآمن.

    شكرا 

    بتاريخ 41 دقائق مضت قال Mohammed Fahmy3:

    هذا الخطأ يحدث عندما يتم منع طلب API من المصادر المختلفة لحماية الأمان (CORS). لمعالجة هذا الخطأ، يجب إزالة هذا الحماية من جانب الموارد التي تريد الوصول إليها او اضافة الـ `Access-Control-Allow-Origin ` header.

    ولكن يمكنك حل هذه المشكلة من خلال استخدام عدد من الطرق البديلة. يمكنك مثلا استخدام خدمة توفر API للوقت مثل Timezonedb أو Worldtimeapi بدلاً من Timeapi. أو المرور بالطلب من خلال الخادم الخاص بك ثم تمرير البيانات إلى العميل.

    للحصول على الوقت الحالي باستخدام API Timezonedb و Axios في لغة الجافاسكريبت، يمكنك استخدام الكود التالي:

    const axios = require('axios');
    
    function getCurrentTime(timezone, apiKey) {
      const url = `http://api.timezonedb.com/v2.1/get-time-zone?key=${apiKey}&format=json&by=zone&zone=${timezone}`;
      return axios.get(url)
        .then(response => {
            const currentTime = new Date(response.data.formatted);
            return currentTime;
        })
        .catch(error => {
            console.log(error);
        });
    }
    
    // مثال علي مدينة
    const timezone = 'Asia/Baghdad';
    const apiKey = 'your_api_key_here';
    getCurrentTime(timezone, apiKey)
      .then(currentTime => {
        console.log('Current time is:', currentTime);
      })
      .catch(error => {
        console.log(error);
      });

    ضع في الاعتبار أنك ستحتاج إلى التسجيل في Timezonedb للحصول على مفتاح API الخاص بك ووضعه في مكان "apiKey" في الرمز أعلاه. كما يجب تغيير المكان/المدينة المذكورة في "timezone" إلى المدينة التي تريد الحصول على الوقت الحالي لها.

     

    شكرًا، يبدوا أن هذا الخيار أفضل 

    بتاريخ منذ ساعة مضت قال Kais Hasan:

    جرب كتابة ما يلي:

    const config = {
      headers:{
        "Access-Control-Allow-Origin": "*"
      }
    };
    
    axios.get("الرابط", config)

    طبعاً باقي الكود يبقى كما هو، أي أننا نحاول وضع ترويسة معينة عند إرسال الطلب لا أكثر.

    لم يتغير شيء لكن عمومًا جربت باقي الحلول ونجح الأمر

     

    • أعجبني 1
  6.  axios.get('https://timeapi.io/api/Time/current/zone?timeZone=Africa/Tripoli')
            .then(function (response) {
              // handle success
              console.log(response);
            })
            .catch(function (error) {
              // handle error
              console.log(error);
            });

    حاولت جلب الوقت الحالي لكن يظهر خطأ

    Access to XMLHttpRequest at 'https://timeapi.io/api/Time/current/zone?timeZone=Africa/Tripoli'
    from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

     

    • أعجبني 1
  7. 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;
    using System.Data.SqlClient;
    namespace library
    {
        public partial class Form4 : Form
        {
            SqlConnection conn = new SqlConnection();
            SqlCommand com = new SqlCommand();
            SqlDataReader dr;
            DataTable dt = new DataTable();
            public Form4()
            {
                conn.ConnectionString = "server=(local);database=library;integrated security=true;";
    
                try
                {
                    conn.Open();
                    MessageBox.Show("فُتح");
                }
                catch (Exception ex)
                { MessageBox.Show(ex.Message); }
                InitializeComponent();
            }
    
            private void Form4_Load(object sender, EventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                int first_space_index = textBox1.Text.IndexOf(" ");
                string first_name=textBox1.Text.Substring(0,first_space_index);
                string last_name = textBox1.Text.Substring(first_space_index +1); 
               
                com.Connection = conn;
                try
                {
                    if (!string.IsNullOrEmpty(textBox2.Text))
                    {
                        MessageBox.Show("سيدخل رقم القسم تلقائياً");
                        textBox2.Text = null;
                    }
                    com.CommandText = "insert into authors (AfirstName,ALastName)values('" + first_name + "','" + last_name + "')";
                    com.ExecuteNonQuery();
                    MessageBox.Show("تم");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                com.Connection = conn;
                if (string.IsNullOrEmpty(textBox1.Text))
                {
                    DialogResult resu = MessageBox.Show("هل أنت متأكد من حذف جميع البيانات", "تأكيد", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                    if (resu==DialogResult.OK)
                    {
                        com.CommandText = "delete authors ";
                        com.ExecuteNonQuery();
                        MessageBox.Show("تم");
                    }
                }
                else
                {
                    com.CommandText = "delete authors where AID='" + textBox2.Text + "' ";
                    com.ExecuteNonQuery();
                    MessageBox.Show("تم");
                }
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                com.Connection = conn;
                try
                {
                    if (!string.IsNullOrEmpty(textBox1.Text))
                    {
                        int first_space_index = textBox1.Text.IndexOf(" ");
                        string first_name = textBox1.Text.Substring(0, first_space_index);
                        string last_name = textBox1.Text.Substring(first_space_index + 1); ;
                        com.CommandText = "update authors set AfirstName= '" + first_name + "',ALastName='"+last_name+"'where DID='" + textBox2.Text + "'";
                        com.ExecuteNonQuery();
                    }
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                MessageBox.Show("تم");
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                com.Connection = conn;
                if (string.IsNullOrEmpty(textBox2.Text))
                {
                    com.CommandText = "select * from authors";
                }
                else
                { com.CommandText = "select * from authors where AID= '" + textBox2.Text + "'"; }
                dr = com.ExecuteReader();
                dt.Load(dr);
                dataGridView1.DataSource = dt;
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
               
                com.CommandText = "select book.* from book,authors where AID= '" + textBox2.Text + "'";
                dr = com.ExecuteReader();
                dt.Load(dr);
                dataGridView1.DataSource = dt;
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                Form1 f = new Form1();
                f.Show();
                this.Hide();
            }
        }
    }

    هذا نموذج مربوط بقاعدة البيانات sql server لكنني واجهت مشكلة في زر عرض الكتب التي ألفها مؤلف 

     private void button6_Click(object sender, EventArgs e)
            {
               
                com.CommandText = "select book.* from book,authors where AID= '" + textBox2.Text + "'";
                dr = com.ExecuteReader();
                dt.Load(dr);
                dataGridView1.DataSource = dt;
            }

    System.InvalidOperationException: 'ExecuteReader: لم تتم تهيئة الخاصية Connection.'

    فهل فيه حد يعرف المشكلة

     

     

    ‏‏لقطة الشاشة (999).png

    ‏‏لقطة الشاشة (1000).png

    ‏‏لقطة الشاشة (1001).png

    • أعجبني 1
  8. #include<iostream>
    using namespace std;
    
    int Size = 10;
    int a[10], top = -1;
    int pop();
    void del_pop(int[], int i); 
    void push(int[], int);
     void delprime(int a[]);
    int main() {
    	 int i, k;
    	for (i = 0; i < Size; i++) { cin >> k; push(a, k); }
    
       delprime(a);
        for (i = 0; i < Size; i++){cout << pop() << endl;}
                                  
    	
    }
    void push(int a[], int k) {
    	if (top == Size - 1)cout << "Stack overflow";
    	else
    		a[++top] = k;
    }
    int pop() { return a[top--]; }
    void del_pop(int a[], int i)
    {
    	int top2 = -1, m[10];
    	while (top >= 0) {
    		if (i != a[top]) { m[++top2] = a[top]; }
    		else
    			Size--;
    			top--;
    	}
    	while (top2 >= 0) {
    		a[++top] = m[top2--];
    	}
    
    }
     void delprime(int a[])
    {
    	int i,flag = 0;
    
    	while (top >= 0)
    	{
    
    		for (i = 2; i <= a[top] / 2; i++)
    		{
    			if (a[top] % i == 0)
    			{
    				flag = 1;
    				break;
    			}
    
    		}
    		if (flag == 0)
    		{
    			del_pop(a, a[top]);
    		}
    		top--;
    	}
    }
    
    
    
    

    هذا برنامج يقوم بحذف الاعداد الأولية من مكدس لكن عند بعد استدعاء دالة حذف الأعداد الأولية تتغير كل القيم للصفر في حلقة التكرار التي تستدعي الدالة pop

    #include<iostream>
    using namespace std;
    
    int Size = 10;
    int a[10], top = -1;
    int pop();
    void del_pop(int[], int i); 
    void push(int[], int);
     void delprime(int a[]);
    int main() {
    	 int i, k;
    	for (i = 0; i < Size; i++) { cin >> k; push(a, k); }
    
       delprime(a);
                                  
    	
    }
    void push(int a[], int k) {
    	if (top == Size - 1)cout << "Stack overflow";
    	else
    		a[++top] = k;
    }
    int pop() 
    • أعجبني 1
  9. بتاريخ On ١١‏/١‏/٢٠٢٢ at 15:52 قال سامح أشرف:

    إن كان لديك مقطع فيديو (وليكن باسم video.mp4) فيمكنك أن تستخرج منه الصور بإستخدام مكتبة cv2 في بايثون، بالشكل التالي:

    
    import cv2
    
    vidcap = cv2.VideoCapture('video.mp4')
    success,image = vidcap.read()
    count = 0
    
    while success:
      cv2.imwrite("frame%d.jpg" % count, image)
      success,image = vidcap.read()
      print('Read a new frame: ', success)
      count += 1

    يقوم الكود السابق بإستخراج كل الفريمات Frames من مقطع الفيديو ويقوم بحفظ كل صور بصيفة jpg، قد تكون هذه الطريقة بطيئة وتستهلك الكثير من مساحة التخزين بسبب وجود الكثير من الصور، لذلك يمكنك إستخدام الكود التالي الذي يقوم بإستخراج صورة واحدة من كل 30 صورة (ويمكن التحكم في هذا الرقم):

    
    import cv2
    
    cap = cv2.VideoCapture('video.mp4')
    count = 0
    
    while cap.isOpened():
        ret, frame = cap.read()
    
        if ret:
            cv2.imwrite('frame{:d}.jpg'.format(count), frame)
            count += 30 # i.e. at 30 fps, (في الغالب تحتوي الثانية الواحدة على 30 لقطة frame)
            cap.set(cv2.CAP_PROP_POS_FRAMES, count)
        else:
            cap.release()
            break

    أما بالنسبة لنشر الصور فعليك البحث عن API خاص بالمنصة التي تريد النشر فيها، فعلى سبيل المثال إن أردت النشر على فيسبوك فعليك البحث عن Facebook API ، حيث تختلف المتطلبات من منصة إلى أخرى ولكن ستكون الفكرة واحدة بينهم، وستجد في الغالب أن المنصة توفر مكتبة لكي تستخدمها وتسمح لك بالنشر (أو القيام بأمور أخرى مختلفة) بسهولة.

    سأجرب الأمر

    شكرا، بارك الله فيك 

  10. فيه بوتات في الفيس والتويتر تنشر في صور مثلا لكل فريم من أنمي أو فلم وما إلى ذلك، هل فيه حد يعرف مرجع نقدر نتعلم منه كيفية القيام بذلك 

    أمثلة لتلك الصفحات

    https://www.facebook.com/EveryPMMadokaMagicaFrames/

    https://www.facebook.com/HibikeEuphoniumFrames/

     

    • أعجبني 1
  11. هذا برنامج استخدمت فيه التحميل الزائد للمعاملات لكن واجهتني مشكلة ألا وهي أني عندما أجعل نوع القيمة المعادة Counter يظهر خطأ 

      class "Counter" has no suitable copy constructor      
    رغم أنه يفترض -في هذه الحالة-أن تستدعى دالة البناء العادية لا الناسخة فلماذا تستدعى الناسخة ويخبرك أنها غير ملائمة؟

    بالإمكان حل المشكلة بحذف الدالة البانية الناسخة the copy constructor التي أنشأتها وترك مهمة النسخ لو احتجتها للدالة التي تنشئها البيئة default copy constructor أو أني نغير القيمة المعادة لـint وأجعلها تعيد الcount مباشرة لكنه ليس الحل المثالي للمشكلة

    #include <iostream>
    using namespace std;
    class Counter
    {
    private:
    	int count; //count
    public:
    	Counter() : count(0) { } //constructor
    	Counter(int a) : count(a) {  } //constructor
    	Counter(Counter& c ) {
    		this->count = c.count;
    		cout << endl<<"Copy constructor has been invoked"<<endl;
    	} //constructor*/
    
    	int get_count() //return count
    	{
    		return count;
    	}
    	Counter operator ++ () //increment (prefix)
    	{
    
    		return Counter(++count);
    	}
    	int operator ! () //increment (prefix)
    	{
    		if (count == 0)
    			return(1);
    		else
    			return(0);
    	}
    	Counter operator -- () //increment (prefix)
    	{
    
    		return Counter(--count);
    	}
    	Counter operator ++ (int) //increment (prefix)
    	{
    
    		return Counter(count++);
    	}
    	Counter operator -- (int) //increment (prefix)
    	{
    
    		return(count--);
    	}
    	Counter operator + (Counter x) {
    		int c;
    		c = count + x.count;
    		return  Counter(c);
    	}
    };
    
    int main()
    {
    	Counter i;
    	Counter c1, c2, c3; //define and initialize
    	cout << "\nc1=" << c1.get_count(); //display
    	cout << "\nc2=" << c2.get_count();
    	++c1; //increment c1
    	++c2; //increment c2
    	++c2; //increment c2
    	cout << "\nc1=" << c1.get_count(); //display again
    	cout << "\nc2=" << c2.get_count();
    	i = ++c2; // error
    	cout << "\ni= " << i.get_count();
    	--c1;
    	Counter c4 = c2;
    	cout << "\nc4=" << c4.get_count() << endl; //display again
    	cout << "\nc2=" << c2.get_count() << endl;
    	i = c2++;
    	c2++;
    	cout << "i= " << i.get_count();
    	cout << "\nc2=" << c2.get_count() << endl;
    	//c4 = !c2;
    	cout << "\nc4=" << c4.get_count() << endl;
    	c3 = c1 + c2;
    	cout << "\nc1=" << c1.get_count();
    	cout << "\nc2=" << c2.get_count();
    	cout << "\nc3=" << c3.get_count();
    	return 0;
    }

     

  12. بتاريخ 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\'

     

  13. هذا برنامج يحشر سلسلة 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;
            }
        }
    }

     

  14. بتاريخ 5 ساعات قال Wael Aljamal:

    مرحبا،

    يمكنك تحقيق ذلك (طباعة سلسلة نصية بطريقة معكوسة باستخدام المؤشرات) :

    
    #include<iostream>
    #include<string.h> // تضمين مكتبة للتعامل مع السلسل النصية 
      
    using namespace std;
    // الطباعة المعكوسة
    void printReversed(char *c, int n) // استقبال عنوان بداية السلسلة و طولها
    {
        char *cc = c + n; // تعريف مؤشر مساعد يدل على نهاية السلسلة
        while (cc >= c)   // طالما لم نصل لبداية السلسلة
        {
            cout << *cc << endl; // نطبع المحرف مكان المؤشر
          	c--; // تحريك المؤشر المساعد لبداية اللسلسة
        }
    }
    int main()
    {
        char s[30];  // تعريف اللسلسة
        cin>> s;  // إدخالها 
        printReversed(s, strlen(s));  // استدعاء التابع ممرين له السلسلة و طولها 
      	//string.h من المكتبة المضمنة strlen تم استدعاء التابع 
        return 0;
    }

    بالتوفيق

    شكرا بس بالمناسبة يبدو أنك أخطأت خطأ مطبعي بسيط فهذه الحلقة حلقة لا نهائية والصحيح نغير --c ل--cc

    • أعجبني 1
  15. #include<iostream>  
    using namespace std;
    void printReversed(string str)
    {
        int size;
        for (int i = 0; str[i] != '\0'; i++)size = i;
        cout << size;
        for ( int i = size; i >= 0; i--)
        {
            string a;
            cout << str[i]; 
        }
        cout << endl;
    }
    int main()
    {
        string a; cin>>a;
        
        printReversed(a);
        return 0;
    }

    هذا برنامج يعكس الكلمة المدخلة مثلا mohammed تطبع demmahom, كيف أُنشئ برنامج يقوم بنفس الوظيفة باستخدام المؤشرات

  16. #include <iostream>
    #include <string.h>
    using namespace std;
    struct stud {
        char n[30];
        int sn;
        float dr[3], sum, avr;
    };
    
    void read(stud x[], int n)
    {
        int i, j;
        for (i = 0; i < n; i++)
        {
            cout << "\n enter student " << i << " name:";
            cin.getline(x[i].n, 30);
            cout << "\n enter student " << i << " sn:";
            cin >> x[i].sn;
            cout << "\n enter student " << i << " 3 dr:";
            x[i].sum = 0;
            for (j = 0; j < 3; j++)
            {
                cin >> x[i].dr[j];
                x[i].sum += x[i].dr[j];
            }
            x[i].avr = x[i].sum / 3;
            cin.ignore();
        }
    }
    void print(stud x[], int n)
    {
        int i, j;
        cout <<"\nname" << "\t" << "s n\td1\td2\td3\tsum\tavg\n";
        cout << "==================================================";
        for (i = 0; i < n; i++)
        {
            cout << "\n" << x[i].n << "\t" << x[i].sn << "    ";
            for (j = 0; j < 3; j++)
                cout << x[i].dr[j] <<"    ";
            cout << " " << x[i].sum << " " << x[i].avr;
        }
    }
    void sort(stud x[], int n)
    {
        int i, j;
        stud t;
        for (i = 0; i < n; i++)
        {
            for (j = i + 1; j < n; j++)
            {
                if (strcmp(x[i].n, x[j].n) > 0)
                {
                    t = x[i];
                    x[i] = x[j];
                    x[j] = t;
                }
            }
        }
    }
    
    void search(stud x[], int n)
    {
        char s[30];
    
        cout << "enter the student you are searching for: ";
        cin >> s;
        for (int i = 0; i < n; i++)
        {      
            if (x[i].n == s)
            {
                cout <<x[i].n << "\t" << x[i].sn << "    ";
                for (int j = 0; j < 3; j++)
                    cout << x[i].dr[j] << "    ";
                cout << " " << x[i].sum << " " << x[i].avr;
            }
            else
            {
                cout << "wrong search";
            }
        } 
    }
    
    int main()
    {
        stud list[120];
        int n = 3;
        read(list, n);
        print(list, n);
        sort(list, n);
        print(list, n);
        search(list, n);
    
        return 0;
    
    }

    هذا برنامج  يصمم تركيبة (اسم طالب ورقمه ودرجاته في ثلاث مواد ) لثلاث طلاب ويحسب المتوسط والمجموع لكل طالب ويرتب الطلاب في النهاية يبحث عن طالب بس تلك الأخيرة فيها مشكلة فهو لا يبحث عن طالب بل يعتبر الشرط خاطئاً 

  17. بتاريخ 10 ساعات قال Wael Aljamal:

    مرحبا محمد،

    يمكننا فهم الشكل العالم لشجرة النجوم بتقسيمه لـ 3 أجزاء.

    الجزء الأول على اليسار : يمثل عدد الفراغات قبل النجوم.

    الجزء الثاني الأوسط : يمثل رسم النجوم و عددهم حسب رقم السطر الذي نحن فيه.

    الجزء الثالث الأيمن: مسؤول عن رسم سطر جديد (نهاية السطر)

    tree.thumb.jpg.49d18959c09bc048be64c346959bca4c.jpg

    شرح البرنامج:

     

    
    #include <iostream>
    using namespace std;
    
    
    // إجرائية رسم النجوم
    void pattern(int n)
    {
    	int i, k, flag = 1;
    
    	// سنقوم بالاعتماد على حلقة واحدة ستعبر عن عدد الأسطر و الأعمدة
      	// عدد المحارف المطلوبة للرسم إن كانت فراغات أو نجوم
    	for (i = 1, k = 0; i <= 2 * n - 1; i++) {
    		// الحالة الأولى على اليسار
          	// نحن في موقع بعيد عن الشجرة ويجب رسم فراغ
    		if (i < n - k)
    			cout << " ";
    
    		// الحالة الثانية في الوسط علينا هنا رسم نجمة
          	// الشجرة متناوبة في مكان النجوم لذلك استعملنا متغير بولياني 
    		else {
              	// ستتناوب قيمة العلم في كل مرة ندخل إلى هذا الجزء من الشيفرة البرمجية
    			if (flag)
    				cout << "*";
    			else
    				cout << " ";
    
    			flag = 1 - flag;
    		}
    
    		// الحالة الثالثة
          	// نحن خارج الشجرةننهي السطر الحالي و نبدأ سطر جديد
    		if (i == n + k) {
    			k++;
    			cout << endl;
    
    			// N الشرط التالي يحدد نهاية الرسم في حال وصولنا للسطر رقم 
    			// 2 * n- 1 والعمود الأخير فيه أي الخلية صاحبة الرقم
    			if (i == 2 * n - 1)
    				break;
    
    			// في حال كنا لم نصل للسطر الأخير فنكون في بداية سطر جديد ونعيد تهيأة المتغيرات
    			i = 0; 
    			flag = 1; // لنرسم نجمة في بداية الشجرة للسطر الجديد
    		}
    	}
    }
    
    // تنفيذ البرنامج
    int main()
    {
    	int n = 6;
    
    	// استدعاء الإجرائية الخاصة بالرسم
    	pattern(n);
    	return 0;
    }

    بالتوفيق

    شكرًا

    • أعجبني 1
×
×
  • أضف...