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

السؤال

نشر

 

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[];
}

 

Recommended Posts

  • 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 وهذا ليس ضروري حاليا.

  • 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;
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...