• 0

تصحيح الأخطاء في لغة ++C

 

int arrayConvert(int inputArray[], const char outputArray[], int size)
{
    bool validity = true;
    for (int i = 0; i< size; i++){
        if ((inputArray >= 0) && (inputArray < 128))
            outputArray[i] = (char)inputArray[i];
        else{
            validity = false;
            for (int i = 0; i< size; i++)
                outputArray[i] = '.';
            break;
        }
    }
    if (validity)
        return "Valid";
        return outputArray[];
    else
        return "Invalid";
        return outputArray[];
}

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

في لغة جافا، لا يمكن إعادة أكثر من قيمة من دالة (مثلا لديك تعيد سلسلة نصية و مصفوفة) يجب أن تعيد متغير واحد.

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

لكي تعيد مصفوفة أرقام صحيحة عدل تعريف الدالة للتالي:

int[] arrayConvert(.....)

بإضافة الأقواس المربعة بعد int.

ثم إعادة القيمة تكون:

if (validity)
        return outputArray;

كما أنه لتنفيذ تعليمتين بعد تحقيق شرط يتوجب كتابة أقواس مجعدة لتعليمة if :

if (true) {
	do();
	do2();
...
}

لحل مشكلة valid أقترح حاليا طباعتها لل console: System.out.print

لتصبح الشيفرة:

int[] arrayConvert(int inputArray[], const char outputArray[], int size)
{
    bool validity = true;
    for (int i = 0; i< size; i++){
        if ((inputArray >= 0) && (inputArray < 128))
            outputArray[i] = (char)inputArray[i];
        else{
            validity = false;
            for (int i = 0; i< size; i++)
                outputArray[i] = '.';
            break;
        }
    }
    if (validity)
        System.out.println("Valid");
    else
        System.out.println("Invalid");
    return outputArray;
}

اقتصرت على تعليمة return واحدة و تعليمتي طباعة كأبسط حل للمشكلة.

لكي تعيد قيمتين يجب أن يكون نوع الدالة مثلا:

Map<String, Number>

أو أن تتعلم Tuple وهذا ليس ضروري حاليا.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

صديقي هذه لغه c++ وشكرا على مساعده ولكنني لم افهم كثيرا 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يحتوي الكود علي مجموعة أخطاء سأوضح لك وسأضع الكود الصحيح كامل بعد توضيح الأخطاء

  • نوع الداتا اللي بترجعها الداله هو string وليس int والثاني هو لكي تسطيع الكتابه في مصفوفة ال outputArray لا يجب أن تكون const ماتحتاج ل const
int arrayConvert(int inputArray[], const char outputArray[], int size)
  • تعمل check علي عنصر في المصفوفه inputArray[i] ما علي المصفوفه ككل 
if ((inputArray >= 0) && (inputArray < 128))
  • ماتحتاج إلي for loop إذا القيمه ما صحيح ضع علامة ال . داخل ال outputArray مباشرة 
for (int i = 0; i< size; i++)
    outputArray[i] = '.';
    break;
  • هنا جملة ال return "valid" او return "invalid بتنهي الدالة ما هيوصل في تنفيذ الكود إلي جملة ال return outputArray التي تليها 
  • الأمر الثاني ماتحتاج تعمل return outputArray لأنها array وبتكون في الدالة ب passed by refrence وبالتالي عند أستدعاء الداله وإعطاءها outputArray ستقوم c++ بوضع الناتج داخل المصفوفه التي قمت بإعطاءه للداله 
    if (validity)
        return "Valid";
        return outputArray[];
    else
        return "Invalid";
        return outputArray[];
  • الكود بعد تعديل مجموعة الأخطاء
#include <iostream>

using namespace std;

#define SIZE 5

string arrayConvert(int inputArray[], char outputArray[], int size)
{
    bool validity = true;

    for (int i = 0; i< size; i++){
        if ((inputArray[i] >= 0) && (inputArray[i] < 128))
            outputArray[i] = (char)inputArray[i];
        else{
            validity = false;
            outputArray[i] = '.';
        }
    }
    if (validity)
        return "Valid";
    else
        return "Invalid";
}

int main()
{
    int inputArray[SIZE] = {109,110,200,118,230};
    char outputArray[SIZE];

    string result = arrayConvert(inputArray, outputArray, SIZE);
    cout<<"outputArray: ";
    for(int i = 0; i < SIZE; i++)
        cout<<outputArray[i]<<" ";
        
    cout<<"\nResult is " << result <<"\n";
    return 0;
}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن