الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تصحيح كود فى المؤشرات

بدأه الآميـرهـ في 20 أبريل 2012 · 1 رد · 388 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

شكرا لكم و أتمنى مساعدتي في تصحيح الكود:

: Write a program to find the number of bytes in an array of size 20. Use the size of operator, pointer and function

بصراحة لم يتضح لي السؤال جيدا

حللته بهذه الصيغة لكن لا أعلم هل الحل ينقصه شيء أو لا ؟

#include<iostream>
#include<conio.h>
using std::cout;
using std::endl;
size_t getsize(double *);
int main()
{
double array[20];
cout<<"the number of bytes in the array is "<<sizeof(array);
cout<<"\nthe number of bytes returned by getsize is "<<getsize(array)<<endl;
getch();
return 0;
}
size_t getsize(double *ptr)
{
	return sizeof(ptr);
}

من لديه الحل فليساعدني و له الأجر ..

و شكرا لكم

#2
الآميـرهـ كتب:

السلام عليكم و رحمة الله و بركاته

شكرا لكم و أتمنى مساعدتي في تصحيح الكود:

: Write a program to find the number of bytes in an array of size 20. Use the size of operator, pointer and function

بصراحة لم يتضح لي السؤال جيدا

حللته بهذه الصيغة لكن لا أعلم هل الحل ينقصه شيء أو لا ؟

من لديه الحل فليساعدني و له الأجر ..

و شكرا لكم

من اﻻخر: بالمؤشرات والمعامل sizeof والدول لتقديم حل بشكل اﻵلى أى نمرر للدالة عنوان المصوفة وهى ترجع لنا عدد البات فى المصوفة ﻻن عدد عناصر المصفوفة معلوم لدينا غير ممكن.

التصور المستحيل بالشكل التالى:

int GetArrayByteCount(void *array);

لما نحن اخترنا اعلان الدالة بالشكل ﻻن نوع البيانات غير معلوم

مهما تحاول لن تستطيع الحصول على نوع البيانات التى يشير اليها المؤشر الوسيط للدالة مهما استخدمت من static_cast أو reinterpret_cast ﻻن تحديد نوع البيانات بشكل آلى هو قلب المشكلة.

فى النهاية ليس اما سوى الحل فى التصور التالى فى ضوء معطيات السؤال:

int GetArrayByteCount(int ArrayType, int ArrayLength)
{
    int nbyte = 0;
    switch(ArrayType)
    {
            case 1 : nbyte = 1; break; // char
            case 2 : nbyte = 4; break; // int
            ....
            .....
                    default: 0;               
    }

    return (nbyte * arraysize);                    
}

وانا ﻻ اعتبر هذا حل يخرج من المبرمج.

لكن هناك سؤال آخر هل القوالب فى سي++ يمكنها حل سؤالك هذا. هذا ما سنناقشة فى وقت ﻻحق ان شاء الله.

هذا والله ولى التوفيق

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…